Le document décortique une interaction HTML-PHP-SQL puis donne le corrigé pour les exercices 1 à 4. I Affichage du formulaire et envoi de données A gauche le code d'une page HTML et à droite son affichage dans un navigateur : <html> <body> <form action="http://rdorat.free.fr/produits.php" method="post"> LOGIN : <input type="text" name="login"> Choississez une catégorie de produit : CD : <input type="radio" name="produit" value="cd"> DVD : <input type="radio" name="produit" value="dvd"> livre : <input type="radio" name="produit" value="livre"> <input type="submit" value="identification"> </form> </body> </html> A noter que la page HTML peut avoir été récuperée depuis le serveur rdorat.free.fr, sur un autre serveur ou peut être stockée sur une machine locale. L'utilisateur remplit le formulaire : Lorsque l'utilisateur clique le bouton identification, le navigateur / client appelle la page http://rdorat.free.fr/produits.php avec le message suivant qui envoie les valeurs pour les variables du formulaire : login : produit : Dupont DVD
II-Execution de la page Produits.php La page PHP Produits.php est de cette forme : $login=$_post["login"]; $prod=$_post["produit"]; $requetesql="select nomprod, descriptif FROM Produit WHERE typeprod='$prod';"; $connect=mysql_connect("nomserveur","monlogin", "monpassword"); mysql_select_db("nomdb",$connect); $result=mysql_query($requetesql); echo "Les produits de type : $prod"; while($row[0]) echo "$row[0] : $row[1]\n";?> Les lignes s'exécutent l'une après l'autre : $login=$_post["login"]; $prod=$_post["produit]; $requetesql="select nomprod, descriptif FROM Produits WHERE typeprod='$prod';"; Après ces lignes, la variable $login contient "Dupont", la variable $prod contient "DVD", la variable $requetesql contient "SELECT nomprod, descriptif FROM Produit WHERE typeprod='dvd';". Les deux lignes suivantes permettent d'ouvrir une connexion avec un serveur de base de données et de sélectionner une base de données : $connect=mysql_connect("sql.free.fr","admin", "546787"); mysql_select_db("produit",$connect); Ici on se connecte au serveur sql.free.fr avec le login admin et le password 546787, puis on sélectionne la base de données "Produit". L'instruction $result=mysql_query($requetesql); appelle l'exécution de la requête contenue dans la variable $requetesql.
III- Exécution de la requête sur le serveur de base de données La base de données "Produits" sélectionnée est organisée de la manière suivante : Table Produit : nomprod descriptif typeprod Le nouveau testament Guitry DVD Mozart Requiem CD Lettres de Mon Moulin Daudet Livre Bataille Midway 180 minutes DVD Table achat : nomprod login possede Le nouveau testament Dupont 1 Mozart Dupont 0 Lettres de Mon Moulin Durant 1 Bataille Midway Durant 1 Bataille Midway Paul 0 Mozart Paul 1 L'exécution de la requête "SELECT nomprod, descriptif FROM Produit WHERE typeprod='dvd'; se fait alors selon 3 étapes : FROM Produit La table Produit est sélectionnée : nomprod descriptif typeprod Le nouveau testament Guitry DVD Mozart Requiem CD Lettres de Mon Moulin Daudet Livre Bataille Midway 180 minutes DVD WHERE typeprod="dvd" Les lignes sélectionnées sont : nomprod descriptif typeprod Le nouveau testament Guitry DVD Bataille Midway 180 minutes DVD SELECT nomprod,descriptif Le tableau final renvoyé est donc : nomprod Le nouveau testament Bataille Midway descriptif Guitry 180 minutes
IV- Suite et fin de l'exécution en php : La variable $result reçoit le résultat de la requête SQL : nomprod Le nouveau testament Bataille Midway descriptif Guitry 180 minutes L'instruction $row=mysql_fecth_row($result") conduit à ce que la variable $row contienne : Le nouveau testament Guitry echo "Les produits de type : $prod\n"; affiche "Les produits de type : DVD\n" dans la page HTML résultante : Les produits de type : DVD La boucle complète l'écriture du document, on obtient le code de page HTML renvoyée : Les produits de type : DVD Le nouveau testament : Guitry Bataille Midway : 180 minutes Cette page est enfin renvoyée au navigateur qui affiche : Les produits de type : DVD Le nouveau testament : Guitry Bataille Midway : 180 minutes
Exercice 1- Le code expliqué ligne à ligne Déclaration d un code php $ref=$_post["refproduit"]; Récupération de la variable refproduit $requetesql="select nomproduit, prix From Produit Where Création de la requête SQL ref= $ref "; $connect=mysql_connect("nomserveur","monlogin", Connexion au serveur "monpassword"); mysql_select_db("nomdb",$connect); Selection de la base de données $result=mysql_query($requetesql); Execution de la requête et récupération. $result est le tableau résultat Récupération de la première ligne du tableau résultat Echo "Les ( ) $row[0] de $ref"; Affichage dans la page HTML résultante Echo ""; Affiche d'une instruction de saut de ligne dans la page HTML résultante Echo "Le prix: $row[1] Affichage dans la page HTML résultante?> Balise de fermeture de php Exercice 2 le code expliqué mis en ligne $nom=$_post["nom"]; $prénom=$_post["prénom"]; $requetesql="insert into Connexion (nom,prénom) VALUES ( $nom, $prenom )"; $connect ( ) Mysql_select_db ( ) $result=mysql_query($requetesql); Récupération variable nom Récupération variable prénom Création de requête SQL / insertion en base Connection au serveur Selection de la base de données Exécution de la requete Exercice 3: simulation d'une connexion à la base de données La page HTML : <form action="a.php" method="post"> Login : <input type="text" name="login"> Password : <input type="text" name="password"> <input type="submit" value="envoi pour identification"> </form> La page a.php : <html> Echo "Saisissez votre login et votre mot de passe" $login=$_post["login"]; $pass=$_post["password"]; $requetesql="select count (*) login, password From Users Where login='$login' And password=''$pass';"; $connect=mysql_connect("nomserveur","monlogin", "monpassword"); mysql_select_db("nomdb",$connect); $result=mysql_query($requetesql); If($row >=1)
echo "identification reussie"; else echo "Connecté";?> </html> Exercice 4: $nom=$_post ["nom"] $requetesql1="select count (*) nom From Users Where nom='$nom'"; $requetesql2="insert into Users (nom) VALUES ( $nom );"; $connect=mysql_connect("nomserveur","monlogin", "monpassword"); Mysql_select_db("nomdb",$connect); $result1=mysql_query($requetesql1); If( $row >=1) Echo "Vous êtes identifiés"; Else $result2=mysql_query($requetesql2); Echo "Vous êtes désormais inscrit";?>