PHP & Access : l'autre coté
Publié par hello il y a 4 mois
Introduction
Quand on veut utiliser une base de donnée, quelque soit le type et le format de la base. On rencontre les mêmes fonctions de base et surtout de possibilité.
Les fonctions principales sont l'ajout de données, les mettre à jour et bien sur les supprimer. C'est le thème de cet article : l'utilisation d'une base de donnée Microsoft Access avec le PHP par l'intermédiaire de l'ODBC.
Merci à ODBCPHP pour cet articleLE COMMENCEMENT
Tout d'abord il vous faut une base de donnée ACCESS que l'on va déclaré sous l'environnement Windows par l'ODBC.
Pour déclarer la base de donnée, reportez-vous à l'article « PHP et Access » dans la rubrique Apprendre, disponible sur ce site.
On gardera le même nom d'ODBC : fichier_mdb et on aura une table T_www avec une structure comme modèle ci-dessous et quelques lignes exemples que vous pouvez créer avec Microsoft Access.


Avant de commencer, je tenais à vous tenir informer que les exemples qui vous sont présentés ont écrit et testé en PHP 4.3.x et 5.xx
Pour que cela soit plus simple et plus rapide, on va décomposer toutes les fonctions en fichiers, ce qui vous permettra de pouvoir utiliser le meme fichier de configuration pour tous nos exemples (config.inc.php)
FICHIER CONFIGURATION
Le fichier de configuration vous permet d'obtenir tous les déclarations pour utiliser les fonctions de connections et d'exécution de requête.- <?php
- $bd="fichier_mdb"; // nom de la base de donnée déclarée par ODBC
- $user="root"; // login
- $password=""; // password
- $nom_table="t_www"; // nom de la table
- ?>
Attention, pour rappel, le champ USER et PASSWORD, qui correspondent aux identifiants de connection, concerne la majorité des ordinateurs, mais cela peut changer si sur votre serveur, des codes de connections sont différents.
AJOUT / INSERT
Formulaire
Pour effectuer un ajout ou une insertion d'enregistrements dans une table, il est nécessaire de passer par un formulaire comme ceci
- <?php
- echo "AJOUTER une ligne dans une table<br />";
- echo "<form name=form action=ajouter_add.php method=post>";
- echo "<table width=50% border=0>";
- echo "<tr><td>Nom du site :</td>";
- echo "<td><input type=text name=site></td></tr>";
- echo "<tr><td>Description :</td>";
- echo "<td><input type=text name=description></td></tr>";
- echo "<tr><td>url :</td>";
- echo "<td><input type=text name=url></td></tr>";
- echo "<tr><td>email :</td>";
- echo "<td><input type=text name=email></td></tr>";
- echo "<tr><td> </td>";
- echo "<td><input type=submit name=action value=Ajout></td></tr>";
- echo "</table>";
- echo "</form>";
- ?>
Le formulaire qui vous est présenté, est un formulaire classique au format HTML dont je n'ai pas besoin de vous expliquez son fonctionnement que vous maîtrisez.
Exécution
Lorsque qu'on a choisi d'ajouter, les données d'enregistrement sont envoyer à une requête permettant ainsi d'être ajoutée à la table. Les données seront préparés pour être en conformité a la table pour ne pas obtenir d'erreur.
- <?php
- $site=$_POST['site']; // recupere les parametres
- $description=$_POST['description'];
- $url=$_POST['url'];
- $email=$_POST['email'];
- require ("config.inc.php"); // recupere parametres serveurs
- $cnx = odbc_connect( $bd , $user, $password ); // ouvre DB access
- $query = "insert into $nom_table (site,description,url,email)"; // champs
- $query .= "VALUES ('$site','$description','$url','$email') "; // valeur
- $result = odbc_do ($cnx,$query); // insert et execute la requete
- if (!$result)
- echo "Ajout impossible";
- else
- echo "Ajout acceptée";
- odbc_close( $cnx); // ferme la connection
- ?>
La ligne $query correspond à la construction de la requête, et comme une requête SQL, elle possède le terme INSERT INTO avec la structure de la table et des valeurs qu'on aura récupéré à partir du formulaire.
La fonction ODBC_DO exécute la requête $query avec la connexion cnx.
UPDATE
Formulaire
Voyons maintenant les requêtes UPDATE (= mise à jour), qui sont moins répandues que les SELECT ou les INSERT, et qui permettent de mettre à jour les champs d'une table d'une base de données suivant l'enregistrement sélectionné.
Nous allons toujours utilisé la même table pour rester dans notre exemple.
Par ailleurs, on va prendre directement l'enregistrement 2 pour le mettre à jour. L'enregistrement numero 2, correspond à la ligne PHP TEAM (voir l'image ci-dessus).
- <?php
- $num=2; // numero de ligne enregistrement
- require("config.inc.php");
- $cnx = odbc_pconnect( $bd , $user, $password ); // connection ODBC
- if (!$cnx) Error_handler( $text_error_connection , $cnx );
- $valeur = odbc_exec ($cnx,"select * from $nom_table where num=$num"); //requete de selection
- if (!$valeur) Error_handler("Erreur requete", $cnx );
- echo "Mise a jour d'enregitrement numero $num<br />";
- echo "<form name=form action=update_up.php method=post >";
- echo "<input type=hidden name=num value=$num>";
- echo "<table width=50% border=0>";
- echo "<tr><td>Site :</td>";
- echo "<tr><td>description :</td>";
- echo "<td><input type=text name=description value='".odbc_result($valeur, "description")."'></td></tr>";
- echo "<tr><td>url :</td>";
- echo "<tr><td>email :</td>";
- echo "<tr><td> </td>";
- echo "<td><input type=submit name=action value=Update></td></tr>";
- echo "</table>";
- echo "</form>";
- odbc_free_result($valeur); // libere le résultat
- odbc_close( $cnx); // ferme la connection
- ?>
La fonction ODBC_RESULT retourne le contenu d'un champs : Le 1er choix correspond la valeur $valeur correspond au résultat de la requête qu'on aura sélectionné. Le 2e choix, peut contenir un entier, par exemple : la valeur numérique de Site correspond à 2, celui de Description à 3...
Exécution
- <?php
- $num=$_POST['num']; // recupere les parametres
- $site=$_POST['site'];
- $description=$_POST['description'];
- $url=$_POST['url'];
- $email=$_POST['email'];
- require("config.inc.php");
- $cnx = odbc_pconnect( $bd , $user, $password ); // ouvre DB access
- if (!$cnx) Error_handler( $text_error_connection , $cnx );
- $query = "UPDATE $nom_table set site='$site', description='$description', url='$url', email='$email' WHERE num=$num";
- $result = odbc_do ($cnx,$query); // applique l'update
- odbc_close( $cnx); // ferme la connection
- echo "mise a jour oki";
- ?>
La ligne $query correspond à la construction de la requête, et comme une requête SQL, elle possède le terme INSERT INTO avec la structure de la table et des valeurs qu'on aura récupéré à partir du formulaire.
La fonction ODBC_DO exécute la requête $query avec la connexion cnx.
SUPPRESSION
Formulaire
Voyons maintenant la requête de SUPPRESSION, qui permet d'effacer des lignes d'enregistrement dans la table d'une base de données.
Nous allons toujours utilisé la même table et la même base de donnée.
Nous allons effectuer l'opération en 2 temps, la 1ere consiste à partir d'un formulaire de sélectionner la ligne de notre choix pour ensuite dans un 2e temps exécuter la requête.
- <?php
- include ("config.inc.php");
- $cnx = odbc_connect( $bd , $user, $password ); // connection ODBC
- $query = "select * FROM $nom_table "; // requete de selection d'une table
- $result = odbc_do($cnx, $query); // execute la requete
- echo "<h1>Supprimer un enregistrement</h1>";
- while(odbc_fetch_row($result)) // lit toute les lignes
- {
- echo "<a href='delete_del.php?num=".odbc_result($result, "num")."'>".odbc_result($result, "site")."</a><br />";
- }
- odbc_close( $cnx); // ferme la connection
- ?>
Le formulaire correspond à l'affichage d'une liste simple ce qui permet de sélectionner l'enregistrement de son choix pour le supprimer.
Exécution
- <?php
- $num=$_GET['num'];
- require ("config.inc.php"); // recupere parametres serveurs
- $cnx = odbc_pconnect( $bd , $user, $password ); // ouvre DB access
- if (! $cnx) Error_handler($text_error_connection , $cnx );
- $query = "delete * from $nom_table where num=$num";
- $result = odbc_do ($cnx,$query); // execute la requete de suppression
- odbc_close( $cnx); // ferme la connection
- echo "Ligne supprimée";
- ?>
La ligne $query correspond à la construction de la requete, et comme une requete SQL, elle possède le terme INSERT INTO avec la structure de la table et des valeurs qu'on aura récupéré à partir du formulaire.
La fonction ODBC_DO exécute la requête $query avec la connexion cnx.
CONCLUSION
Nous voici arrivez à la fin de l'article, en espérant avoir été assez clair. Cependant, il existe de nombreuses fonctions avec la possibilité de faire beaucoup de chose comme l'utilisation d'une autre base de donnée SQL.