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();
?> |