Vous êtes sur la page 1sur 6

Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I.

Base de données
Soit la base de données BD-APP-00 comportant la table Magasins où est enregistré pour chaque
magasin : le code, la région, le responsable et le profit (bénéfice) du mois de Décembre :
Magasins(Code, Region, Responsable, Profit)
Ci-dessous le contenu de la table Magasins :
Code Region Responsable Profit
PV111 SE Si Ali 2501
PV222 NO Si Salah 8615
PV333 NE Si Mbarak 724
PV444 NE Si Omar 1700
PV555 SE Si Hammadi 10255
PV666 SO Si Salem 3507
PV777 SE Mme Massouda 4014
PV888 NE Si Ahmed 6410
PV999 SE Mme Imen 666
Le tableau ci-dessous indique la description des champs de la table Magasins :
Champ Type
Code Chaîne de 5 caractères
Region Chaîne de 2 caractères
Responsable Chaîne de 20 caractères
Profit Entier (Int)

Règles à respecter
1) Une page web qui comporte le moindre petit bout de code PHP, doit avoir l’extension .php (en
clair : si vous avez une page nommée index.htm et que vous y insérez du code PHP, il vous
faudra la renommer en index.php.
2) Un code PHP doit être délimité par les deux marqueurs <?php et ?>
3) Les variables en PHP commencent obligatoirement par le signe $
4) Chaque instruction en PHP se termine obligatoirement par un point-virgule.
5) Pour les variables, PHP est sensible à la casse ($var, $VAR et $vaR sont 3 variables
différentes)

© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com


Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I. 1

Question 01

Afficher le code, le responsable ainsi que le profit de chacune des magasins de la région du
sud-est (SE)

Réponse
Step01 : Connexion à MySql et sélection de la base de données :
mysql_connect("localhost","root");
mysql_select_db("BD-APP-00");
Step02-Version01 : Exécution de la requête :
$R=mysql_query("SELECT * FROM Magasins WHERE Region='SE'");
On peut aussi utiliser une variable intermédiaire pour y mettre la requête :
$Q="SELECT * FROM Magasins WHERE Region='SE'";
$R=mysql_query($Q);
La variable $R contiendra le résultat de l’exécution de la requête qui est une ressource MySql
illustrée par le schéma suivant :
$R
0 1 2 3
"Code" "Region" "Responsable" "Profit"
PV111 SE Si Ali 2501
0 1 2 3
"Code" "Region" "Responsable" "Profit"
PV555 SE Si Hammadi 10255
0 1 2 3
"Code" "Region" "Responsable" "Profit"
PV777 SE Mme Massouda 4014
0 1 2 3
"Code" "Region" "Responsable" "Profit"
PV999 SE Mme Imen 666

Note 1 : La ressource $R contient 4 tableaux.

Note 2 : Les tableaux sont à la fois indicés et associatifs (indices entiers et indices chaînes).

Note 3 : Chaque tableau contient une ligne de la table Magasins.


Note 4 : Seules les lignes dont la région est ‘SE’ sont retournées ( WHERE Region='SE')

© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com


Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I. 1
Step02-Version02 : Exécution de la requête :
Si on exécute la requête suivante :
$Q="SELECT Code, Responsable, Profit FROM Magasins WHERE Region='SE'";
$R=mysql_query($Q);

On aura comme résultat la ressource $R suivante :


$R
0 1 2
"Code" "Responsable" "Profit"
PV111 Si Ali 2501

0 1 2
"Code" "Responsable" "Profit"
PV555 Si Hammadi 10255

0 1 2
"Code" "Responsable" "Profit"
PV777 Mme Massouda 4014

0 1 2
"Code" "Responsable" "Profit"
PV999 Mme Imen 666

Step02-Version03 : Exécution de la requête :


Et pour la requête suivante :
$Q ="SELECT Code AS C, Responsable AS R, Profit as P
FROM Magasins WHERE Region='SE'";
$R=mysql_query($Q);
$R
On aura le résultat suivant :
0 1 2
"C" "R" "P"
PV111 Si Ali 2501

0 1 2
"C" "R" "P"
PV555 Si Hammadi 10255

0 1 2
"C" "R" "P"
PV777 Mme Massouda 4014

0 1 2
"C" "R" "P"
PV999 Mme Imen 666

© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com


Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I. 1
Step03 : Parcours et affichage du résultat $R
Reprenons la dernière ressource $R retournée ➔ ➔ ➔ ➔ 0 1 2
Pour pouvoir récupérer les données de la ressource $R, il "C" "R" "P"
faut absolument utiliser la fonction mysql_fetch_array PV111 Si Ali 2501
qui permet de retourner le tableau en cours et déplace le
pointeur vers le tableau suivant. 0 1 2
"C" "R" "P"
C’est-à-dire, pour pouvoir lire et afficher les quatre
tableaux de notre résultat, il nous faut exécuter la fonction PV555 Si Hammadi 10255
mysql_fetch_array($R) quatre fois, et après chaque 0 1 2
exécution on affiche les données : "C" "R" "P"
$T=mysql_fetch_array($R); PV777 Mme Massouda 4014
echo $T["C"]."#".$T["R"]."#".$T["P"];
//ce qui affichera "PV111#Si Ali#2501" 0 1 2
$T=mysql_fetch_array($R); "C" "R" "P"
echo $T["C"]."#".$T["R"]."#".$T["P"]; PV999 Mme Imen 666
//ce qui affichera "PV555#Si Hammouda#10255"
//On peut aussi utiliser les indces Entiers:
$T=mysql_fetch_array($R);
echo $T[0]."#".$T[1]."#".$T["P"];
//ce qui affichera "PV777#Mme Massouda#4014"
$T=mysql_fetch_array($R);
echo $T[0]."#".$T["R"]."#".$T[2];
//ce qui affichera "PV999#Mme Imen#666"
Concrètement, on utilise une structure itérative qui permet de parcourir la ressource.
Pour cela, deux méthodes se présentent :
Step03 : La méthode simple
On utilise la fonction mysql_num_rows pour déterminer le nombre de tableaux dans la ressource,
puis on utilise la boucle FOR :
//On détermine le nombre de tableaux dans la ressource $R
$N=mysql_num_rows($R);
//Boucle FOR
for($i=1; $i<=$N; $i++){
//Chaque itération, on lit un tableau et on affiche son contenu
$T=mysql_fetch_array($R);
echo $T["C"]."#".$T[1]."#".$T["P"];
}

Step03 : La méthode la plus simple


while($T=mysql_fetch_array($R)){
echo $T[0]."#".$T["R"]."#".$T["P"];
}

© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com


Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I. 1

Question 02

Vérifier l’existence d’un magasin dont son code est écrit dans une zone de texte nommée T1
et envoyée par un formulaire avec la méthode POST vers notre fichier PHP

Réponse
Step01 : Connexion à MySql et sélection de la base de données :
mysql_connect("localhost","root");
mysql_select_db("BD-APP-00");
Step02 : Récupération du code du magasin :
$Mag=$_POST["T1"];

Step03-Version01 : Vérification de l’existence du magasin Version 1


$Q ="SELECT COUNT(*) FROM Magasins WHERE Code='$Mag'";
$R=mysql_query($Q);
$R $R
Après exécution de la requête on aura le résultat suivant :
0 0
"COUNT(*)" "COUNT(*)"
1 0
Il reste à lire le tableau à partir de la ressource $R et
vérifier la valeur de la case COUNT(*) : Si le code existe Si le code n’existe pas

//Lecture du tableau
$T=mysql_fetch_array($R);
//Vérification de l'existence : $T["COUNT(*)"] ou $T[0]
if($T[0]){ echo"Magasin existant"; }
else { echo"Magasin inexistant"; }

Step03-Version02 : Vérification de l’existence du magasin Version 2


$Q ="SELECT * FROM Magasins WHERE Code='$Mag'";
$R=mysql_query($Q);

Après exécution de la requête on aura soit une ressource vide (si le code n’existe pas), soit une
ressource avec un seul tableau (si le code existe).
Pour vérifier l’existence, il suffit de savoir combien de tableau dans la ressource retournée (en
utilisant la fonction mysql_num_rows) :
//Vérification de l'existence
if(mysql_num_rows($R)){ echo"Magasin existant"; }
else { echo"Magasin inexistant"; }

© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com


Chapitre II : Pages Web Dynamiques. PHP & MYSQL: STEP BY STEP 4S.I. 1

Question 03

Afficher la somme des profits par région.

Réponse
Step01 : Connexion à MySql et sélection de la base de données :
mysql_connect("localhost","root");
mysql_select_db("BD-APP-00");

Step02-Version01 : Calcul et affichage de la somme des profits par région : Sans utiliser GROUP BY
//Sélection des différentes régions
$R1=mysql_query("SELECT DISTINCT Region FROM Magasins");
//Pour chaque région, on détermine et on affiche la somme des profits
While ($T1=mysql_fetch_array($R1)){
$Reg=$T1["Region"];
//**** On détermine la somme des profits de la région $Reg *******
$Q="SELECT SUM(Profit) AS S FROM Magasins WHERE Region='$Reg'";
$R2=mysql_query($Q);
$T2=mysql_fetch_array($R2);
//**** Affichage de la région en cours ainsi que la somme des profits
echo $Reg."#".$T2["S"];
}
Step02-Version02 : Calcul et affichage de la somme des profits par région : Avec GROUP BY
$Q="SELECT Region AS R, SUM(Profit) AS S FROM Magasins GROUP BY Region";
$R=mysql_query($Q);
While ($T=mysql_fetch_array($R)){
echo $T["R"]."#".$T["S"];
}

Question 04

Retrancher 1000 dinars du bénéfice de chaque magasin ayant un profit qui dépasse 5000
dinars, et afficher un message de succès ou d’échec de l’opération.

Réponse
Step02 : Calcul et affichage de la somme des profits par région :
$Q="UPDATE Magasins SET Profit=Profit-1000 WHERE Profit>5000";
$R=mysql_query($Q);
if($R) {echo "Opération réussite";}
else {echo "Opération échouée";}
© Lycée Attarine Ariana 2019-2020 Lycee.attarine@gmail.com

Vous aimerez peut-être aussi