Le document décortique une interaction HTML-PHP-SQL puis
Transcription
Le document décortique une interaction HTML-PHP-SQL puis
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"> <br></br> Choississez une catégorie de produit : <br></br> CD : <input type="radio" name="produit" value="CD"> <br></br> DVD : <input type="radio" name="produit" value="DVD"> <br></br> livre : <input type="radio" name="produit" value="livre"> <br></br> <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 : Dupont produit : DVD II-Execution de la page Produits.php La page PHP Produits.php est de cette forme : <?php $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); $row=mysql_fetch_row($result); echo "Les produits de type : $prod<br></br>"; while($row[0]) { echo "$row[0] : $row[1]<br></br>\n"; $row=mysql_fetch_row($result); } ?> Les lignes s'exécutent l'une après l'autre : $login=$_PO ST["login"]; $prod=$_POST["produit]; $requeteSQL="SEL ECT 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 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 Table achat : 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 nomProd descriptif typeProd Le nouveau testament Guitry DVD Bataille Midway 180 minutes DVD WHERE typeProd="DVD" Les lignes sélectionnées sont : SELECT nomProd,descriptif Le tableau final renvoyé est donc : nomProd descriptif Le nouveau testament Guitry Bataille Midway 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 descriptif Le nouveau testament Guitry Bataille Midway 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<br></br>\n"; affiche "Les produits de type : DVD<br></br>\n" dans la page HTML résultante : Les produits de type : DVD<br></br> La boucle complète l'écriture du document, on obtient le code de page HTML renvoyée : Les produits de type : DVD<br></br> Le nouveau testament : Guitry<br></br> Bataille Midway : 180 minutes<br></br> 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 <?php 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 $row=mysql_fetch_row($result); Récupération de la première ligne du tableau Echo "Les (…) $row[0] de $ref"; Affichage dans la page HTML résultante Echo "<br></br>"; Affiche d'une instruction de saut de ligne dans la le tableau résultat résultat 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"]; Récupération variable nom $prénom=$_POST["prénom"]; Récupération variable prénom $requeteSQL="Insert into Connexion (nom,prénom) VALUES Création de requête SQL / insertion en base $connect (…) Connection au serveur Mysql_select_db (…) Selection de la base de données $result=mysql_query($requeteSQL); Exécution de la requete (‘$nom’,’$prenom’)"; 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"><br></br> Password : <input type="text" name="password"><br></br> <input type="submit" value="Envoi pour identification"> </form> La page a.php : <html> <?php 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); $row=mysql_fetch_row($result); If($row >=1) { echo "identification reussie"; } else { echo "Connecté"; ?> } </html> Exercice 4: <?php $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); $row=mysql_fetch_row($result); If( $row >=1) { Echo "Vous êtes identifiés"; } Else { $result2=mysql_query($requeteSQL2); } Echo "Vous êtes désormais inscrit"; ?>