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&eacute; 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%">&nbsp; </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%">&nbsp;</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