PHP MySQL : les bases de données

Requêtes de sélection et jeux d'enregistremenst

La première chose à faire pour exploiter un jeu d'enregistrements est d'en parcourir toutes les lignes. PHP propose plusieurs fonctions permettant de lire une ligne et de déplacer le curseur à la ligne suivante. Une de ces fonctions est mysql_fetch_array() dont le nom décrit bien l'utilité puisqu'en anglais to fetch signifie "aller chercher".

La fonction renvoie une ligne à la fois dans un tableau associatif (Array) formé des colonnes de la table. Les clés du tableau sont les noms des colonnes. Lorsque la fonction dépasse les limites du jeu d'enregistrements, elle renvoie le booléen false.

Comme on ne connaît pas a priori le nombre de lignes dans le jeu d'enregistrements, on utilise une boucle while qui teste le résultat de l'affectation de cette fonction. Si le résultat est faux la boucle s'arrête, sinon la variable contient le tableau associatif.

array mysql_fetch_array(ressource <jeu d'enregistrements>)

<?php

require("../../../include/doctype.php") ;

$DSN = array (

'hostname' => "localhost",

'username' => "lambda",

'password' => ""

) ;

 

// 1. connexion

$link = @mysql_connect($DSN[hostname], $DSN[username], $DSN[password] )

or die ("Impossible de se connecter");

 

// 2. sélection de BD

$ok = mysql_select_db("demo", $link)

or die ("Base de données introuvable") ;

 

// 3. Formulation puis exécution de la requête

$sql = "select * from Films" ;

$films = mysql_query($sql)

or die ("Echec de la requête") ;

 

// 4. Impression du doctype par la fonction doctype_html

doctype_html("Production d'une page Web à partir d'une requête") ;

print ("<body>") ;

 

// 5. Les données sont affichées dans un élément html <table>. php doit générer tout le code nécessaire

// pour construire les lignes et les colonnes

print ("<table>") ;

while ($row = mysql_fetch_array($films) ) {

print("<tr><td>" . $row['titre'] . "</td></tr>") ;

}

print ("</table>") ;

// 6. Fermeture de la connexion

mysql_close() ;

print("</body>\n</html>") ;

?>