Bases du PHP

Pour ce TP, vous allez coder un script affichant les notes d'une promotion à un devoir imaginaire.

Téléchargez le squelette du TP: base-php_skel.zip et déposez le dans votre répertoire public_html

Vérifiez que vous pouvez accéder à la page index.php depuis votre navigateur en passant par le serveur Web; donc avec une URL commencant par http://localhost/

Un élève

  1. définissez une fonction métier generer_email($nom, $prenom) (donc dans inc/notes.inc). Cette fonction prends 2 strings en paramêtre et retourne une string contenant l'addresse émail sous la forme prenom.nom@unice.fr.
  2. dans notes.php, incluez le fichier inc/notes.inc et testez generer_email.
  3. définissez une fonction métier generer_etudiant($id) pour générer les informations d'un étudiant, $id servant juste de graine pour avoir des identifiants légèrement différent. La fonction retourne un tableau associatif ayant les clefs suivantes:
    • nom: le nom de l'étudiant. Dans la pratique ce sera "nom-$id"
    • prenom: le prénom de l'étudiant. Même principe de génération
    • genre: 0 pour un homme, 1 pour une femme. La valeur est choisie aléatoirement
    • email: l'émail de l'étudiant, généré par generer_email.
  4. définissez la fonction de présentation (donc dans inc/pres_notes.inc) format_nom($e). Cette fonction prends en paramêtre un tableau associatif décrivant un étudiant et retourne une string contenant le code HTML pour un lien permettant d'envoyer un email.
  5. dans notes.php, incluez inc/pres_notes.inc et testez vos fonctions generer_etudiant et format_nom

Une promotion

  1. définissez une fonction métier generer_promotion($nb). Cette fonction retourne un tableau de $nb étudiants ayant des identifiants différents.
  2. définissez une fonction de présentation listez_promotion($p). Cette fonction prends un tableau d'étudiants en paramêtre et retourne la liste des étudiants séparé par des virgules
  3. modifiez notes.php pour avoir quelque chose de semblable à la première sous-section de la correction.

Nous allons maintenant générer des notes pour chaque élève et les afficher dans un tableau.

  1. définissez la fonction generer_notes($promo, $inf, $sup). Cette fonction prends une liste d'étudiants en paramêtre et retourne un tableau associatif contenant les notes de chaque étudiant. La clef du tableau est l'émail de l'étudiant. La note est générée aléatoirement entre $inf et $sup.
  2. définissez la fonction afficher_notes($promo, $notes). Elle prends en paramêtre une liste d'étudiants et un tableau associatif de notes. Elle ne retourne rien mais affiche le tableau en HTML comme dans la correction.

On veut maintenant visualiser la distribution des notes telle que dans la correction.

  1. définissez une première fonction calculer_distribution qui retourne la distribution des notes sous la forme d'un tableau associatif. La clef est la note, la valeur est le nombre d'étudiants ayant eu cette note. Testez son bon fonctionnement
  2. définissez une fonction afficher_distributionpour afficher le code HTML représentant la distribution des notes par le biais de barres de progression.