0
PHP + MySQL Saïd Radhouani Université de Genève avril 2008
PHP + MySQL : Interfaçage avec une base de données <ul><li>Générer des pages à partir des données de la base </li></ul><ul...
Connexion au système de gestion de base de données (SGBD) <ul><li>connexion à un serveur </li></ul><ul><ul><li>mysql_conne...
Accès à la base de données <ul><li>Après la connexion au SGBD </li></ul><ul><ul><li>Sélectionner la base de données </li><...
Accès aux bases de données <ul><li>Liste des bases de données et de leurs tables respectives </li></ul><ul><ul><li>$connex...
Construction d'une requête SQL <ul><li>Requête SQL : chaîne de caractères qui doit répondre à la syntaxe SQL </li></ul><ul...
Traitement des résultats d’une requête (1) <ul><li>$resultat = mysql_query($requete, $connexion);  </li></ul><ul><li>La va...
Traitement des résultats d’une requête (2) <ul><li>Récupérer des informations sur les champs d'une table résultante d'une ...
Traitement des résultats d’une requête   (3) <ul><li>exemple </li></ul><ul><li>$resultat = mysql_query(&quot;select nom_jo...
Traitement des résultats d’une requête (4) <ul><ul><li><?php </li></ul></ul><ul><ul><li>$connexion = mysql_connect(&quot;l...
Gestion des erreurs (1) <ul><li>Il est possible d'interrompre le script afin d'éviter les erreurs en cascade => deux métho...
Gestion des erreurs (2) <ul><ul><li><?php </li></ul></ul><ul><ul><li>$connexion = mysql_connect(&quot;localhost&quot;, &qu...
Déconnexion <ul><li>mysql_close($connexion); </li></ul><ul><li>Si on oublie de le faire, déconnexion automatique à la fin ...
Liens <ul><li>http://www.manuelphp.com/ </li></ul><ul><li>http://www.mysql.fr/ </li></ul><ul><li>http://www.phpfrance.com/...
Structure d’une BD journaux articles
Insertion de données dans une table <ul><li>INSERT INTO  nom_table  </li></ul><ul><li>(nom_colonne, ...) VALUES  (valeur1,...
Modification de données <ul><li>UPDATE  nom_table  </li></ul><ul><li>SET  nom_colonne=valeur, ... WHERE  condition </li></...
Supression de données <ul><li>DELETE   FROM  nom_table  </li></ul><ul><li>WHERE  condition </li></ul><ul><li>exemple : sup...
Sélections <ul><li>SELECT * FROM  nom_table  WHERE  condition </li></ul><ul><li>exemples </li></ul><ul><ul><li>afficher le...
Sélections <ul><li>Projection : affichage de certaines colonnes SELECT  nom_colonne, ...  FROM  nom_table  WHERE  conditio...
Sélections <ul><li>Jointure : regrouper des données de plusieurs tables </li></ul><ul><li>SELECT nom_table.nom_colonne, .....
Upcoming SlideShare
Loading in...5
×

PHP &amp; MySQL

1,238

Published on

Développement Web, base de données

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,238
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
66
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "PHP &amp; MySQL"

  1. 1. PHP + MySQL Saïd Radhouani Université de Genève avril 2008
  2. 2. PHP + MySQL : Interfaçage avec une base de données <ul><li>Générer des pages à partir des données de la base </li></ul><ul><li>Mettre à jour des bases de données à partir de pages </li></ul><ul><li>Déroulement </li></ul><ul><ul><li>connexion au SGBD </li></ul></ul><ul><ul><li>connexion à la base de données </li></ul></ul><ul><ul><li>“ fabrication” d’une requête SQL (éventuellement en fonction d’informations entrées dans un formulaire) </li></ul></ul><ul><ul><li>envoi de la requête à MySQL </li></ul></ul><ul><ul><li>récupération et affichage des résultats </li></ul></ul><ul><ul><li>déconnexion </li></ul></ul>
  3. 3. Connexion au système de gestion de base de données (SGBD) <ul><li>connexion à un serveur </li></ul><ul><ul><li>mysql_connect (hôte, nom_utilisateur, mot de passe) </li></ul></ul><ul><ul><ul><li>Si connexion établie => identificateur de connexion (valeur de type Integer) </li></ul></ul></ul><ul><ul><ul><li>Sinon (erreur) => False </li></ul></ul></ul><ul><li>exemple </li></ul><ul><ul><li>$connexion = mysql_connect (&quot;localhost&quot;, &quot;root&quot;, &quot;root&quot;); </li></ul></ul>
  4. 4. Accès à la base de données <ul><li>Après la connexion au SGBD </li></ul><ul><ul><li>Sélectionner la base de données </li></ul></ul><ul><ul><ul><li>mysql_select_db (nom_base, $connexion) ; </li></ul></ul></ul><ul><ul><ul><li>toutes les requêtes suivantes seront effectuées sur la base sélectionnée </li></ul></ul></ul><ul><li>exemple </li></ul><ul><ul><li>mysql_select_db (&quot;presse&quot;, $connexion); </li></ul></ul>
  5. 5. Accès aux bases de données <ul><li>Liste des bases de données et de leurs tables respectives </li></ul><ul><ul><li>$connexion = mysql_connect(&quot;localhost&quot;,  &quot;root&quot;,  &quot;root&quot;); </li></ul></ul><ul><ul><li>$liste_bases = mysql_list_dbs($connexion ); </li></ul></ul><ul><ul><li>$nb_bases = mysql_num_rows($liste_bases); </li></ul></ul><ul><ul><li>echo &quot;<h3>Liste des bases de données</h3>&quot;; </li></ul></ul><ul><ul><li>for($i = 0; $i < $nb_bases; $i++) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>$nom_base_donnee = mysql_db_name($liste_bases, $i);  </li></ul></ul><ul><ul><li>$liste_tables = mysql_list_tables($nom_base_donnee, $connexion); </li></ul></ul><ul><ul><li>$nb_tables = mysql_num_rows($liste_tables);  </li></ul></ul><ul><ul><li>echo &quot;<h3>&quot; . $nom_base_donnee . &quot;</h3>&quot;; </li></ul></ul><ul><ul><li>echo &quot;<h4>Liste des tables :</h4>&quot;; </li></ul></ul><ul><ul><li>for($j = 0; $j < $nb_tables; $j++) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>echo mysql_tablename($liste_tables, $j) . &quot;<br>&quot;; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>} </li></ul></ul>
  6. 6. Construction d'une requête SQL <ul><li>Requête SQL : chaîne de caractères qui doit répondre à la syntaxe SQL </li></ul><ul><li>La requête est envoyée à la base de données définie par un identificateur de connexion </li></ul><ul><li>mysql_query ($requete, $connexion) </li></ul><ul><li>exemple </li></ul><ul><ul><li>$requete = &quot;select nom_journal from journaux&quot; </li></ul></ul><ul><ul><li>$resultat = mysql_query($requete , $connexion); </li></ul></ul><ul><ul><li>$resultat : résultat sous forme d'un ensemble de lignes </li></ul></ul><ul><li>Si erreur => $resultat contient la valeur false </li></ul>
  7. 7. Traitement des résultats d’une requête (1) <ul><li>$resultat = mysql_query($requete, $connexion); </li></ul><ul><li>La variable $resultat n'est pas exploitable telle quelle </li></ul><ul><li>=> Récupérer des informations sur les champs d'une table résultante d'une requête SQL </li></ul><ul><ul><li>Nombre des enregistrements d'une table </li></ul></ul><ul><ul><ul><li>$nb_champs = mysql_num_fields ($resultat); </li></ul></ul></ul><ul><ul><li>Nombre des lignes d'une table </li></ul></ul><ul><ul><ul><li>$nb_lignes = mysql_num_rows ($resultat); </li></ul></ul></ul><ul><ul><li>Le nom d'un champ </li></ul></ul><ul><ul><li>$nom = mysql_field_name( $resultat, $num_champ ); </li></ul></ul><ul><ul><li>($num_champ : position numérique du champ qui commence à partir de 0) </li></ul></ul>
  8. 8. Traitement des résultats d’une requête (2) <ul><li>Récupérer des informations sur les champs d'une table résultante d'une requête SQL </li></ul><ul><ul><li>Le type d’un champ </li></ul></ul><ul><ul><ul><li>$type_donnee = mysql_field_type( $resultat, $num_champ ); </li></ul></ul></ul><ul><ul><li>La longueur d'un champ </li></ul></ul><ul><ul><ul><li>$longueur = mysql_field_len ($resultat, $num_champ); </li></ul></ul></ul><ul><ul><li>Nom de la table parente de la colonne </li></ul></ul><ul><ul><ul><li>$nom_table = mysql_field_table ($resultat, $num_champ); </li></ul></ul></ul><ul><ul><li>Sémaphore du champ comme NOT NULL, PRIMARY KEY </li></ul></ul><ul><ul><ul><li>$semaphore = mysql_field_flags ($resultat, $num_champ); </li></ul></ul></ul>
  9. 9. Traitement des résultats d’une requête (3) <ul><li>exemple </li></ul><ul><li>$resultat = mysql_query(&quot;select nom_journal from journaux&quot;, $connexion) ; </li></ul><ul><ul><li>Lecture du résultat ligne par ligne : mysql_fetch_row ($resultat) </li></ul></ul><ul><ul><li>Pour chaque ligne (tableau), lecture de chacune des cases </li></ul></ul><ul><ul><ul><li>echo(&quot;<table>&quot;); </li></ul></ul></ul><ul><ul><ul><li>while ($ligne = mysql_fetch_row($resultat)) </li></ul></ul></ul><ul><ul><ul><li>{ </li></ul></ul></ul><ul><ul><ul><li>echo(&quot;<tr>&quot;); </li></ul></ul></ul><ul><ul><ul><li>for ($i=0; $i<mysql_num_fields($resultat); $i++) </li></ul></ul></ul><ul><ul><ul><li>echo &quot;<td>&quot; . $ligne[$i] . &quot;</td>&quot;; </li></ul></ul></ul><ul><ul><ul><li>echo(&quot;</tr>&quot;); </li></ul></ul></ul><ul><ul><ul><li>} </li></ul></ul></ul><ul><ul><ul><li>echo(&quot;</table>&quot;); </li></ul></ul></ul>
  10. 10. Traitement des résultats d’une requête (4) <ul><ul><li><?php </li></ul></ul><ul><ul><li>$connexion = mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;root&quot;); </li></ul></ul><ul><ul><li>mysql_select_db(&quot;presse&quot;, $connexion); </li></ul></ul><ul><ul><li>$requete = &quot;SELECT * FROM journaux&quot;; </li></ul></ul><ul><ul><li>$resultat = mysql_query($requete, $connexion) </li></ul></ul><ul><ul><li>or die (&quot;La requête est invalide : &quot;.$requete.&quot;<br>&quot;); </li></ul></ul><ul><ul><li>$nb_champs = mysql_num_fields($resultat) ; </li></ul></ul><ul><ul><li>$ligne = mysql_fetch_row($resultat); </li></ul></ul><ul><ul><li>$type = array(); </li></ul></ul><ul><ul><li>$propriete = array(); </li></ul></ul><ul><ul><li>for ($i = 0; $i < $nb_champs; $i++) { </li></ul></ul><ul><ul><li>$propriete[$i]['nom'] = mysql_field_name($resultat, $i) ; </li></ul></ul><ul><ul><li>$propriete[$i]['type'] = mysql_field_type($resultat, $i) ; </li></ul></ul><ul><ul><li>$propriete[$i]['longueur'] = mysql_field_len($resultat, $i) ;} </li></ul></ul><ul><ul><li>for($i = 0; $i < $nb_champs; $i++) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>echo &quot;<h3>Colonne n°&quot; . $i . &quot;</h3>&quot;; </li></ul></ul><ul><ul><li>foreach($propriete[$i] as $cle => $valeur){ </li></ul></ul><ul><ul><li>echo &quot;<u>&quot; . $cle . &quot; :</u> <b>&quot; . $valeur . &quot;</b><br>&quot;;} </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>?> </li></ul></ul>
  11. 11. Gestion des erreurs (1) <ul><li>Il est possible d'interrompre le script afin d'éviter les erreurs en cascade => deux méthodes : </li></ul><ul><li>Stocker le résultat de l'exécution de la fonction dans une variable </li></ul><ul><ul><li>Fonctions qui retournent le numéro et le message d'erreur généré par la dernière commande MySQL </li></ul></ul><ul><ul><ul><ul><ul><li>$num_erreur = mysql_errno (); </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>$message = mysql_error (); </li></ul></ul></ul></ul></ul><ul><li>Utiliser la fonction die() en cas d'erreur d'exécution </li></ul><ul><ul><li>mysql_connect(   &quot; h ôte&quot; , &quot; user_name &quot; , &quot; password &quot; ) or die (&quot;erreur de connexion au serveur h ôte &quot;); </li></ul></ul>
  12. 12. Gestion des erreurs (2) <ul><ul><li><?php </li></ul></ul><ul><ul><li>$connexion = mysql_connect(&quot;localhost&quot;, &quot;root&quot;, &quot;mot&quot;); </li></ul></ul><ul><ul><li>if (!$connexion) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>$message = &quot;<h3>Une erreur est survenue :</h3>&quot; . &quot;<b><u>Erreur numéro &quot; . mysql_errno() . &quot;:</u> &quot; . mysql_error() . &quot;</b>&quot;; </li></ul></ul><ul><ul><li>echo $message;} </li></ul></ul><ul><ul><li>else {$reussite = mysql_select_db( &quot;presse&quot;); </li></ul></ul><ul><ul><li>if (!$reussite) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>$message = &quot;<h3>Une erreur est survenue :</h3>&quot; . &quot;<b><u>Erreur numéro &quot; . mysql_errno() . &quot;:</u> &quot; . mysql_error() . &quot;</b>&quot;; </li></ul></ul><ul><ul><li>echo $message;} </li></ul></ul><ul><ul><li>else{$requete = mysql_query(&quot;SELECT * FROM journaux&quot;); </li></ul></ul><ul><ul><li>if (!$requete) { </li></ul></ul><ul><ul><li>$message = &quot;<h3>Une erreur est survenue :</h3>&quot; . &quot;<b><u>Erreur numéro &quot; . mysql_errno() . &quot;:</u> &quot; . mysql_error() . &quot;</b>&quot;; </li></ul></ul><ul><ul><li>echo $message; </li></ul></ul><ul><ul><li>}}} </li></ul></ul><ul><ul><li>?> </li></ul></ul>
  13. 13. Déconnexion <ul><li>mysql_close($connexion); </li></ul><ul><li>Si on oublie de le faire, déconnexion automatique à la fin du script </li></ul>
  14. 14. Liens <ul><li>http://www.manuelphp.com/ </li></ul><ul><li>http://www.mysql.fr/ </li></ul><ul><li>http://www.phpfrance.com/ </li></ul>
  15. 15. Structure d’une BD journaux articles
  16. 16. Insertion de données dans une table <ul><li>INSERT INTO nom_table </li></ul><ul><li>(nom_colonne, ...) VALUES (valeur1, ...) </li></ul><ul><li>exemple : insérer un article </li></ul><ul><ul><li>INSERT INTO articles (titre_article, nom_auteur, nom_journal, numero) VALUES (‘les engrais pour le jardin’, ‘D. Müller’, ‘La Feuille de Chou’, 17) </li></ul></ul>
  17. 17. Modification de données <ul><li>UPDATE nom_table </li></ul><ul><li>SET nom_colonne=valeur, ... WHERE condition </li></ul><ul><li>exemple : changement de l’adresse de l’éditeur “Edipresse” </li></ul><ul><li>UPDATE editeurs </li></ul><ul><li>SET adresse_editeur=‘Neuchâtel’ WHERE nom_editeur=‘Edipresse’ </li></ul>
  18. 18. Supression de données <ul><li>DELETE FROM nom_table </li></ul><ul><li>WHERE condition </li></ul><ul><li>exemple : supprimer tous les articles du journal Le Temps </li></ul><ul><li>DELETE FROM articles </li></ul><ul><li>WHERE nom_journal=‘Le Temps’ </li></ul><ul><li>!! ATTENTION : si on ne met pas de condition, toutes les lignes de la table seront supprimées ! </li></ul>
  19. 19. Sélections <ul><li>SELECT * FROM nom_table WHERE condition </li></ul><ul><li>exemples </li></ul><ul><ul><li>afficher le contenu de la table articles SELECT * FROM articles </li></ul></ul><ul><ul><li>afficher tous les articles de la Tribune de Genève SELECT * FROM articles WHERE nom_journal=‘la Tribune de Genève’ </li></ul></ul><ul><ul><li>afficher le nombre d’articles de la Tribune de Genève SELECT count (*) FROM articles WHERE nom_journal=‘la Tribune de Genève’ </li></ul></ul><ul><ul><li>afficher tous les articles parus dans des journaux dont le nom contient ‘Tribune’ SELECT * FROM articles WHERE nom_journal LIKE ‘% Tribune %’ </li></ul></ul>
  20. 20. Sélections <ul><li>Projection : affichage de certaines colonnes SELECT nom_colonne, ... FROM nom_table WHERE condition </li></ul><ul><li>exemples </li></ul><ul><ul><li>afficher les titres des articles, avec le nom de leur auteur SELECT titre_article, nom_auteur FROM articles </li></ul></ul><ul><ul><li>afficher les titres des articles de Le Temps SELECT titre_article FROM articles WHERE nom_journal=‘Le Temps’ </li></ul></ul>
  21. 21. Sélections <ul><li>Jointure : regrouper des données de plusieurs tables </li></ul><ul><li>SELECT nom_table.nom_colonne, ... </li></ul><ul><li>FROM nom_table, ... </li></ul><ul><li>WHERE condition_jointure (, autre_condition) </li></ul><ul><li>exemples </li></ul><ul><ul><li>afficher les titres des articles, leur auteur et l’adresse de ce dernier </li></ul></ul><ul><ul><li>SELECT articles.titre_article, article.nom_auteur, auteurs.adresse_auteurs </li></ul></ul><ul><ul><li>FROM articles, auteurs </li></ul></ul><ul><ul><li>WHERE article.nom_auteur = auteurs.nom_auteur </li></ul></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×