Projet 6 : SQL Utilisation d'une base de données SQLite Objectifs Au terme de cet exercice, vous serez capables de : – d'utiliser PDO pour se connecter à une base de données SQLite – de préparer et exécuter des requêtes SQL en PHP – de lire les résultats envoyés par une requête SQL – De lire et modifier des données en SQL Enoncé Créer un jeu du pendu en AJAX. Le client web ne doit savoir que – les lettres trouvées – le nombre de lettres du mot – l'état de la potence – les lettres déjà proposées La partie PHP doit tirer un mot au hasard dans un fichier SQLite et, en fin de partie, mettre à jour les statistiques du mot (nombre de fois où je joueur a gagné et nombre de fois où il a perdu) Remarques Si une même lettre apparaît plusieurs fois, tous les exemplaires doivent être révélés en même temps. Les images sont numérotées de 00 à 11, 00 correspond au début de partie et 11 à la partie perdue. Ressources Les ressources suivantes sont disponibles sur le site http://cours.endor.be/AJAX_1ere et sur la plateforme Moodle de la catégorie économique http://elearning.eco.condorcet.be/moodle2X/ – common.js : librairie javascript de base – pendu.sqlite : fichier de base de données SQLite contenant les mots à proposer – img/penduxx.jpg : images de 00 à 11 avec la potence à différents niveaux de construction La base de données SQLite contient une table "mots" définie comme suit : id INTEGER AUTOINCREMENT Numéro du mot mot VARCHAR(16) trouve INTEGER Mot à trouver Nombre de fois où le mot a été trouvé rate INTEGER Nombre de fois où le mot n'a pas été trouvé Tous les id sont présents et commencent à la valeur 1. Cahier des tâches Les RPC en PHP Nouvelle partie Ce RPC doit choisir un mot au hasard dans la DB, générer une chaîne de caractères "-" de même taille, mettre le compteur de potence à 0, sauver toutes ces données dans la session et renvoyer au navigateur le nombre de lettres du mot (ou, au choix, la chaîne composée de "-") Proposition d'une lettre Ce RPC doit vérifier si la lettre apparaît dans le mot. Si c'est le cas, elle doit être "révélée" dans la chaîne composée de "-", sinon, l'état de la potence doit être augmenté de 1. Si la potence atteint le niveau 11, le joueur à perdu et le nombre de fois où le joueur a perdu pour le mot doit être augmenté de 1. Si toutes les lettres sont révélées, le joueur a gagné et le nombre de victoires pour le mot doit être augmenté de 1. Le RPC doit retourner au navigateur l'état de la potence et la chaîne composée de "-" et des lettres trouvées. Javascript Au début de partie, le javascript demandera au PHP de démarrer une nouvelle partie. Au retour, il affichera le tableau de jeu : l'image de la potence, le mot à trouver (la suite de "-") et la/les zones d'entrée qui permettra/permettront de choisir la lettre proposée (méthode de choix de la lettre à votre libre choix) Lorsqu'une lettre est choisie, elle sera envoyée au RPC. Le retour du RPC permettra de mettre l'écran de jeu à jour. Lorsque la partie est finie, le Javascript devra faire apparaître un bouton qui permettra de recommencer une partie ainsi qu'un texte indiquant si on a gagné ou perdu. Améliorations possibles Ces améliorations sont optionnelles et ne sont que des exemples d'améliorations pouvant être implémentées. D'autres voies d'améliorations non citées sont également possibles. – Conserver la liste des lettres déjà proposées – Affichage des statistiques du mot en fin de partie – Interface permettant d'ajouter des mots (attention à ne pas insérer un mot en double) – ... Astuce Pour former une chaîne de caractères contenant un nombre n sur deux chiffres, on peut prendre les 2 derniers caractères de la chaîne de caractères qui correspond à (100+n) Documentation des RPC Pour documenter les RPC, on utilisera un fichier texte pur (TXT, pas de traitement de texte) dans lequel on reprendra pour chaque RPC – Le nom du RPC – Les paramètres d'entrée (ainsi que le contenu attendu) – Les valeurs en sortie – Un bref descriptif de la tâche effectuée par le RPC Grille d'évaluation Domaine Critère Indicateur Forme Respect des consignes Le travail est remis dans les temps (avant le 12/3/2013) Les contraintes sont respectées Respect des standards Code lisible Le code est correctement indenté Les noms des variables sont explicites et respectent les règles de nommage Standards HTML et CSS La page n'utilise pas de balises HTML ou de récents respectés ? propriétés CSS dépréciées ou incorrectes Correction Erreurs Le programme tourne sans erreurs Résultat Les fonctionnalités implémentées effectuent bien les tâches demandées Complet Toutes les fonctionnalités demandées sont présentes Portabilité Le programme peut tourner sans problème sur tous les navigateurs récents Les chemins vers les ressources sont exprimés de façon relative et correspondent à la norme web Qualité de la Organisation programmation Les codes javascript et les feuilles de styles sont dans des fichiers séparés. Une arborescence logique est utilisée. Code propre Pas de répétition inutile de blocs de codes, de conditions, ... Pas de variables ou paramètres inutiles Les extensions des éléments statiques correspondent à leur contenu. Les extensions standards sont utilisées Design Elégance Les algorithmes utilisés sont efficaces et bien choisis. Affichages corrects Les affichages sont corrects, disposés de façon logique Absence d'artefacts de rendu (espacements, bordures,... dont la présence n'est pas voulue et nuit à l'affichage) Documentation RPC Documentés Les RPC AJAX sont documentés : nom, entrées, sorties, utilité,... ++ + +/- - Commentaire