This commit is contained in:
Denis Monnerat 2025-04-07 09:18:29 +02:00
parent 66239bdc85
commit c984310cc2
8 changed files with 849 additions and 0 deletions

@ -37,4 +37,104 @@ vous pouvez utiliser un tableau pour représenter les règles du jeu. Par exempl
$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](https://dwarves.iut-fbleau.fr/phpmyadmin/) à une interface web
> (phpmyadmin) de gestion de votre base.
Pour travailler, importez dans votre base les tables et leurs contenus
```sql
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.
![](./img/db.gif) 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.
![](./img/film.png)
<details><summary>Conseils</summary>
<div>
- 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.
</div>
</details>
2. Modifiez le script précédent afin de paginer l'affichage des films.
![](./img/film1.png)
<details><summary>Conseils</summary>
<div>
- 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()`.
</div>
</details>
3. Ajoutez dans le script précédent un formulaire avec une liste déroulante
qui permet de filtrer les films par réalisateur.
![](./img/film2.png)
<details><summary>Conseils</summary>
<div>
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é.
</div>
</details>
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>
![](./img/film3.png)
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.

File diff suppressed because one or more lines are too long

@ -0,0 +1,18 @@
table{
width:100%;
}
img{
width:500px;
}
td + td + td + td{
width : 20%;
}
td:first-child + td{
width:10%;
}
td:first-child{
width:30%;
}
td:first-child + td + td {
width:30%;
}

@ -0,0 +1,14 @@
<?php
include './modeles/modeleFilms.php';
$films = getFilms();
//
// on "charge" la vue
//
include './vues/header.php';
include './vues/vueFilms.php';
include './vues/footer.php';
?>

@ -0,0 +1,16 @@
<?php
function _getConnection()
{
static $_conn = NULL;
if ($_conn === NULL){
$_conn = mysqli_connect("localhost","","","");
}
return $_conn;
}
function getFilms()
{
// A completer
}
?>

@ -0,0 +1,3 @@
</main>
</body>
</html>

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Films</title>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"
/>
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<main class="container">

@ -0,0 +1,32 @@
<!--
Variables de la vue
$films : les films de la page
-->
<h2>Films</h2>
<table>
<thead>
<tr>
<th>Titre</th>
<th>Année</th>
<th>Genre</th>
<th>Réalisateur</th>
</tr>
</thead>
<tbody>
<?php
foreach($films as $film){
echo "
<tr>
<td><a href='#'>{$film['titre']}</a></td>
<td>{$film['annee']}</td>
<td>{$film['genre']}</td>
<td>{$film['prenom']} {$film['nom']}</td>
</tr>";
}
?>
</tbody>
</table>