Escolar Documentos
Profissional Documentos
Cultura Documentos
php_mysql
PHP et mySQL
Code: php_mysql
Originaux
url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf
Auteurs et version
Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifi le 13/3/01 par VS)
Prrequis
Module technique prcdent: php-html Module technique prcdent: mysql-intro
Modules
Module technique suppl.: java-mysql
Internet et Education TECFA 13/3/01
PHP et mySQL - .
php_mysql-2
Objectifs
PHP - MySQL basics :)
Internet et Education
TECFA 13/3/01
PHP et mySQL
php_mysql
3 4
4 6
13
13 14 15 17
Internet et Education
TECFA 13/3/01
php_mysql-4
Internet et Education
TECFA 13/3/01
php_mysql-5
Pour lajout denregistrements deux scripts sont ncessaires: new-entry.php produit un formulaire HTML vide insert-entry.php prend le contenu du formulaire, essaye de linsrer dans la base de donnes et donne un feed-back lutilisateur. Il en va de mme pour ldition dun enregistrement: edit-entry.php produit un formulaire HTML contenant les valeurs prcdemment enregistres replace-entry.php tente de remplacer les anciennes valeurs avec celles que lutilisateur a entr dans le formulaire et donne un feed-back lutilisateur.
Internet et Education
TECFA 13/3/01
php_mysql-6
nobody est un utilisateur qui peut se connecter sans mot de passe mais qui a des permissions limites.
Internet et Education
TECFA 13/3/01
php_mysql-7
La variable $result est "boolean" et contient ce moment 1 (TRUE) si lopration a t effectue 0 (FALSE) si il y a eu un problme. qui est trs utile pour le dboguage!
Internet et Education
TECFA 13/3/01
php_mysql-8
prend un enregistrement dans le rsultats. Cet enregistrement est un vecteur de valeurs qui correspond aux champs de la base de donnes. Syntaxe: mysql_num_elds
mysql_num_fields(identificateur)
$nb_champs = mysql_num_fields($result);
Internet et Education
TECFA 13/3/01
php_mysql-9
rtourne la valeur numrique derreur de la dernire opration mySQL ou zro (0) sil ny pas des erreurs. Syntaxe: mysql_error()
mysql_error(identificateur)
rtourne la description derreur de la dernire opration mySQL ou un "string" vide "" dans le cas ou il ny a pas des erreurs.
Exemple avec les deux fonctions: <?php mysql_connect("marliesle"); echo mysql_errno().": ".mysql_error()."<BR>"; mysql_select_db("nonexistentdb"); echo mysql_errno().": ".mysql_error()."<BR>"; $conn = mysql_query("SELECT * FROM nonexistenttable"); echo mysql_errno().": ".mysql_error()."<BR>"; ?>
Internet et Education TECFA 13/3/01
php_mysql-10
Exemple 2-1: Traitement indpendant du nom des champs. Gnration dune table HTML avec les enregistrements contenus dans un rsultat url: /guides/php/examples/mysql-demo/dump_results_demo.php url: /guides/php/examples/mysql-demo/dump_results_demo.phps url: /guides/php/examples/mysql-demo/dump_results_demo.source
<? mysql_pconnect("tecfasun1.unige.ch","nobody",""); mysql_select_db("demo"); $result = mysql_query("SELECT * FROM demo1"); ?> <table border="1"> <tr> <? while ($row = mysql_fetch_row($result)) { echo "<tr>"; for ($i=0; $i<mysql_num_fields($result); $i++) { echo "<td>"; // test if this is the URL if ($i == 4) { echo "<a href='$row[$i]'>$row[$i]</a>"; else { echo "$row[$i]"; } echo "</td>"; } } ?> </table>
Internet et Education
TECFA 13/3/01
php_mysql-11
Donne le nombre denregistrements contenus dans le rsultat identifi par $result mysql_result Syntaxe: mysql_result(identicateur, index, champ);
$nom = mysql_result($result,0,fullname); index dsigne le numro de lenregistrement. Lindexation commence 0 !
(zro). A lindex 0 correspond le premier enregistrement. champ dsigne le nom du champ que lon veut rcuprer.
Internet et Education
TECFA 13/3/01
php_mysql-12
Exemple 2-2: Traitement utilisant le nom des champs. Gnration dune table HTML avec les enregistrements contenus dans un rsultat url: Voir: /guides/php/examples/mysql-demo/dump_results_demo2.php url: Voir: /guides/php/examples/mysql-demo/dump_results_demo2.phps url: Voir: /guides/php/examples/mysql-demo/dump_results_demo2.source
<? mysql_pconnect( "localhost", "nobody", "") or die( "Unable to connect SQL server"); mysql_select_db("demo") or die ( "Unable to select database"); $result = mysql_query( "select * from demo1"); ?> <table border="1"> <? $i = 0; while ($i < mysql_num_rows($result)) { echo "<tr>"; echo "<td>"; echo mysql_result($result,$i,id); echo "</td>"; echo "<td>"; echo mysql_result($result,$i,fullname); echo "</td>"; echo "<td>";
Internet et Education
to
TECFA 13/3/01
PHP et mySQL - 2. Principe de la connectivit PHP - bases de donnes echo mysql_result($result,$i,love); echo "</td>"; echo "<td>"; echo mysql_result($result,$i,sports); echo "</td>"; echo "</tr>"; $i++; } echo ?> "</table>";
php_mysql-13
Internet et Education
TECFA 13/3/01
php_mysql-14
Internet et Education
TECFA 13/3/01
php_mysql-15
Internet et Education
TECFA 13/3/01
php_mysql-16
Ensuite, on construit la requte SQL partir des donnes envoyes par le formulaire et on envoi la requte mySQL
$query_string = "INSERT INTO comments (nom, prenom, email, computer, browser, version, comments) VALUES ($nom, $prenom, $email, $computer, $browser, $version, $comments)"; $result = mysql_query ($query_string);
A ce stade, la variable $result contient 1 (TRUE) si lopration a t effectue 0 (FALSE) si il y a eu un problme. Il faut faire un test sur cette variable pour donner un feedback lutilisateur
Internet et Education TECFA 13/3/01
php_mysql-17
if ($result) { echo "<p>Vos donnes son bien enregistres."; echo "<p>Vous pouvez aller voir tous les <a href='commentslist.php'>commentaires</a>.\n"; } else { echo "<p>Warning: ERROR writing on data base.</p>\n"; echo "<p>Error returned by mySQL : " . mysql_error() . "\n"; }
La fonction mysql_error() retourne la dernire erreur mySQL gnre dans un string quon peut imprimer. Trs utilile pour debugger ! En cas de problme, il est conseill dimprimer lcran la requte SQL pour pouvoir la vrifier
echo $query_string;
Dans de grosses applications avec beaucoup de donnes, il faut penser a librer les ressources de la machine en fermant les connections ouvertes
mysql_close($link);
Internet et Education
TECFA 13/3/01
php_mysql-18
A ce stade, la variable $result contient : 0(false) si lopration a pos un problme lidentificateur dun "result set" si lopration sest droule correctement Ce nest pas fait dans cet exemple mais il est prfrable de faire un test sur cette variable avant la suite des oprations.
if (!$result) { echo "ca marche pas :("; ...arreter le programme } else { ...traiter les donnes }
Pour prsenter les donnes lcran, on les prsente dans un tableau. Les lignes et les cellules sont cres dans une boucle qui va lire chaque enregistrement du "result set".
Internet et Education TECFA 13/3/01
php_mysql-19
$i = 0; while ($i < mysql_num_rows($result)) { echo "<tr>"; echo "<td>"; echo mysql_result($result,$i,id); echo "</td>"; echo "<td>"; echo mysql_result($result,$i,nom); echo "</td>"; echo "<td>"; echo mysql_result($result,$i,prenom); echo "</td>"; ..... suite du traitement des champs echo "</tr>"; $i++; }
Internet et Education TECFA 13/3/01
php_mysql-20
Internet et Education
TECFA 13/3/01