Você está na página 1de 20

PHP et mySQL

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

1. Table de matires dtaille


1. Table de matires dtaille 2. Principe de la connectivit PHP - bases de donnes
2.1 Un exemple complet document: 2.2 Fonctions PHP - MySQL
A.Se connecter un serveur de bases de donnes 6 B.Slectioner une base de donnes 6 C.Excuter une requte SQL 7 D.Traitement des rsultats 8

3 4
4 6

3. Une petite application PHP - mySQL : Le livre dor.


3.1 3.2 3.3 3.4 Dtails des fichiers et des ressources Structure de la table comments Dtails de lcriture des donnes Dtails de laffichage de la table

13
13 14 15 17

Internet et Education

TECFA 13/3/01

PHP et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-4

2. Principe de la connectivit PHP - bases de donnes


PHP permet dinteragir avec une base de donnes par lintermdiaire de fonctions. Nous construisons les requtes en crivant un programme PHP. Nous affichons les rsultats des requtes avec HTML. Fonctions PHP-mySQL url: /guides/php/php3/manual/ref.mysql.html

2.1 Un exemple complet document:


url: http://tecfa.unige.ch/guides/php/examples/mysql-demo/main.html url: Les dtails: http://tecfa.unige.ch/guides/php/examples/mysql-demo/ afficher un ensemble denregistrements (dump_results.phps) afficher un seul enregistrement ajouter un enregistrement (new-entry.phps et insert-entry.phps) diter un enregistrement (edit-entry.phps et replace-entry.phps) effacer un enregistrement (delete-entry.phps)

Internet et Education

TECFA 13/3/01

PHP et mySQL - 2. Principe de la connectivit PHP - bases de donnes

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 et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-6

2.2 Fonctions PHP - MySQL A. Se connecter un serveur de bases de donnes


Avant de pouvoir accder une base de donnes, il faut tablir une connexion avec le serveur qui lhberge. On spcifie: le nom de la machine sur laquelle est install le serveur (host) un nom dutilisateur le mot de passe correspondant Syntaxe: mysql_pconnect
mysql_pconnect(host, username, password); mysql_pconnect("tecfasun1.unige.ch","nobody","");

nobody est un utilisateur qui peut se connecter sans mot de passe mais qui a des permissions limites.

B. Slectioner une base de donnes


Un serveur hberge plusieurs bases de donnes qui chacune contiennent des tables. Syntaxe: mysql_select_db
mysql_select_db(dbname);
mysql_select_db("demo");

Internet et Education

TECFA 13/3/01

PHP et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-7

C. Excuter une requte SQL


PHP permet denvoyer nimporte quelle requte SQL au serveur en utilisant la commande mysql_query. Le nom dutilisateur et le mot de passe spcifis en se connectant la base de donnes dterminent si la requte peut tre excute. La commande retourne un identificateur de rsultat que lon stocke dans une variable pour lutiliser par la suite ($result). Syntaxe: mysql_query
mysql_query(requte_SQL);
$result = mysql_query("SELECT * FROM demo1");

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 et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-8

D. Traitement des rsultats


Aprs avoir soumis une requte mySQL, la fonction mysql_query nous donne un identificateur de rsultats ($result) quil faut dcortiquer et afficher. Il existe de multiples faons daccder au rsultat dune requte. En voici deux. Traitement indpendant du nom des champs Syntaxe: mysql_fetch_row
mysql_fetch_row(identificateur)
$row = mysql_fetch_row($result);

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

donne le nombre de champs dans un enregistrement.

Internet et Education

TECFA 13/3/01

PHP et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-9

E. Grer les erreurs (Warnings)


Aprs avoir fait une opration mySQL, PHP peut nous rtourner des "warnings" pour nous prvenir dune erreur. Il existe deux fonctions PHP accder aux erreurs: Syntaxe: mysql_errno()
mysql_errno(identificateur)

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 et mySQL - 2. Principe de la connectivit PHP - bases de donnes

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 et mySQL - 2. Principe de la connectivit PHP - bases de donnes

php_mysql-11

Traitement en utilisant le nom des champs mysql_num_rows Syntaxe: mysql_num_rows(identicateur);


$nb_enregistrements = mysql_num_rows($result);

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 et mySQL - 2. Principe de la connectivit PHP - bases de donnes

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 et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

php_mysql-14

3. Une petite application PHP - mySQL : Le livre dor.


url: http://tecfa.unige.ch/guides/tie/code/act-webm/comments.html

3.1 Dtails des fichiers et des ressources


Cette petite application se compose de 3 fichiers qui ont les fonctions suivantes : comments.html affiche le formulaire et envoi les donnes comments-insert.php comments-insert.php crit les donnes du formulaire dans la base de donne mySQL
Serveur : tecfasun5.unige.ch base de donne : mydb table : comments utilisateur : nobody

comments-list.php affiche tous les enregistrements de la table comments dans un tableau.

Internet et Education

TECFA 13/3/01

PHP et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

php_mysql-15

3.2 Structure de la table comments


url: http://tecfa.unige.ch/guides/tie/code/act-webm/comments-table.txt
create table comments ( id int(10) default 0 not null auto_increment, nom char(20) default not null, prenom char(20) default , email char(50) default , computer char(10), browser char(10), version char(10), comments char(200), primary key (id), key nom (nom) );

Internet et Education

TECFA 13/3/01

PHP et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

php_mysql-16

3.3 Dtails de lcriture des donnes


url: http://tecfa.unige.ch/guides/tie/code/act-webm/comments-insert.phps On commence par ce connecter la base de donne
$link = mysql_connect( "tecfasun5", "nobody", "") or die ( "Unable to connect to SQL server"); mysql_select_db("mydb", $link) or die ( "Unable to select database");

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 et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

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 et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

php_mysql-18

3.4 Dtails de laffichage de la table


url: http://tecfa.unige.ch/guides/tie/code/act-webm/comments-list.phps Aprs avoir tabli la connection (voir paragraphe suivant) il faut extraire les donnes de la table comments
$result = mysql_query( "select * from comments");

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 et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

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 et mySQL - 3. Une petite application PHP - mySQL : Le livre dor.

php_mysql-20

Internet et Education

TECFA 13/3/01

Você também pode gostar