De nombreuses fonctions de bases de données permettent d'extraire des informations telles que des enregistrements ou des champs précis d'une ou plusieurs tables.
Subséquemment à l'exécution d'une requête, des fonctions spécialisées s'occupent de l'extraction de données ciblées.
$requete = "SELECT nom, prenom, adresse, cp, ville" . "FROM tbl_client"; // Sous Microsoft SQL Server $id_connexion = mssql_connect("localhost", "jjfredo", "02h4Ypl3"); mssql_select_db("bd_commerce"); $id_resultat = mssql_query($requete, $id_connexion); // Sous Oracle $id_connexion = ocilogon("jjfredo", "02h4Ypl3", "bd_commerce"); $id_resultat = ociparse($requete); ociexecute($id_resultat);
Lorsque le résultat d'une requête devient disponible, le pointeur d'enregistrement se situe sur la première ligne de la table, soit à l'index '0'.
...
|
A partir de là, il suffit de déplacer le pointeur par une incrémentation de l'index ou de le placer directement à un index spécifié. Chaque ligne pourra alors délivrer la totalité de son contenu.
// Sous Microsoft SQL Server echo "<table>"; // décompte du nombre d'enregistrements for($i = 0; $i < mssql_num_rows($id_resultat); $i++) { echo "<tr><th>" . $i . "</th><td>"; // lecture de l'enregistrement print_r(mssql_fetch_row($id_resultat)); echo "</td></tr>"; // déplacement du pointeur mssql_data_seek($id_resultat, $i); } echo "</table>"; // Sous Oracle while(ocifetch($id_resultat)) { // lecture de l'enregistrement ocifetchinto($id_resultat, $ligne); print_r($ligne); } // ou $nb_lignes = ocifetchstatement($id_resultat, $table_resultante); for($i = 1; $i <= $nb_lignes; $i++) { $ligne = array_slice($table_resultante, $i, 1); print_r($ligne); }
Des fonctions de déplacement du pointeur s'occupent de désigner soit un enregistrement, soit un champ pour une utilisation ultérieure comme l'extraction, la modification ou encore la suppression des données.
// Sous Microsoft SQL Server echo "<table>"; // décompte du nombre de champs for($i = 0; $i < mssql_num_fields($id_resultat); $i++) { echo "<tr><th>" . $i . "</th><td>"; // lecture des informations sur le champ print_r(mssql_fetch_field($id_resultat)); echo "</td></tr>"; // déplacement du pointeur mssql_field_seek($id_resultat, $i); } echo "</table>"; // Sous Oracle while(ocifetch($id_resultat)) { for($i = 1; $i <= ocinumcols($id_resultat); $i++) { echo ociresult($id_resultat, $i); } }
Le décompte total des enregistrements ou des champs d'une table, peut être obtenu par l'intermédiaire de certaines fonctions.
$nb_champs = msql_num_fields($id_resultat); $nb_lignes = msql_num_rows($id_resultat); $nb_champs = mysql_num_fields($id_resultat); $nb_lignes = mysql_num_rows($id_resultat); $nb_champs = ociNumCols($id_resultat); $nb_lignes = ociRowCount($id_resultat); $nb_champs = pg_NumFields($id_resultat); $nb_lignes = pg_NumRows($id_resultat); $nb_champs = sybase_num_fields($id_resultat); $nb_lignes = sybase_num_rows($id_resultat);
A partir des enregistrements, chacun des champs devient accessible aisément par des fonctions appropriées.
En outre, certaines fonctions sont capables d'extraire directement un champ déterminé avec exactitude.
$valeur = mssql_result($id_resultat, $num_ligne, $num_col); $valeur = msql_result($id_resultat, $num_ligne, $num_col); $valeur = mysql_result($id_resultat, $num_ligne, $num_col); $valeur = pg_result($id_resultat, $num_ligne, $num_col); $valeur = sybase_result($id_resultat, $num_ligne, $num_col);
Afin d'éviter une surcharge de la mémoire, des instructions PHP permettent de libérer les ressources suite au terme de leur utilisation.
mssql_free_result($id_resultat); msql_free_result($id_resultat); mysql_free_result($id_resultat); sybase_free_result($id_resultat);
Le langage PHP prend en charge la plupart des SGBDR courants, lui procurant ainsi un panel impressionnant d'outils visant à exploiter pleinement n'importe quel type de bases de données.
Exemple [voir]<!-- Formulaire --> <html> <body> <form method="POST" action="traitement.php"> <input type="text" name="nom" size="20" value="nom"><br> <input type="text" name="prenom" size="20" value="prenom"><br> <input type="text" name="email" size="20" value="email"><br> <input type="submit" name="soumission" value="Soumettre"> </form> </body> </html> <?php // fichier : traitement.php $id_connex = mysql_connect("localhost","root","emma") or die("La connexion a échoué !"); $id_liste_bases = mysql_list_dbs($id_connex); $trouve = false; while($ligne = mysql_fetch_assoc($id_liste_bases)) { if ($ligne['Database'] == 'utilisateur') { $trouve = true; } } if(!$trouve) { mysql_create_db("utilisateur") or die("La création de la base a échoué !"); } $id_select = mysql_select_db ("utilisateur") or die("La sélection de la base a échoué !"); $id_liste_tables = mysql_list_tables ('utilisateur', $id_connex); $trouve = false; for($i = 0; $i < mysql_num_rows($id_liste_tables); $i++) { if (mysql_tablename($id_liste_tables, $i) == 'tbl_utilisateur') { $trouve = true; } } if(!$trouve) { mysql_query("create table tbl_utilisateur " . "(date CHAR(30) NOT NULL, email CHAR(50) UNIQUE, " . "nom CHAR(50) NOT NULL)", $id_connex) or die("La création de la table a échoué !"); } if($id_select) { mysql_query("insert into tbl_utilisateur (date, email, nom) " . "values ('" . date("d/m/Y H:i:s") . "', '" . $email . "', '" . $prenom . " " . $nom . "')", $id_connex) or die("Impossible d'insérer les informations !"); } else { echo "<h3>Impossible de sélectionner la table !</h3>"; } $id_requete = mysql_query("select * from tbl_utilisateur", $id_connex); if($id_requete) { echo '<table border="0">' . '<tr bgcolor="#000000" style="color:#FFFFFF">'; $id_champs = mysql_list_fields("utilisateur", "tbl_utilisateur", $id_connex); $nb_champs = mysql_num_fields($id_requete); for ($i = 0; $i < $nb_champs; $i++) { echo '<th>' . mysql_field_name($id_requete, $i) . '</th>' } echo '</tr>'; for($i = 0; $i < mysql_num_rows($id_requete); $i++) { echo '<tr bgcolor ="#FFFF00">'; for($j = 0; $j < mysql_num_fields($id_requete); $j++) { echo '<td>' . mysql_result($id_requete, $i, $j) . '</td>'; } echo '<tr>'; } echo '</table>'; mysql_free_result($id_requete); } else { echo "<h3>Impossible d'exécuter la requête de sélection !</h3>"; } mysql_close(); ?> |