Conception de sites web : examen final Jean-Baptiste.Vioix@u-bourgogne.fr 17 février 2006 Nom : Prénom : 1 Questions de cours (4 pts) Pour les questions de cours, rayez la ou les réponses fausses. 1.1 Langage XHTML 1.1.1 Première question Le ou lesquels des extraits de code ci-dessous est (sont) conforme(s) à la norme XHTML? Extrait 1 Extrait 2 Extrait 3 Extrait 1 : <ul> <li>premier élément <li>second élément <li>troisème élément </ul> Extrait 2 : <ul> <li>premier élément</li> <li>second élément</li> <li>troisème élément</li> </ul> Extrait 3 : <ul> <li>premier élément<\li> <li>second élément<\li> <li>troisème élément<\li> </ul> 1
1.1.2 Deuxième question Combien y-a-t-il de niveaux dans les entêtes de chapitre? Quatre : h1 à h4 Huit : h1 à h8 Six : h1 à h6 1.2 Le web dynamique 1.2.1 Première question PHP est un langage : interprété, compilé. 1.2.2 Deuxième question Quels éléments composent un serveur internet basé sur une plateforme L.A.M.P. : 1.2.3 Troisième question Expliquez la différence entre les opérateurs == et === : 2 Programmation (16 pts) Dans les morceaux de codes sources fournis, les lignes précédant et suivant l emplacement à compléter sont rappelées pour vous repérer dans le programme Dans le fichier Fonctions.php une erreur sans conséquence pour l examen est restée en ligne 115, il faut lire echo "...index.php?page=5..." à la place de echo "...index.php?page=enregistrer..." 2.1 Notation des recettes Le fichier Notes.php est supprimé du site. La fonction afficher_une_recette dans le fichier Fonctions.php est modifiée en conséquence : // début de la fonction rechercher_une_recette echo "<h2>recette proposée par : ".$auteur["nom"]."</h2>"; if(isset($_session["user"])){ 2
echo "<form action=\"index.php?page=8&id=$id\" method=\"post\">" ; echo "<fieldset>"; echo "<legend>je vote pour cette recette</legend> "; echo "Note (/5) : "; echo "<select name=\"note\" size=\"0\">"; echo "<option value=\"1\">1</option>"; echo "<option value=\"2\">2</option>"; echo "<option value=\"3\">3</option>"; echo "<option value=\"4\">4</option>"; echo "<option value=\"5\">5</option>"; echo "</select>"; echo "<input type=\"submit\" name=\"voter\" />"; echo "</fieldset>"; echo "</form>"; } // fin de la fonction rechercher_une_recette On rappelle que dans la base de données sont stockés la somme des notes (note) et le nombre de votes (nb_votes). Complétez la fonction noter_une_recette (placée dans le fichier Fonctions.php) et le fichier index.php. Ce fichier est à la fin du document. La fonction noter_une_recette doit : Verifier que la recette existe, Lire dans la base de données les données utiles, Mettre à jour les valeurs et les stocker dans la base de données. function noter_une_recette($id, $note){ 3
} 2.2 Classement des 10 meilleurs recettes La requête SQL ci dessous renvoie les 10 recettes ayant la meilleur moyenne, classées par ordre décroissant 1 : SELECT id, nom, note, nb_votes FROM recettes WHERE (nb_votes!=0) ORDER BY (note / nb_votes) DESC LIMIT 0, 9 Complétez la fonction afficher_les_meilleurs_recettes placée dans le fichier fonctions.php pour obtenir l affichage proposé par la figure 1. On souhaite un affichage proche de la fonction rechercher_une_recette avec en plus la note de la recette. FIG. 1 L affichage du classement des meilleurs recettes function afficher_les_meilleurs_recettes(){ 1 Si vous essayez cette requête modifiez le type du champ note de FLOAT en INTEGER 4
} 2.3 Recherche des recettes proposées par un auteur On souhaite pourvoir afficher toutes les recettes d un auteur. Le formulaire est construit par le fichier RechercherAuteur.php présenté ci-dessous. Complétez la fonction rechercher_les_recettes_par_auteur placée dans le fichier Fonctions.php ainsi que le fichier index.php. Le résultat obtenu devra afficher les recettes comme la fonction chercher_une_recette. La fonction rechercher_les_recettes_par_auteur doit Verifier que le nom existe, Lire dans la base de données les données utiles, Afficher le résultat. function rechercher_les_recettes_par_auteur($nom){ 5
} 2.3.1 Le fichier RechercherAuteur.php <h1>fiche de recherche des recettes d un auteur</h1> <form action="index.php?page=10" method="post"> <p>nom de l auteur : <input type="text" name="nom" size="30" maxlength="30"></p> <input type="submit" name="envoyer" /> <input type="reset" name="effacer" /> </form> 2.3.2 La partie du fichier index.php à modifier case 7: chercher_une_recette($_post["nom"],$_post["operation1"], $_POST["ingredient1"],$_POST["operation2"],$_POST[" ingredient2"],$_post["operation3"],$_post["ingredient3"], $_POST["supinf"],$_POST["temps"],$_POST["difficulte"]); break; case 8: break; case 9: require_once("php/rechercherauteur.php"); break; default: acceuil(); } 6