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