Tutorial PHP / MS Access – Etude de cas (4/4)
Cet article fait suite à l’article sur l’installation d’une connexion odbc avec Access utilisable par PHP. En nous basant sur un exemple nous allons étudier les différents aspects de l’utilisation d’Access comme base de données pour PHP.
Comme exemple nous allons nous amuser à traduire le script « Ptitaffiche » de Vince (http://vpontier.free.fr) pour qu’il marche avec Access.
Ce script sert à afficher de manière aléatoire des bannières dont le lien et l’url sont référencées dans la base de donnée.
Vous pouvez télécharger le script original sur son site. Le script modifié est téléchargeable en bas de page.
- Création de la table:
Le mieux est de le faire en mode création, néanmoins voici le script SQL:
Structure pour la table ‘bandeaux’ :
CREATE TABLE bandeaux (
id int(20) ,
url char(20) NOT NULL,
fichier char(20) NOT NULL,
lien char(30) NOT NULL,
PRIMARY KEY (id)
);
Changez ensuite manuellement le champs id en NumeroAuto
Données pour la table ‘bandeaux’ dans le cas de mes images exemples, livrées avec ce script :
(Les données sont à insérer les unes après les autres)
INSERT INTO bandeaux VALUES( '0', 'pub', 'pub0.jpg', 'www.free.fr');
INSERT INTO bandeaux VALUES( '1', 'pub', 'pub1.jpg', 'www.fifi.ed');
INSERT INTO bandeaux VALUES( '2', 'pub', 'pub2.jpg', 'www.toto.fr');
INSERT INTO bandeaux VALUES( '3', 'pub', 'pub3.jpg', 'www.tutu.net');
INSERT INTO bandeaux VALUES( '4', 'pub', 'pub4.jpg', 'www.momo.org');
- Mise en place dans le pilote ODBC (cf installation)
Nommez la base « bandeaux »
- Script:
//--------------------------------------------------
//------- configuration connection à Access -------
//--------------------------------------------------
$base="ptitaffiche";
$table="bandeaux";
$url="pub";
//--------------------------------------------------
//--------- connection à Access -------------------
//--------------------------------------------------
$connection = odbc_connect($base,"","") or die("Couldn't connect to datasource.");
//--------------------------------------------------
//--------- Requête pour connaître le --------------
//--------- nombre de lignes ds la table -----------
//--------------------------------------------------
// La fonction odbc_num_rows() ne marche pas avec Access. On contourne la difficulté en incrémentant une variable à chaque ligne de résultat.
$query ="select $table.id from $table";
$res=odbc_exec($connection,$query) or die("Ne peut pas exécuter la requête.");
$ligne=0;
while (odbc_fetch_into($res,&$tableau)) {foreach ($tableau as $element) {$ligne++;}}
//--------------------------------------------------
//-------- Calcul d'un nombre aléatoire ------------
//-------- en fonction du nombre de ligne --------
//--------------------------------------------------
srand((double)microtime()*1000000);
$number=(rand()%$ligne);
//--------------------------------------------------
//-------- Recupération de la ligne ----------------
//-------- tirée au sort ---------------------------
//--------------------------------------------------
$query2="select $table.url, $table.fichier, $table.lien from $table where $table.id=$number";
$banner=odbc_exec($connection,$query2) or die("Ne peut pas exécuter la requête.");
//--------------------------------------------------
//------- Ranger le resultat dans un tableau -------
//------- pour utiliser les informations -----------
//--------------------------------------------------
while (odbc_fetch_into($banner, &$arrech)) {
$url=$arrech[0];
$fichier=$arrech[1];
$lien=$arrech[2];
}
//--------------------------------------------------
//------- Afficher la banniere ---------------------
//--------------------------------------------------
print("\n
\n\n");
?>
Voilà . Pour insérer la bannière dans vos pages vous n’avez qu’à inclure la ligne suivante:
require("ptitafiche.php"); ?>
- Spécificités SQL:
Les caractères « jokers » comme * ne fonctionnent pas forcément.
Imaginons que je veuille récupérer tous les noms commenà§ant par la lettre « a » dans une table contenant des adresses de contacts.
La requête ressemblerait à celle-ci:
$sql="SELECT adresses.nom FROM adresses WHERE (((adresses.nom) like('a*')));";
Cette requête ne fonctionne pas avec le pilote odbc pour Access 97 mais marche très bien avec Access 2000
Si vous avez besoin d’un moteur de recherche ou d’un script utilisant ces méthodes de recherches, utilisez Access 2000 ou bien essayez une solution de rechange. la meilleure est l’utilisation des tableaux en PHP.
Explication: Vous placez tous les résultats susceptibles de correspondre dans un tableau PHP (en gros tous les champs utiles de toute une table). Ensuite vous utilisez les expressions régulières de PHP pour trouver les lignes du tableau qui sont bonnes. Vous placez celles-ci dans un second tableau qui sera votre tableau résultat.
- Télécharger le script complet:
Le script PtitAffich de Vincent Pontier modifié par mes soins pour fonctionner avec Access est ici.
Catégories: PHP, tous les articles | Tags: access,odbc,PHP
Vous pouvez suivre les prochains commentaires à cet article grâce au flux RSS 2.0

Répondre
En publiant un commentaire vous attribuez à Spirion - Web-marketing et tech le droit de publier vos propos ainsi que votre nom et l'adresse de votre site Internet. Tout contenu inaproprié pourra être supprimé par l'administrateur