PHP & Access : l'autre coté  

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 article

LE 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.

Image
Image

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.
Fichier config.inc.php
  1. <?php
  2. $bd="fichier_mdb"; // nom de la base de donnée déclarée par ODBC
  3. $user="root"; // login
  4. $password=""; // password
  5. $nom_table="t_www";   // nom de la table
  6. ?>

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

Fichier ajouter.php
  1. <?php
  2. echo "AJOUTER une ligne dans une table<br />";
  3. echo "<form name=form action=ajouter_add.php method=post>";
  4. echo "<table width=50% border=0>";
  5. echo "<tr><td>Nom du site :</td>";
  6. echo "<td><input type=text name=site></td></tr>";
  7. echo "<tr><td>Description :</td>";
  8. echo "<td><input type=text name=description></td></tr>";
  9. echo "<tr><td>url :</td>";
  10. echo "<td><input type=text name=url></td></tr>";
  11. echo "<tr><td>email :</td>";
  12. echo "<td><input type=text name=email></td></tr>";
  13. echo "<tr><td> </td>";
  14. echo "<td><input type=submit name=action value=Ajout></td></tr>";
  15. echo "</table>";
  16. echo "</form>";
  17. ?>

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.

Fichier ajouter_add.php
  1. <?php
  2. $site=$_POST['site'];                        // recupere les parametres
  3. $description=$_POST['description'];
  4. $url=$_POST['url'];
  5. $email=$_POST['email'];
  6.  
  7. require ("config.inc.php");                // recupere parametres serveurs
  8.  
  9. $cnx = odbc_connect( $bd , $user, $password );             // ouvre DB access
  10. if (!$cnx) echo "Impossible de se connecter";
  11.  
  12. $query  = "insert into $nom_table (site,description,url,email)";        // champs
  13. $query .= "VALUES ('$site','$description','$url','$email') ";        // valeur
  14. $result = odbc_do ($cnx,$query);                                // insert et execute la requete
  15.  
  16. if (!$result)
  17. echo "Ajout impossible";
  18. else
  19. echo "Ajout acceptée";
  20.  
  21. odbc_close( $cnx);                        // ferme la connection
  22. ?>

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).

Fichier update.php
  1. <?php
  2. $num=2;                          // numero de ligne enregistrement
  3. require("config.inc.php");
  4.  
  5. $cnx = odbc_pconnect( $bd , $user, $password );        // connection ODBC
  6. if (!$cnx) Error_handler( $text_error_connection , $cnx );
  7.  
  8. $valeur = odbc_exec ($cnx,"select * from $nom_table where num=$num"); //requete de selection
  9. if (!$valeur)  Error_handler("Erreur requete", $cnx );
  10.  
  11. echo "Mise a jour d'enregitrement numero $num<br />";
  12. echo "<form name=form action=update_up.php method=post >";
  13. echo "<input type=hidden name=num value=$num>";
  14. echo "<table width=50% border=0>";
  15. echo "<tr><td>Site :</td>";
  16. echo "<td><input type=text name=site value='".odbc_result($valeur, "site" )."'></td></tr>";
  17. echo "<tr><td>description :</td>";
  18. echo "<td><input type=text name=description value='".odbc_result($valeur, "description")."'></td></tr>";
  19. echo "<tr><td>url :</td>";
  20. echo "<td><input type=text name=url value='".odbc_result($valeur, "url" )."'></td></tr>";
  21. echo "<tr><td>email :</td>";
  22. echo "<td><input type=text name=email value='".odbc_result($valeur, "email" )."'></td></tr>";
  23. echo "<tr><td> </td>";
  24. echo "<td><input type=submit name=action value=Update></td></tr>";
  25. echo "</table>";
  26. echo "</form>";
  27.  
  28. odbc_free_result($valeur);          // libere le résultat
  29. odbc_close( $cnx);                                // ferme la connection
  30. ?>

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

Fichier update.php
  1. <?php
  2. $num=$_POST['num'];                // recupere les parametres
  3. $site=$_POST['site'];
  4. $description=$_POST['description'];
  5. $url=$_POST['url'];
  6. $email=$_POST['email'];
  7.  
  8. require("config.inc.php");
  9.  
  10. $cnx = odbc_pconnect( $bd , $user, $password );                // ouvre DB access
  11. if (!$cnx)    Error_handler( $text_error_connection , $cnx );
  12.  
  13. $query  = "UPDATE $nom_table set site='$site', description='$description', url='$url', email='$email' WHERE num=$num";
  14.  
  15. $result = odbc_do ($cnx,$query);        // applique l'update
  16.  
  17. odbc_close( $cnx);                        // ferme la connection
  18.  
  19. echo "mise a jour oki";
  20. ?>

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.

Fichier delete.php
  1. <?php
  2. include ("config.inc.php");
  3.  
  4. $cnx = odbc_connect( $bd , $user, $password );         // connection ODBC
  5. if (!$cnx) echo "Impossible de se connecter";
  6.  
  7. $query = "select * FROM $nom_table ";                         // requete de selection d'une table
  8. $result = odbc_do($cnx, $query);                              // execute la requete
  9.  
  10. echo "<h1>Supprimer un enregistrement</h1>";
  11. while(odbc_fetch_row($result))                               // lit toute les lignes
  12. {
  13. echo "<a href='delete_del.php?num=".odbc_result($result, "num")."'>".odbc_result($result, "site")."</a><br />";
  14. }
  15. odbc_close( $cnx);                // ferme la connection
  16. ?>

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

Fichier delete_del.php
  1. <?php
  2. $num=$_GET['num'];
  3.  
  4. require ("config.inc.php");                // recupere parametres serveurs
  5.  
  6. $cnx = odbc_pconnect( $bd , $user, $password );                // ouvre DB access
  7. if (! $cnx)    Error_handler($text_error_connection  , $cnx );
  8.  
  9. $query = "delete * from $nom_table where num=$num";
  10. $result = odbc_do ($cnx,$query);                                // execute la requete de suppression
  11.  
  12. odbc_close( $cnx);                        // ferme la connection
  13. echo "Ligne supprimée";
  14. ?>

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.


Retour à l'accueil des articles