Interro PHP
Réponse AJAX

Afficher la liste des chaines télé (étape importante)

L'interro porte sur les programmes qui passent en ce moment à la télévision. Il vous sera utile de voir la base de données (pour connaitre le nom des tables et le nom des champs) en vous connectant :
- cliquez ici : phpmyadmin
- login : sig
- mdp : sig
- nom de la base de données : epg.
- nous allons travailler uniquement avec les tables epg_channel (liste des chaines télé) et epg_programme (liste des programmes diffusés sur les chaines).

Vous devez commencer par afficher la liste des chaines de télévision (13eRue - 2MMonde - 6ter.fr - 8MontBlanc, etc.), de la même façon qu'on a affiché la liste des films en TP.

La fonction PHP pour se connecter à cette base de données est :
$CO = mysqli_connect("sql.bts-sio.com", "sig", "sig", "epg");

Pour rappel, les quatre étapes pour afficher le contenu d'une base de données sont :
$sql = "select * from table"; // Étape 1 : construction de la requête
$rs_enregistrements = mysqli_query($CO, $sql) or die(mysqli_error($CO)); // Étape 2 : exécution de la requête et récupération du jeu d'enregistrements
while ($enregistrement = mysqli_fetch_assoc($rs_enregistrements)) // Étape 3 : parcours de chaque enregistrement
{ // Étape 4 : traitement de chaque enregistrement, en général (et c'est le cas dans cette interro) ce traitement consiste à de l'affichage grâce à 'echo'
    $champ = $enregistrement['nom-du-champ'];
    echo $champ;
}

Copiez ici votre code PHP qui permet d'afficher les chaînes de télévision :

Votre réponse n°1

Améliorer l'affichage des chaines télé (étape non-bloquante)

Grâce à la technique que je vous ai montrée en cours, basée sur une variable $premier, soignez l'affichage des chaines pour obtenir le résultat suivant (notez l'importance des virgules et du point final) :
chaine1, chaine2, chaine3, ..., chaineX.

Rappel de la technique :
$premier = true;
while (...)
{
    ...
    $premier = false;
}

Si vous ne visualisez pas exactement le résultat attendu, vous pouvez le voir en bas du menu vert de mon site EPG.

Copiez ici votre code PHP qui permet d'afficher proprement les chaînes de télévision :

Votre réponse n°2

Transformer les chaines télé en liens hypertextes (étape importante)

Le but, au final, va être d'afficher les programmes de la chaine sur laquelle l'internaute va cliquer. Je clique sur Arte.fr, je vois s'afficher les programmes diffusés sur la chaine ARTE.

La première étape est de transformer l'affichage des chaînes pour en faire un lien hypertexte (avec la balise <a ...>)

Vous devez donc maintenant transformer l'affichage pour afficher non plus (l'exemple est pour la chaine ARTE mais ça doit s'appliquer à toutes les chaines) :
Arte.fr
Mais vous devez afficher :
<a href=?cha_id=Arte.fr>Arte.fr</a>
Arte.fr est la clé primaire de la chaine (le champ s'appelle cha_id).

Copiez ici votre code PHP qui permet d'afficher les chaînes de télévision sous forme de lien hypertexte :

Votre réponse n°3

Afficher les icones des chaines télé (étape non-bloquante)

Dans la base de données, pour certaines chaines télé, l'URL de l'icone est renseigné. Le champ s'appelle cha_icon (un peu comme pour les films, où on avait le champ film_url_affiche, qu'on affichait sous forme d'image).

Faites en sorte que si le champ cha_icon n'est pas vide (if (!empty(...))), alors vous affichez l'icone au lieu d'afficher le nom de la chaine

Si vous ne visualisez pas exactement le résultat attendu, vous pouvez le voir dans la liste des programmes de mon site EPG.

Copiez ici votre code PHP qui permet d'afficher les logos des chaînes de télévision :

Votre réponse n°4

Afficher la liste des programmes (étape importante)

Étape (presque) finale : quand on a cliqué sur une chaine, le site affiche les programmes diffusés par cette chaine. Par exemple, si je clique sur TF1, je vois s'afficher les programmes diffusés par TF1.

Comment faire ? Puisque les chaines sont affichées sous forme de lien hypertexte, vous disposez de la variable $_GET['cha_id']. Si cette variable existe, vous faites une requête SQL sur la table epg_programme qui va ressembler à ça :
Select * from epg_programme where pro_channel_id = 'TF1.fr' order by pro_start
TF1.fr est à remplacer, bien sûr, par l'identifiant de la chaine sur laquelle on a cliqué ($_GET['cha_id']).

Copiez ici votre code PHP qui permet d'afficher les programmes télé de la chaîne de télévision sélectionnée :

Votre réponse n°5

Bonus 1 : améliorer la présentation (étape bonus)

Votre truc marche ? C'est bien, mais franchement... c'est moche ! Puisqu'il vous reste 1h30, profitez-en pour améliorez la présentation avec un peu de HTML et de CSS.

Copiez ici le code de la version jolie :

Votre réponse n°6

Bonus ultra : un peu d'Ajax ? (étape bonus ultra réservée aux killers)

Non, ça c'est pas pour vous, c'est seulement pour ceux qui veulent plus de 20/20.

Il suffit d'afficher les programmes télé grâce à une requête Ajax, sans recharger la page.

Collez ici votre code du killer de la mort qui tue :

Votre réponse n°7