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";
?>