Simulation ODBC avec PHP  

Introduction

Cet article à pour vocation de vous présenter une alternative à l'utilisation d'ODBC tout en restant sur un modèle similaire.

Vous utiliserez cette technique si vous n'avez pas accès à ODBC (ce qui est le cas si vous n'avez pas le pack office installé sur votre poste).

Merci à ODBCPHP pour cet article

Présentation du DSN et d'ODBC

Le DSN (Data Source Name) est un système qui permet d'émettre des données sous différents environnements (Linux, Windows, Mac, etc). Dans l'environnement Windows, les déclarations s'effectuent le plus souvent par le biais d'ODBC.

Nous allons étudier comment utiliser une base de données sans déclaration. L'utilisation d'un fichier Access de Microsoft conviendra parfaitement à illustrer notre exemple.

Découpe script exemple :

Exemple
  1. <?php
  2. if (!$conn = new COM('ADODB.Connection'))  // Declaration Objet
  3. exit('impossible de créer la connection ADODB');
  4. ?>

 

ADOBD (Active Data Objects Data Base) permet d'effectuer des requêtes en SQL pour le PHP avec des bases de données comme MySQL, PostgreSQL,Interbase, Informix, Oracle, MS SQL 7, Foxpro, Access, ADO, SAP DB, SQLite, Sybase, DB2, etc

Image

ODBC
  1. <?php
  2. $connect = "
  3. DRIVER={Microsoft Access Driver (*.mdb)}; // choix driver
  4. DBQ=database; // chemin + nom de l’application
  5. DefaultDir=database; // chemin du fichier
  6. SERVER=localhost; // adresse du serveur
  7. UID=admin; // login
  8. PWD =password " ; // password
  9.  
  10. $conn->open ($connect) ; // ouverture de la base
  11. ?>

 


Dans la déclaration du pilote, seul 2 critèresres sont obligatoires :

  • La déclaration du Driver
  • Le nom du fichier (BDQ).

Les autres sont conseillés suivant les droits d'accès de votre serveur.

Exemple
  1. <?php
  2. $requete = "SELECT * FROM $table"; // Selectionne une table
  3. $resultat = $conn->execute($requete); // execute la requete
  4.  
  5. $col2 = $resultat->Fields(1); // colonne 2
  6. $col3 = $resultat->Fields(2); // colonne 3
  7.  
  8. while (!$resultat->EOF) // tant que pas le fichier n'est pas terminé
  9. {
  10. echo "$col2->value ";
  11. echo "$col3->value ";
  12. echo "<br />";
  13. $resultat->MoveNext(); // enregistrement suivant
  14. }
  15. ?>

 

La requete prend toutes les colonnes de la table. Il faut ensuite déterminer la sélection des colonnes de notre choix et d'afficher le résultat suivant la sélection.

 

Exemple complet
  1. <?php
  2. $base="c:\\exemple.mdb";
  3. $table="t_liste";
  4.  
  5. if (!$conn = new COM("ADODB.Connection"))                        // Declaration Objet
  6.      exit("impossible de créer la connection ADODB<br />");
  7.  
  8. $conn->open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=$base");     // ouverture du fichier
  9.  
  10. $requete = "SELECT * FROM $table";     // Selectionne une table
  11. $resultat = $conn->execute($requete);     // execute la requete
  12.  
  13. $col2 = $resultat->Fields(1);        // colonne 2
  14. $col3 = $resultat->Fields(2);        // colonne 3
  15.  
  16. echo "<table>";
  17. while (!$resultat->EOF)                 // tant que pas le fichier n'est pas terminé
  18. {
  19.  echo "<tr>";
  20.  echo "<td>$col2->value </td>";
  21.  echo "<td>$col3->value </td>";
  22.  echo "</tr>";
  23.  $resultat->MoveNext();                 // enregistrement suivant
  24. }
  25. echo "</table>";
  26. $resultat->Close();                        // ferme la requete
  27. $conn->Close();                           // ferme la connection
  28. ?>

 

Aperçu sous Ms ACCESS :

Image

Aperçu avec votre navigateur :

Image

Retour à l'accueil des articles