Scripts PHP Interaction avec MySQL Insert, Select, …. Université Paris II & LRI Michel de Rougemont mdr@lri.fr http://www.lri.fr/~mdr Scripts PHP Interaction avec MySQL Insert, Select, …. Stratégies en PHP Etude de cas Association (service public) : sportassas.free.fr Site commercial : www.devenir.fr Projets
Rappel :Scripts SERVEUR SERVEUR calcule: www.free.fr <html><head><title>PHP Test</title></head> <body> <?php echo "Hello World<P>"; ?> <br> Adresse: <?php echo $REMOTE_ADDR ;?> </body> </html> <html><head><title>PHP Test</title></head> <body> Hello World <br> Adresse: 129.128.5.2 </body> </html> Traduction HTML Envoyée au Client Helloip.php
Exemple 1 : MySQL Insérer un enregistrement dans une table : td8script.php <html><head><title>PHP Test</title></head> <body><?php echo "Bonjour"; ?><br> $connexion=mysql_pconnect("localhost","etud","etud2000"); if (!$connexion){ echo "Probleme de connexion"; exit; } if (!mysql_select_db("etud",$connexion)){ echo "Probleme d'acces a la base"; exit; } $resultat=mysql_query("INSERT INTO Tlog VALUES( '$nom', '$email', '$a','$da', '$REMOTE_ADDR ')", $connexion); if (!$resultat){ echo "Erreur dans l'execution de la requete"; echo mysql_error($connexion); exit;} else echo "Bien enregistré"; ?> </body></html>
Exemple 2 : MySQL Afficher une partie d’une table : td8col.php appelé par td8select.php <?php $connexion=mysql_pconnect("localhost","etud","etud2000"); if (!$connexion){ echo "Probleme de connexion"; exit; } if (!mysql_select_db("etud",$connexion)){ echo "Probleme d'acces a la base"; exit; } $resultat=mysql_query("select Nom, Email from Tlog ", $connexion); if (!$resultat){echo "Erreur dans l'execution de la requete";echo mysql_error($connexion);exit; } while ($nuplet=mysql_fetch_object($resultat)){ echo "$nuplet->Nom<br>"; } ?> <br> Fin du script Nouveau: Boucle WHILE et champs d’une ligne
Exemple 3 : MySQL Affiche select * from Tlog td8affiche.php ….. Resultat de la requete <B><?php echo "SELECT * from Tlog";?></B><HR> <?php if ($resultat == 0):echo("<B>Erreur " . mysql_errno() . ": " . mysql_error() . "</B>"); elseif (mysql_num_rows($resultat) == 0) echo("<B>Requ\352te effectu\351e avec succ\350s</B>");else:?> <TABLE BORDER=1> <THEAD> <TR> <?php for ($i = 0; $i < mysql_num_fields($resultat);$i++) { echo("<TH>" . mysql_field_name($resultat,$i) . "</TH>"); } ?></TR> </THEAD> <TBODY> <?php for ($i = 0; $i < mysql_num_rows($resultat); $i++) { echo("<TR>"); $row_array = mysql_fetch_row($resultat); for ($j = 0; $j < mysql_num_fields($resultat); $j++) { echo("<TD>" . $row_array[$j] . "</TD>"); } echo("</TR>"); } ?></TBODY> </TABLE><?php endif ?> <HR><BR> Boucle : for ($i = 0; $i < mysql_num_fields($resultat); $i++) { …} Raccourci : $i++ pour $i=$i+1 Tableau : $row_array[$j]
Stratégie 1 en PHP Exemples de stratégies: STRATEGIE DU SITE www.lri.fr/ ~mdr/ec.php (voir Documentation) 1. Lire l'adresse IP du client : 2. Tester si ce client est déjà enregistré (est-ce que son adresse IP existe dans eclientsmdr ?) Si OUI, lui envoyer ec2.html (avec le formulaire radio) Si NON, lui envoyer ec1.html (avec le formulaire text) 3. Dans ec1.html, s'il remplit le formulaire d'enregistrement, l'inserer dans la table eclientsmdr (avec son adresse ip) , a l'aide de slog.php 4. Dans ec2.html, s'il remplit le formulaire radio, inserer son interet et la date dans la table preferencesmdr
Stratégie 2 en PHP Fichiers : td8s.php et td8strategie.php A partir du formulaire form.php Tester si le Nom est déjà dans la table: Si OUI, Envoyez r1.php (Message indiquant qu’il est déjà inscrit) Si NON, l’inscrire et lui envoyer r2.php (Message indiquant qu’il est déjà inscrit)
Script stratégie 2 td8strategie.php <?php $connexion=mysql_pconnect("localhost","etud","etud2000"); if (!$connexion){ echo "Probleme de connexion"; exit; } if (!mysql_select_db("etud",$connexion)){ echo "Probleme d'acces a la base"; exit; } $resultat=mysql_query("select * from Tlog ",$connexion); $resultat=mysql_query("select * from Tlog where Nom='$nom'",$connexion); if (mysql_num_rows($resultat) >0 ) { require("r1.php");} else { require("r2.php");}
Etudes de cas Site sportassas.free.fr 68 sports différents Tableaux : calendrier, résultat Site www.devenir.fr Site de consultants avec documentation d’articles Tableau : description des articles et nom du fichier.
Cas sportassas.free.fr 68 sports différents 2 Tableaux : Calendrier Résultat Affichage automatisé: 1 seule page plutôt que 68. Lors de la sélection: <form action=affiche.php> <input type=hidden name =sport value=<?php echo $choix; ?> > </form>
Cas sportassas.free.fr Affiche.php // Entete avec feuilles de style <?php require(entete.php); ?> // Image du sport <img src= =<?php echo $sport ; ?> > // Résultats des compétitions Afficher Select * from résultat where sport=‘$sport’
Cas www.devenir.fr Site www.devenir.fr Site de consultants avec documentation d’articles Tableau : description des articles et nom du fichier. Moteur de recherche interne au tableau: Select Nom_fichier from Docs where …… Afficher le fichier
T.D. 8 Recopier les exemples dans votre répertoire. Réaliser un script qui insère le contenu du formulaire dans une table que vous avez créée. Modifier le script td8affiche.php pour afficher votre table. A partir du formulaire avec 2 champs de texte (Nom, Email) , modifier la stratégie pour tester l’Email (renvoyer e1.php ou e2.php), puis le Nom et l’Email.
Projets Outil query.php Outil FG ( f.php et g.php) pour éviter FTP. Afficher le schéma des tables dans une nouvelle fenêtre. Feuilles de style dans l’affichage. Outil FG ( f.php et g.php) pour éviter FTP. Concevoir une table à 3 champs Nom, type, Programme Qui va stocker dans programme les scripts à tester. Le script f.php lit un Nom et permet d’éditer le programme ou de l’exécuter avec eval($p) ;
Projet XML Correcteur XML PHP with dom Java with dom Interface pour naviguer dans un arbre XML Implémentation du correcteur