Algorithmique et développement web S2 (M2202) – TP #5-6

Dans ces deux séances de TP, vous n'avez qu'un seul exercice à faire. Réservez ensuite au moins une heure pour travailler sur le projet de M2202/M2206.

TP #5

Exercice 1

Vous allez améliorer l'exercice 1 du TD #4 en utilisant une base de données.

Au lieu d'enregistrer les noms et les mots de passe en dur dans le code PHP, utilisez une base de données. Vous pouvez la créer avec phpMyAdmin ou avec le script SQL suivant :

CREATE TABLE tp5exo2 (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  nom VARCHAR(50),
  mdp VARCHAR(50)
);
INSERT INTO `tp5exo2` (`id`, `nom`, `mdp`) VALUES (NULL, 'aldo', 'aaa');
INSERT INTO `tp5exo2` (`id`, `nom`, `mdp`) VALUES (NULL, 'ricardo', 'bbb');
INSERT INTO `tp5exo2` (`id`, `nom`, `mdp`) VALUES (NULL, 'zohra', 'ccc');
INSERT INTO `tp5exo2` (`id`, `nom`, `mdp`) VALUES (NULL, 'ilyass', 'ddd');

Faites un requête préparée pour voir si le mot de passe est dans la table. Au lieu d'utiliser une boucle while, il suffit d'utiliser une structure if :

...
if ($row = $sth->fetch()) {
  // le nom est dans $row['nom'];
} else {
  // le mot de passe n'est pas dans la table
}
...

TP #6

Exercice 1*

Dans cet exercice vous allez faire un site web dynamique qui permet de voter de façon anonyme entre deux choix : les bien et le mal.

Pour sauvegarder les votes, on utilisera une table d'une base de données avec deux entrées. Le script SQL pour la créer et l'initialiser est le suivant :

CREATE TABLE tp6exo1 (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
  cote TEXT(4),
  votes INT
);
INSERT INTO `tp6exo1` (`id`, `cote`, `votes`) VALUES (NULL, 'bien', 0);
INSERT INTO `tp6exo1` (`id`, `cote`, `votes`) VALUES (NULL, 'mal', 0);

La page d'accueil affiche le nombre de votes pour le bien et pour le mal, respectivement. En bas, un formulaire avec deux boutons radio permet d'ajouter un vote. Le code HTML généré doit ressembler à ceci :

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>M2202</title>
</head>
<body>
  <h1>TP #6 / Exo 1</h1>
  <p>Bien : 123</p>
  <p>Mal : 159</p>
  <form method="post" action="traitement.php">
    <input type="radio" name="choix" id="radio_1" value="bien">
    <label for="radio_1">Bien</label>
    <input type="radio" name="choix" id="radio_2" value="mal">
    <label for="radio_2">Mal</label>
    <input type="submit" value="Valider">
  </form>
</body>
</html>

Dans le fichier traitement.php, on modifie la table en fonction de ce que l'utilisateur a choisi. Utilisez une requête préparée pour cela.