Files
2026-04-08 08:49:36 +02:00

4.6 KiB

TP 3 : Passage de paramètres à un script, PHP-MariaDB avec l'extension mysqli.

Le style utilisé dans les sources est picocss.

Ex1.

Le but est d'écrire un script php simulant le jeu de hasard pierre, feuille ciseaux (encore appelé chifoumi).

Le joueur joue en cliquant sur l'icone représentant le coup qu'il a choisi. Celui-ci est un lien vers le même script, auquel est passé en GET un paramètre représentant son choix. Par exemple :

<a href="?choice=0"><img href="rock.png"></a>
<a href="?choice=1"><img href="paper.png"></a>
<a href="?choice=2"><img href="scissors.png"></a>

Le script récupère le coup du joueur, fait un tirage aléatoire, et affiche les deux coups joués avec un message pour indiquer le résultat de la partie.

Le code est organisé sommairement suivant le pattern MVC. Le script index.php fait office de contrôleur.

  • il récupére le choix du joueur,
  • il fait jouer l'ordinateur (tirage aléatoire),
  • il calcule l'issue de la partie,
  • il affiche (include) les différentes parties de la vue finale, avec les variables nécessaires.

Remarque : pour éviter un code trop verbeux au niveau des tests pour calculer le résultat d'une partie, vous pouvez utiliser un tableau pour représenter les règles du jeu. Par exemple,

<?php
// 0 rock, 1 paper, 2 scissors
$rules = [ 0 => [ 0 => "Draw", 1 => "Loss", 2 => "Win"], ... ];

Ex2.

Avant de commencer

  • Vous diposez, sur le serveur mysql qui tourne sur la machine dwarves.iut-fbleau.fr, d'un compte identifié par votre login. Le mot de passe a été initailisé avec votre login. Pensez à le changer rapidement.
  • Vous disposez en lecture/écriture d'une seule base de données identifiée là encore par votre login.
  • Vous avez aussi accès à cette url à une interface web (phpmyadmin) de gestion de votre base.

Pour travailler, importez dans votre base les tables et leurs contenus

Artiste (idArtiste,nom,prenom,anneeNaiss)
         ---------
Genre (code)
       ----
Pays (code,nom,langue)
      ----
Film (idFilm,titre,annee,#idMes,#genre,resume,#codePays,urlImage)
      ------
Role (#idFilm,#idActeur,nomRole)
      ------- --------  -------

qui se trouvent dans le fichier cinema.sql. Vous pouvez directement l'importer à partir de phpmyadmin. Examinez les tables, leurs structures et relations.

Par pitié !

Testez directement vos requêtes sql avec phpmyadmin (ou autre) avant des les "intégrer" à php !

  1. Complétez le script films.php qui affiche la liste de tous les films de votre base sous forme d'une table html, classée par titre, avec l'année, le genre et le réalisateur.

    Conseils
    • le serveur tourne sur le serveur http, donc pour vous connecter, utiliser localhost comme nom.
    • Pour récuperer les informations demandées, pensez à faire une jointure entre Film et Artiste.
  2. Modifiez le script précédent afin de paginer l'affichage des films.

    Conseils
    • La clause LIMIT dans un SELECT permet de restreindre le nombre de résultats de la requête.

    • L'option SQL_CALC_FOUND_ROWS permet, en présence de la clause LIMIT, de savoir combien de resultats auraient été selectionnée en son absence.

    Il faut utliser juste après la requête la fonction MySQL FOUND_ROWS().

  3. Ajoutez dans le script précédent un formulaire avec une liste déroulante qui permet de filtrer les films par réalisateur.

    Conseils

    Il faut récupérer dans la table Artiste les réalisateurs, et peupler une liste déroulante. La valeur envoyé par le formulaire sera bien sûr l'identifiant du réalisateur.

    Faites en sorte, comme sur la capture d'écran, de réafficher la liste déroulante avec le nom du réalisateur dernièrement selectionné.

  4. On veut dans cette question, à partir de la liste, afficher le détail d'un film. Pour cela, chaque titre, dans le tableau, sera un lien qui conduira à la fiche du film. L'identifiant du film sera passé dans l'url du lien.

     <a href="./fiche.php?film=1">Vertigo</a>
    

  5. Pour ceux qui s'ennuient, faites en sorte que l'on puisse trier l'affichage sous forme de tableau par odre de titre, année, ou genre.