TP de PHP

Transcription

TP de PHP
Master Automatique et Systèmes Électriques
Spécialité Systèmes, Machines Autonomes et Réseaux de Terrain (SMaRT)
Travaux Pratiques de PHP
1. Pages dynamiques paramétrées.
1.1. Écrire un script mult1.php qui affiche la table de multiplication (de 0 à 10 fois) d’un nombre entier
(nommé multiplicande), transmis dans le paramètre nb (cf. figure 1.1). Dans ce premier exercice,
l’affichage se fait sous forme textuelle uniquement (pas de tableau HTML).
0*5=0
1*5=5
2 * 5 = 10
3 * 5 = 15
4 * 5 = 20
5 * 5 = 25
6 * 5 = 30
7 * 5 = 35
8 * 5 = 40
9 * 5 = 45
10 * 5 = 50
0 * 16 =
1 * 16 =
2 * 16 =
3 * 16 =
4 * 16 =
5 * 16 =
6 * 16 =
7 * 16 =
Figure 1.1 :
mult1.php?nb=5
0
16
32
48
64
80
96
112
0
1
2
3
4
5
6
Figure 1.2 :
mult2.php?nb=16&m=7
0
0
0
0
0
0
0
0
1 2 3
0 0 0
1 2 3
2 4 6
3 6 9
4 8 12
5 10 15
6 12 18
4
0
4
8
12
16
20
24
5
0
5
10
15
20
25
30
6
0
6
12
18
24
30
36
7
0
7
14
21
28
35
42
8
0
8
16
24
32
40
48
Figure 1.3 :
mult3.php?nb=8&m=6
1.2. Écrire un script mult2.php qui affiche toujours la table de multiplication d’un nombre entier transmis
dans le paramètre nb, mais en fournissant en plus le multiplicateur maximum m en paramètre. Dans ce
second exercice, on souhaite aussi que l’affichage se fasse sous forme de tableau HTML, dont les
cellules sont justifiées à droite (cf. figure 1.2).
1.3. Écrire un script mult3.php qui affiche une table de multiplication à deux entrées, chacune allant de 0 à
un nombre entier transmis en paramètre (multiplicande nb et multiplicateur m) (cf. figure 1.3). On
souhaite que l’affichage se fasse sous forme de tableau HTML, dont les cellules sont justifiées à droite
et comportant les nombres en entêtes (de 0 à nb en colonnes et de 0 à m en lignes).
2. Formulaires et méthode GET.
2.1. Écrire un formulaire form1.html (cf. figure 2.1(a)) dans lequel l’utilisateur peut saisir la valeur du
multiplicande nb avant d’appeler le script mult1.php (cf. figure 2.1(b)).

Figure 2.1(a) :
form1.html
0*7=0
1*7=7
2 * 7 = 14
…
Figure 2.1(b) :
mult1.php?nb=7
2.2. Écrire un formulaire form2.html (cf. figure 2.2(a)) dans lequel l’utilisateur peut saisir la valeur du
multiplicande (maximal) nb et du multiplicateur maximal m, et peut choisir le mode d’affichage de la
table de multiplication :
PAGES WEB DYNAMIQUES
1/4
Master Automatique et Systèmes Électriques
Spécialité Systèmes, Machines Autonomes et Réseaux de Terrain (SMaRT)
- soit de 0 à m fois le nombre nb (comme dans mult2.php) (cf. figure 2.2(b)) ;
- soit de 0 à m fois les nombres de 0 à nb (comme dans mult3.php) (cf. figure 2.2(c)).
Le nouveau script appelé ici, mult4.php, doit tester le mode choisi et réaliser l’affichage adéquat.
0*8=
1*8=
2*8=
3*8=
4*8=
5*8=
6*8=
7*8=
Figure 2.2(a) :
form2.html
0
8
16
24
32
40
48
56
Figure 2.2(b) :
mult4.php?nb=8&m=7&mode=1D
0
1
2
3
4
5
6
0
0
0
0
0
0
0
0
1 2 3
0 0 0
1 2 3
2 4 6
3 6 9
4 8 12
5 10 15
6 12 18
4
0
4
8
12
16
20
24
5
0
5
10
15
20
25
30
6
0
6
12
18
24
30
36
7
0
7
14
21
28
35
42
8
0
8
16
24
32
40
48
Figure 2.2(c) :
mult4.php?nb=8&m=6&mode=2D
2.3. Que se passe-t-il si l’utilisateur omet de saisir le multiplicande et/ou le multiplicateur, ou effectue des
saisies erronées dans ces champs de formulaire ? Compléter le script de traitement (mult4.php) pour le
rendre robuste à ces problèmes.
2.4. Une alternative est de n’exécuter le traitement que lorsque le formulaire a été correctement rempli. Pour
cela, le formulaire et son traitement doivent être regroupés dans un script PHP unique. Écrire ce script
(mult5.php), qui doit être redirigé sur lui-même (attribut action de la balise <form>), sauf lorsque
toutes les informations sont correctes (il exécute alors le traitement − ici, l’affichage de la table de
multiplication).
3. Accès à une base de données.
Dans cette partie, nous travaillons sur la base Etudiants
dont le schéma relationnel est donné ci-contre.
3.1. Écrire un script afficher_etu.php qui affiche toute la table etudiants de la base Etudiants sous forme de
tableau dans une page HTML (cf. figure 3.1).
Figure 3.1 :
afficher_etu.php
PAGES WEB DYNAMIQUES
Figure 3.2 :
afficher_etu_tri1.php?ch=sexe
Figure 3.3 :
afficher_etu_tri2.php?ch=sexe
2/4
Master Automatique et Systèmes Électriques
Spécialité Systèmes, Machines Autonomes et Réseaux de Terrain (SMaRT)
3.2. Modifier le script précédent en afficher_etu_tri1.php pour qu’il affiche la table etudiants dans l’ordre
croissant du champ dont le nom est fourni dans le paramètre ch du script (cf. figure 3.2).
3.3. Modifier le script précédent en afficher_etu_tri2.php afin d’offrir à l’utilisateur la possibilité de trier
selon un champ donné en cliquant sur l’entête de ce dernier transformé en hyperlien (cf. figure 3.3).
3.4. Écrire un script afficher_liste_etu.php qui propose une liste déroulante des étudiants présents dans la
table Etudiant (cf. figure 3.4).
Figure 3.4 : afficher_liste_etu.php
Figure 3.5 : afficher_infos_etu.php
3.5. Compléter le script précédent en afficher_infos_etu.php pour qu’il affiche les informations relatives à
l’étudiant choisi dans la liste (cf. figure 3.5).
a) Dans un premier temps, on crée un bouton « Ok » pour que l’utilisateur soumette son choix. Cette
donnée est envoyée au même script par la méthode GET (permet de vérifier qu’elle est bien
transmise). Quelle donnée (associée à l’attribut value des balises <option>) préconisez-vous de
transmettre ?
Remarque : pour le moment, quel que soit le choix de l’utilisateur, c’est toujours le premier étudiant
de la liste qui est sélectionné au chargement de la page.
b) Dans un second temps, on souhaite soumettre automatiquement le choix de l’utilisateur, le bouton
« Ok » devenant inutile. Pour cela, il faut utiliser le code javascript:submit(); dans l’attribut
OnChange de la balise <select>. De plus, les informations de l’étudiant doivent être affichées de sorte
que le code PHP soit valable quels que soient le nombre et les noms de champs. Utiliser pour cela les
fonctions mysqli_num_fields et mysqli_fetch_field_direct.
c) Dans un troisième temps, on souhaite faire en sorte que l’étudiant choisi par l’utilisateur soit
sélectionné par défaut dans la liste après soumission.
Figure 3.6 : afficher_notes_etu.php
PAGES WEB DYNAMIQUES
3/4
Master Automatique et Systèmes Électriques
Spécialité Systèmes, Machines Autonomes et Réseaux de Terrain (SMaRT)
3.6. Écrire un script afficher_notes_etu.php qui affiche une liste déroulante des étudiants présents dans la
base, ainsi que le relevé de notes de celui que l’utilisateur a choisi (cf. figure 3.6). On souhaite que la
moyenne s’affiche en rouge si elle est inférieure à 10.
3.7. Modifier le script précédent en modifier_notes_etu.php pour permettre à l’utilisateur de saisir de
nouvelles notes pour l’étudiant choisi (cf. figure 3.7).
Écrire le script de traitement (modifier_notes_etu_tr.php) de ce formulaire.
Figure 3.7 : modifier_notes_etu.php
3.8. Dupliquer à nouveau le script afficher_notes_etu.php en le renommant ajouter_note_etu.php.
Modifier celui-ci pour qu’il permette à l’utilisateur d’ajouter une nouvelle note pour l’étudiant choisi et
ce, uniquement si l’étudiant n’a pas encore de notes dans les 5 matières (cf. figure 3.8). Pour trouver les
matières dans lesquelles l’étudiant n’est pas encore noté, on utilisera des tableaux PHP et la fonction
array_diff_assoc.
Écrire le script de traitement (ajouter_note_etu_tr.php) de ce formulaire.
Figure 3.8 : ajouter_note_etu.php
PAGES WEB DYNAMIQUES
4/4