INTERACTION PHP
Transcription
INTERACTION PHP
INTERACTION PHP-MYSQL 1) Connexion à l’environnement MySql Afin d’établir une connexion avec un serveur MySql, nous utilisons la fonction mysql_connect(). Syntaxe : identifiant_connection = mysql_connect( nom_hote , nom_utilisateur , mot_de_passe ); Paramètres : identifiant_connection est une variable retournée par la fonction et représentera la connexion qui est établie. nom_hote est le nom du serveur MySql (si celui-ci est exécuté en parallèle du serveur Web, on peut mettre localhost comme nom d’hote. nom_utilisateur est votre login sur le serveur MySql. mot_de_passe est votre password sur le serveur MySql. Exemple : $connexion = mysql_connect ("localhost", "dom", "passesecret") ; ou plus usuellement : $nom_hote = "localhost" ; $nom_utilisateur = "dom" ; $mot_de_passe = "passesecret" ; $connexion = mysql_connect ($nom_hote, $nom_utilisateur, $mot_de_passe) ; Interaction PHP-MySql Page 1 Par D. SALIGNAT – A.COSKUN 2) Choix de la base de donnée de travail Maintenant que nous sommes connectés sur le serveur MySql, il faut spécifier sur quelle base de donnée nous voulons travailler, ceci se fait via la fonction mysql_select_db(). Syntaxe : mysql_select_db( nom_base_donnee , identifiant_connexion ); Paramètres : nom_base_donnee est le nom de la base de donnée sur laquelle nous voulons travailler. identifiant_connection est la variable qui a été retournée par la fonction mysql_connect(). Exemple : mysql_select_db("carnetadresse",$connexion); ou plus usuellement : $nom_base_donnee = "carnetadresse" ; mysql_select_db($nom_base_donnee,$connexion); 3) Exécution de requêtes Il ne nous reste plus qu’à lancer des requêtes sur le serveur à l’aide de la fonction mysql_query(). Syntaxe : resultat = mysql_query( requete , identifiant_connexion ); Paramètres : resultat est une variable retournée par la fonction et contiendra le résultat de la requête. requete est la requête à exécuter. identifiant_connection est la variable qui a été retournée par la fonction mysql_connect(). Exemple : $resultat = mysql_query("select * from tablenoms",$connexion); ou plus usuellement : $requete = "select * from tablenoms" ; $resultat = mysql_query($requete,$connexion); Interaction PHP-MySql Page 2 Par D. SALIGNAT – A.COSKUN 4) Traitement du résultat de la requête Il ne suffit pas d’effectuer une requête pour en afficher le résultat. Le traitement s’effectue ligne à ligne. Chacune des lignes est récupéré par une variable de boucle ou bien à l’aide de la fonction mysql_fetch_array(). L’affichage en lui même se fera par traitement champs à champs de la ligne courante. On effectue ceci par traitement directe du tableau « ligne » ou en utilisant la fonction mysql_result(). a) Pour traiter toutes les lignes : Syntaxe : ligne_courante = mysql_fetch_array( resultat ); Paramètres : ligne_courante est une variable retournée par la fonction et contiendra la ligne courante. resultat est la variable qui a été retournée par la fonction mysql_query(). Utilisation : while ( $ligne_courante = mysql_fetch_array($resultat) ) { //cette section contiendra le traitement ligne à ligne (voir partie b) } Alternative : Pour effectuer un traitement par variable de boucle, nous devons connaitre le nombre total de ligne de notre requête. Ceci est effectué à l’aide de la fonction mysql_num_rows(). Syntaxe : nombre_de_ligne = mysql_num_rows( resultat ); Paramètres : nombre_de_ligne est une variable retournée par la fonction et contiendra le nombre total de lignes. resultat est la variable qui a été retournée par la fonction mysql_query(). Utilisation : $nombre_de_ligne = mysql_num_rows ( $resultat); $ligne_courante = 0 ; while ( $ligne_courante < $nombre_de_ligne ) { //cette section contiendra le traitement ligne à ligne (voir partie b) $ligne_courante++ ; } b) Pour récupérer les champs des lignes en vue d’un affichage : Syntaxe : Interaction PHP-MySql Page 3 Par D. SALIGNAT – A.COSKUN valeur_du_champs = mysql_result( resultat , ligne_courante , nom_du_champs ); Paramètres : valeur_du_champs est une variable retournée par la fonction et contiendra le contenu du champs pour la ligne en cours. resultat est la variable qui a été retournée par la fonction mysql_query(). ligne_courante est soit la variable retournée par la fonction mysql_fetch_array() soit celle attribuée manuellement (voir partie a). nom_du_champs contient le nom du champs de la table pour lequel vous désirez récupérer la valeur. Exemple: $nom_courant = mysql_result( $resultat, $ligne_courante, "nom" ) ; Alternative : On effectue directement le traitement en pointant notre tableau représenté par la ligne courante. Syntaxe : valeur_du_champs = ligne_courante[ nom_du_champs ] ; Paramètres : valeur_du_champs est une variable qui contiendra le contenu du champs pour la ligne. ligne_courante est soit la variable retournée par la fonction mysql_fetch_array() soit celle attribuée manuellement (voir partie a). nom_du_champs contient le nom du champs de la table pour lequel vous désirez récupérer la valeur. Exemple: $nom_courant = $ligne_courante["nom"] ; Interaction PHP-MySql Page 4 Par D. SALIGNAT – A.COSKUN 5) Déconnexion de l’environnement MySql Lorsque vous n’avez plus la nécessité d’être connecté au serveur MySql, effectuez la fonction mysql_close(). Syntaxe : mysql_close( identifiant_connexion ); Paramètres : identifiant_connection est la variable qui a été retournée par la fonction mysql_connect(). Exemple : mysql_close($connexion); Interaction PHP-MySql Page 5 Par D. SALIGNAT – A.COSKUN 6) Fonctionnement par la pratique Les interactions PHP-MySql montrées ici sont à mettre en pratique avec des tables que vous aurez préalablement établies ; il faut donc modifier le code proposé pour prendre ces dernières en considération. a) Cas figé Le but est de se connecter au serveur, puis d’effectuer une requête simpliste. La requête en question consiste à insérer une nouvelle ligne dans une table avec les valeurs nom, prénom et émail connues à l’avance ("toto","titi", Pole Universitaire…). <html> <head> <title>Base de donnée APO</title> </head> <body> <? //Paramètres de connexion au serveur $serveur="localhost"; $login="titi"; $pass="toto"; $base="dugm"; $table="ApoCalypse"; //connexion au serveur soit avec IP comme 194.214.134.30, soit avec DNS comme sql.vichy, soit avec // alias de localhost et il faut définir aussi login, et pass =pass word // CONNECT : si on a connecté on reçoit un chiffre de0 à 65532 // sinon on reçoit un chiffre ‘0’ qui veut dire il y a un problème $id=MYSQL_CONNECT($serveur,$login,$pass); mysql_select_db($base,$id); // mysql_select_db(nom de base de donnée, lien); //variables figes $No="3"; $Nom_de_livre="Toto"; $Auteur="Titi"; $Edition="Pole Universitaire"; $Année="Mai 2001"; //ici chaque variable est équivalant d’un nom de //champ de notre base de donnée. Dans notre exemple // « No, Nom de livre, Auteur…. » //on fait une requête avec les variables figes $query="INSERT INTO $table VALUES('$No','$Nom_de_livre','$Auteur','$Edition','$Année')"; $result=mysql_query($query,$id); // ici query est une variable et $ sert à définir une variable // qui peut être nommée comme toto titi //on se déconnecte du serveur mysql_close($id); ?> </body> </html> P.S. : Quant on envoie ce fichier « php3 » avec un logiciels FTP il faut tout d’abord l’exécuter comme une page du Web en l’appelant, par exemple l’adresse de notre serveur est « vichy-universite.com » et notre base de donné s’appelle « dugm » et on demande notre fichier de php3 base_de_donnee_APO.Php3» en demandant de cet adresse http://www.vichy-universite.com/~dugm/ base_de_donnee_APO.Php3 sur le Web, après il faut faire afficher cette base de donnée de notre table « ApoCalypse»sur serveur. L’exécution de la page ne fera rien visuellement parlant, on peut simplement voir le résultat sur notre base de donnée directement en accédant au serveur MySql. Interaction PHP-MySql Page 6 Par D. SALIGNAT – A.COSKUN b) Récupération de variables via PHP On effectue cette fois une opération similaire à la précédente à la nuance prêt que le contenu des variables est donné par des fonctions PHP. Ces fonctions permettent de récupérer l’adresse IP d’une personne allant voir la page, son nom d’hôte, la date courante et le navigateur utilisé par cette même personne. <head> <body> <? //on crée nos variables et on les remplie via des fonctions php $ip=getenv("REMOTE_ADDR"); $host=gethostbyaddr($ip); $d=date("y:m:d"); $expl=getenv("HTTP_USER_AGENT"); //parametres de connexion au serveur $serveur="localhost"; $login="titi"; $pass="toto"; $base="dugm"; $table="recup_APO"; //connexion au serveur $id=MYSQL_CONNECT($serveur,$login,$pass); mysql_select_db($base); //on fait une requete avec les variables recuperees auparavant $query="INSERT INTO $table VALUES(0,'$ip','$host','$d','$expl')"; $result=mysql_query($query,$id); //on se deconnecte du serveur mysql_close($id); ?> </body> </head> P.S. : Quant on envoie ce fichier « php3 » avec un logiciels FTP il faut tout d’abord l’exécuter comme une page du Web en l’appelant, par exemple l’adresse de notre serveur est « vichy-universite.com » et notre base de donné s’appelle « dugm » et on demande notre fichier de php3 « recup_APO.php3 » en demandant de cet adresse http://www.vichy-universite.com/~dugm/recup_APO.php3 sur le Web, après il faut faire afficher cette base de donnée de notre table « recup_APO »sur serveur. L’exécution de la page ne fera toujours rien de visuellement parlant, on peut simplement voir le résultat sur notre base de donnée directement en accédant au serveur MySql. Interaction PHP-MySql Page 7 Par D. SALIGNAT – A.COSKUN c) Récupération de variables via HTML Maintenant nous allons voir un script complet. Les variables sont rentrés via un formulaire HTML, et on effectue un affichage sur la page. On a besoin donc une page « HTML » et une page « Php3 » Partie HTML (pour entrer en interaction avec le visiteur) <html> <head> <body> <form action="Affic_variables_APO.php3" method="post"> Nom a chercher : <input type="text" name="nomrecherche"> <input type="submit" value="rechercher"> </form> Partie PHP (pour effectuer la requête sur le serveur MySql et afficher le résultat) <? //parametres de connexion au serveur $nom_serveur="localhost"; $login_serveur="titi"; $pass_serveur="toto"; $nom_bd="dugm"; $nom_table="APO_annuaire"; //connexion au serveur $connexion=mysql_connect($nom_serveur,$login_serveur,$pass_serveur); mysql_select_db($nom_bd); echo"<br>$connexion<br>"; //on fait une requete avec la variable de notre formulaire html $query="select * FROM $nom_table WHERE nom LIKE '$nomrecherche%'"; $resultat=mysql_query($query,$connexion); //on va maintenant faire l’affichage //on regarde combien de lignes nous avons $nblignes=mysql_num_rows($resultat); //permets de connaître le nombre de lignes //affichage du resultat echo "nous avons $nblignes reponses <br>"; $ligne_courante = 0; while ($ligne_courante<$nblignes) { //recuperation du contenu de la ligne courante $leno=mysql_result($resultat,$ligne_courant, "numero"); $lenom=mysql_result($resultat,$ligne_courante, "nom"); $leprenom=mysql_result($resultat,$ligne_courante, "prenom"); $leage=mysql_result($resultat,$ligne_courante, "age"); $lesex=mysql_result($resultat,$ligne_courante, "sex"); //affichage du contenu de la ligne courante. Après echo dans ces " . " se trouve codes HTML //chaque $ veut dire une variable echo"numero=$leno NOM=$lenom PRENOM=$leprenom AGE=$leage SEX=$lesex <br>"; //on passe a la ligne suivante $ligne_courante++; Interaction PHP-MySql Page 8 Par D. SALIGNAT – A.COSKUN } //on se deconnecte du serveur mysql_close($connexion); ?> </body> </head> </html> On peut tout de même remarquer que la déconnexion au serveur aurait pu être effectuée juste après la requête car on ne lui demande plus aucune information par la suite. On peut le faire avec une jolie mise en page en initialisant le formulaire : <html> <head> <title>Base de donné APO avec tableau</title> <body bgcolor="#006666"> <form action="Affic_variables_tableau_APO.php3" method="post"> <table width="35%" border="0"> <tr> <td width="28%"><font color="#FFCC00">Nom </font></td> <td width="38%"> <input type="text" name="nomrecherche"> </td> <td rowspan="3" width="34%"> </td> </tr> <tr> <td width="28%"><font color="#FFCC00">Prénom : </font></td> <td width="38%"> <input type="text" name="prenomrecherche"> </td> </tr> <tr> <td width="28%"><font color="#FFCC00">Age :</font></td> <td width="38%"> <input type="text" name="agerecherche"> </td> </tr> <tr> <td width="28%"><font color="#FFCC00">Sex : </font></td> <td width="38%"> <input type="text" name="sexrecherche"> </td> <td width="34%"> <input type="submit" value="rechercher" name="submit"> </td> </tr> </table> </form> <? //Parti PHP echo"<font color='#FFCC00' size='4'>Vous avez saisi :</font><br> <table width='35%' border='0'> <tr> <td width='28%'><font color='#FF6600'>Nom</td> <td width='34%'> $nomrecherche </font><br></td> </tr> <tr> <td width='28%'><font color='#FF6600'>Prenom</td> <td width='34%'>$prenomrecherche </font><br></td> </tr> Interaction PHP-MySql Page 9 On demande et la réponse qu’on reçoit Par D. SALIGNAT – A.COSKUN <tr> <td width='28%'><font color='#FF6600'>Age</td> <td width='34%'>$agerecherche </font><br></td> </tr> <tr> <td width='28%'><font color='#FF6600'>Sex</td> <td width='34%'>$sexrecherche </font><br></td> </tr>"; if ( ($nomrecherche!="")||($prenomrecherche!="")||($agerecherche!="")||($sexrecherche!="") ) { // if permets de réinitialiser la boucle //parametres de connexion au serveur $nom_serveur="localhost"; $login_serveur="titi"; $pass_serveur="toto"; $nom_bd="dugm"; $nom_table="APO_annuaire"; //connexion au serveur $connexion=mysql_connect($nom_serveur,$login_serveur,$pass_serveur); mysql_select_db($nom_bd); echo"<br>$connexion<br>"; On demande //on fait une requete avec la variable de notre formulaire html $query="select * FROM $nom_table WHERE nom LIKE '$nomrecherche%' and prenom LIKE '$prenomrecherche%' and age LIKE '$agerecherche%'and sex LIKE '$sexrecherche%'"; $resultat=mysql_query($query,$connexion); //on va maintenant faire l’affichage //on regarde combien de lignes nous avons $nblignes=mysql_num_rows($resultat); //permets de connaître le nombre de lignes //affichage du résultat avec ECHO echo "<font color='#FFCC00'>Nous avons $nblignes reponses<br>"; $ligne_courante = 0; while ($ligne_courante<$nblignes) { //récupération du contenu de la ligne courante $leno=mysql_result($resultat,$ligne_courant, "numero"); $lenom=mysql_result($resultat,$ligne_courante, "nom"); $leprenom=mysql_result($resultat,$ligne_courante, "prenom"); $leage=mysql_result($resultat,$ligne_courante, "age"); $lesex=mysql_result($resultat,$ligne_courante, "sex"); et la réponse qu’on reçoit //affichage du contenu de la ligne courante. Après echo dans ces " . " se trouve codes HTML //chaque $ veut dire une variable echo" <table width='35%' border='0'> <tr> <td width='28%'><font color='#FFCC00'>Nom </font></td> <td width='38%'> <input type='text' name='nom' value='$lenom'> </td> <tr> <td width='28%'><font color='#FFCC00'>Prénom </font></td> <td width='38%'> <input type='text' name='prenom' value='$leprenom'> </td> <tr> <td width='28%'><font color='#FFCC00'>Age </font></td> Interaction PHP-MySql Page 10 Par D. SALIGNAT – A.COSKUN <td width='38%'> <input type='text' name='age' value='$leage'> </td> <tr> <td width='28%'><font color='#FFCC00'>Sex </font></td> <td width='38%'> <input type='text' name='sex' value='$lesex'> </td> </table><br>"; //on passe a la ligne suivante $ligne_courante++; } //on se deconnecte du serveur mysql_close($connexion); } ?> </body> </head> </html> Livre d’Or On remplie cette formulaire d’un livre d’or et on l’envoie Pour livre d’or on a besoin de 3 fichier : 1) APO_LivreDor.sql (la table) qui sert à conserver les données saisies 2) APO-index.php3 qui permet de saisir la formulaire et de l’envoyer vers APO_LivreDor.sql en via APO_livre.php3 3) APO_livre.php3 qui sert à insère des données (saisies de formulaire dans la table) APO_LivreDor.sql Le fichier APO-index.php3 <html> <head> <title>Livre d'Or APO</title> <body bgcolor="#006666"> //ouvrir la balise de formulaire et définir la méthode <form action="APO_livre.php3" method="post"> //où on envoie le contenu de formulaire <table width="40%" border="0"> <tr> <td width="31%"><font color="#FFCC00">Pseudo</font></td> <td width="69%"> <input type="text" name="Pseudo" size="40"> </td> </tr> <tr> <td width="31%"><font color="#FFCC00">Votre E-Mail : </font></td> <td width="69%"> <input type="text" name="Email" size="40"> </td> </tr> <tr> <td width="31%"><font color="#FFCC00">Commentaires</font></td> <td width="69%"> <textarea name="Commentaires" cols="75" rows="10"></textarea> </tr> <tr> <td width="31%"> </td> <td width="69%"> <input type="submit" value="Envoyer" name="submit"> </tr> </table> </form> //fermer la balise de formulaire Interaction PHP-MySql Page 11 Par D. SALIGNAT – A.COSKUN <? //partie PHP3 commence $connexion=mysql_connect("localhost","dugm","passdugm"); $db=mysql_select_db("dugm", $connexion); $query = "SELECT * FROM APO_LivreDor"; //afficher le contenue de la table $result= mysql_query($query); mysql_close($connexion); $nb = mysql_numrows($result); $i=0; while ($i<$nb) { $Pseudo = mysql_result($result,$i,"Pseudo"); $Email = mysql_result($result,$i,"Email"); $Commentaires = mysql_result($result,$i,"Commentaires"); et le fichier APO-index.php3 récupère les information (qui viennent d’être insérées dans la table APO_LivreDor ) à afficher dans la page APO-index.php3 echo("<b><i>Pseudo</i></b>: $Pseudo<BR>"); // sert à afficher le contenu echo("<b><i>E-Mail</i></b>: $Email<BR>"); // de APO_livre.php3 echo("<b><i>Commentaires</i></b>: $Commentaires<P>"); $i++; } ?> </body> </head> </html> le fichier APO_livre.php3 <META HTTP-EQUIV="Refresh" CONTENT="0; URL=http://www.vichy-universite.com/~dugm/APO-index.php3"> //on définit l’adresse de contenue récupérée à faire afficher <? //parti PHP3 $connexion=mysql_connect("localhost","dugm","passdugm"); $db=mysql_select_db("dugm", $connexion); // insérer des données saisies dans APO-index.php3 dans la table APO_LivreDor.sql $query = "INSERT INTO APO_LivreDor VALUES ('$Pseudo','$Email','$Commentaires');"; $result= mysql_query($query); mysql_close($connexion); $nb = mysql_numrows($result); $i=1; while ($i<$nb) { $Pseudo = mysql_result($result,$i,"Pseudo"); $Email = mysql_result($result,$i,"Email"); $Commentaires = mysql_result($result,$i,"Commentaires"); echo("Pseudo: $Pseudo<BR>"); echo("E-Mail: $Email<BR>"); echo("Commentaires: $Commentaires<P>"); Dès qu’on a envoyer notre formulaire, APO_livre.php3 récupère les informations et les insère dans la table de base de donnée $i++; ?> Interaction PHP-MySql Page 12 Par D. SALIGNAT – A.COSKUN MY SQL Liste de tables Modifier Afficher Insérer Interaction PHP-MySql Page 13 Par D. SALIGNAT – A.COSKUN