Algo. et développement web S2 (M2202) — TP #6

Liens utiles : CM #3 · TD #5 · TP #5

Dans le répertoire m2202 que vous avez déjà créé, ajoutez un répertoire nommé m2202-tp6 pour sauvegarder les exercices de cette séance (TP #6).

Dans ce répertoire m2202-tp6, créez un répertoire appelé exo1 pour le premier exercice, exo2 pour le deuxième, etc.

Vous devez rendre tous ces exercices. Pour cela, compressez (en format ZIP ou RAR) le répertoire m2202-tp6 et soumettez-le sur AMeTICE dans TP #6 - exercices à rendre.

Exercices

Exercice 1

Dans cette exercice vous allez modifier l'exercice 4 du TD #4 pour ajouter l'affichage des messages d'erreur.

Si l'utilisateur a mal rempli un des champs du formulaire (par exemple, le mot de passe est trop court), alors il est renvoyé vers la page d'accueil et un message affiche l'erreur qu'il a commis.

Bien entendu, vous devez utiliser une session pour communiquer entre le fichier qui fait la validation (validation.php) et la page du formulaire (index.php).

Exercice 2

Dans cette exercices vous allez faire une interface très simple (et moche) pour ajouter et supprimer des entrées dans une base de données.

Vous devez créer une table dans votre base de données avec quatre champs et ajouter deux entrées. Utilisez les instructions SQL suivantes :

CREATE TABLE tp6exo2 (
  id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 
  prenom VARCHAR(30), 
  nom VARCHAR(50), 
  age INT
);
INSERT INTO tp6exo2 (prenom, nom, age) VALUES ('Serge', 'Cotuand', '19');
INSERT INTO tp6exo2 (prenom, nom, age) VALUES ('Vivienne', 'Loineaux', '21');

Votre fichier index.php doit se connecter à la base de données et afficher toutes les entrées dans un tableau. À coté de chaque ligne, un lien permet de supprimer l'entrée. Tout en bas, un formulaire nous permet d'ajouter une nouvelle entrée.

Voici le code PHP pour faire ceci :

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>M2202</title>
  <style>
    table,
    td {
      border: 1px solid #333;
    }
    th {
      text-align: left;
    }
    thead,
    tfoot {
      background-color: #333;
      color: #fff;
    }
  </style>
</head>
<body>
  <table>
    <thead>
      <tr>
        <th>Prénom</th>
        <th>Nom</th>
        <th>Age</th>
        <th></th>
      </tr>
    </thead>
    <tbody>
<?php
// connexion à la BDD
$bdd = new PDO(
  'mysql:host=localhost;dbname=aldogl;charset=utf8', 
  'root', 
  '');
// requête SQL
$reponse = $bdd->query('SELECT * FROM tp6exo2');
// afficher les données
while ($donnees = $reponse->fetch()) {
  echo '<tr>';
  echo '<td>' . $donnees['prenom'] . '</td> ';
  echo '<td>' . $donnees['nom'] . '</td> ';
  echo '<td>' . $donnees['age'] . '</td> ';
  echo '<td><a href="supprimer.php?id=' . $donnees['id'] . '">🚫</a></td> ';
  echo '</tr>';
}
// terminer le traitement de la requête
$reponse->closeCursor();
?>
    </tbody>
  </table>
  <hr>
  <form method="post" action="ajouter.php">
    Prénom : <input type="text" name="prenom"><br>
    Nom : <input type="text" name="nom"><br>
    Âge : <input type="number" name="age"><br>
    <input type="submit" value="Ajouter">
  </form>
</body>
</html>

Il vous reste à faire deux choses :

  1. Implémenter la suppression d'une entrée dans un fichier appelé supprimer.php. Après la suppression dans la base de données, on renvoie l'utilisateur vers la page d'accueil.
  2. Implémenter l'insertion d'une entrée dans un fichier appelé ajouter.php. Après l'insertion dans la base de données, on renvoie l'utilisateur vers la page d'accueil.

Exercice

Montrer que la session est plus sécurisée que le cookie : on en peut pas voir sa valeur. Pour cela, on fait un jeu : le joueur a 30 seconds pour faire des clics (contrôlé par PHP et date). Quand il a fini, il voit le score et il décide de se loguer.
Si on le fait avec un cookie, on pourrait modifier sa valeur.

Exercice

Rendre l'exo 3 du TD #4 dynamique. Les gens peuvent s'inscrire, et on met ses données dans une BDD.

Exercice

Rendre l'exo 3 du TP #4 dynamique. On inscrit les étudiants et leurs notes avec un formulaire dans une base de données, et puis on les affiche. On fait quelque chose très similaire dans l'exo 3 du TD #5.

Exercice

Splitwise [lien] pondéré. C'est un exercice long, peut être un projet pour une autre année :

  1. Il y a des groupes de personnes qui vont partager un compte commun. Chaque fois qu'un d'eux paie une somme d'argent, il l'ajoute dans son groupe. On voit la liste des paiements, ainsi qu'une graphique avec ce que chacun a payé. Le but est de voir qui a payé plus, et qui doit de l'argent
  2. En plus, chaque membre du groupe a un poids : s'ils ne gagnent tous le même salaire, alors ils ne participent pas pareil. Donc, il faut appliquer une formule sur les paiements de chacun
  3. Il y a toute la gestion des groupes et utilisateurs. Un utilisateur s'enregistre et crée un groupe. Il a un lien pour partager avec les autres, et un mot de passe pour le groupe.

30 minutes pour le projet

Réservez les 30 dernières minutes pour travailler sur le projet.