IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de donn�es Discussion :

Affichage des �pisodes d'une s�rie par saison


Sujet :

PHP & Base de donn�es

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2013
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 226
    Par d�faut Affichage des �pisodes d'une s�rie par saison
    Bonjour,

    Sur mon site, j'affiche une fiche pour chaque s�rie t�l�vis�e. Dans chaque fiche, un lien renvoie vers une page qui doit afficher les �pisodes de cette fa�on :
    Nom : episodes.jpg
Affichages : 242
Taille : 900,9 Ko

    Hors, je ne parviens pas � s�parer les saisons comme sur l'images ci-dessus.
    En fait, mon script ne me permet pas de faire appara�tre une bordure entre chaque saison.

    J'ai fait de nombreux essais, mais aucun n'est concluant.

    Voici mon code actuel qui, lui, m'affiche 4 fois le m�me �pisode.
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    	$titles = getTitle();
    	$episodeList = getEpisodes();
    	$seriesIdTest = getPageOnError();
     
    	if((isset($_GET['series'])) && ($_GET['series'] > 0) && ($_GET['series'] == $seriesIdTest)) { // If string is not empty then first test if string match the selection
    		$seriesIdTest = $_GET['series'];
    	} else { // If the test fails, return to greating page
    		header("Location: accueil.php");
    		ob_clean();
    		die();
    	}
    ?>
     
     
    <section class="series accueilContainer episodeSection col-10">
    	<article class="seriesRecord">
     
    		<!-- TITLE DISPLAY -->
    	  	<h1 class="episodesTitle epListTitle"><mark>EPISODES</mark></h1>
    	  	<h1 class="episodesTitle epListTitle"><mark><?php echo $titles['title']; ?><mark></h1>
     
    	  	<!-- EPISODES SECTION DISPLAY -->
     
    	  	<table class="episodeTable">
    			<?php
    				foreach ($episodeList as $episodes) {
    					$seasonEpisode[$episodes['seasonNumber']][$episodes['episodeId']][] = $episodes['seriesId'];		
    				}				
    					foreach ($seasonEpisode as $seriesSeason => $series) {
     
    						foreach ($series as $season => $episode) { ?>		 	
    							<tr class="seasonLine">	
    								<tr>
    									<td class="episodeCell episodeNumberCell"><span class="episodes"><?php echo $episodes['epNumber']; ?></span></td>
    									<td class="episodeCell episodeSeasonCell"><span class="episodes"><?php echo $episodes['seasonNumber']."-".$episodes['seasonEpNumber']; ?></span></td>
    									<td class="episodeCell episodeOrigCell"><span class="episodes"><?php echo $episodes['episodeTitle']; ?></span></td>
    									<td class="episodeCell episodeFrenchCell"><span class="episodes"><?php echo $episodes['frenchEpisodeTitle']; ?></span></td>
    								</tr>
    			<?php 	} ?>
    							</tr>
    			<?php	} ?>
    	  	</table>
     
      	</article>
    </section>

    Quelqu'un aurait-il une id�e, SVP ?

  2. #2
    Expert confirm� Avatar de Toufik83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par d�faut
    Bonjour,

    Il va falloir nous montrer les valeurs des tableaux utilis�s, chose qu'on ne peut pas deviner...

    S'il vous plait, mettez des var_dump($episodeList);var_dump($seasonEpisode); apr�s la fin des boucles, et coller le r�sultat ici

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2013
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 226
    Par d�faut
    Bonjour,

    Entre temps, j'ai trouv� une solution.

    Le code PHP pour l'affichage des �pisodes :
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    	$titles = getTitle();
    	$episodeList = getEpisodes();
    	$seriesIdTest = getPageOnError();
     
    	if((isset($_GET['series'])) && ($_GET['series'] > 0) && ($_GET['series'] == $seriesIdTest)) { // If string is not empty then first test if string match the selection
    		$seriesIdTest = $_GET['series'];
    	} else { // If the test fails, return to greating page
    		header("Location: accueil.php");
    		ob_clean();
    		die();
    	}
    ?>
     
    <section class="series accueilContainer episodeSection col-10">
    	<article class="seriesRecord">
     
    		<!-- TITLE DISPLAY -->
    	  	<h1 class="episodesTitle epListTitle"><mark>EPISODES</mark></h1>
    	  	<h1 class="episodesTitle epListTitle"><mark><?php echo $titles['title']; ?><mark></h1>
     
    	  	<!-- EPISODES SECTION DISPLAY -->
     
    	  	<table class="episodeTable">			
    <?php
    			foreach ($episodeList as $episodes) {
    ?>
     
    		 		<tr class="seasonLine">
    <?php
    		 		foreach($episodes as $row) {
    ?>
    					<tr>
    						<td class="episodeCell episodeNumberCell"><span class="episodes"><?php echo $row['epNumber']; ?></span></td>
    						<td class="episodeCell episodeSeasonCell"><span class="episodes"><?php echo $row['seasonNumber']."-".$row['seasonEpNumber']; ?></span></td>
    						<td class="episodeCell episodeOrigCell"><span class="episodes"><?php echo $row['episodeTitle']; ?></span></td>
    						<td class="episodeCell episodeFrenchCell"><span class="episodes"><?php echo $row['frenchEpisodeTitle']; ?></span></td>
    <?php			} ?>
     
    					</tr>
    <?php		} ?>
     
    				</tr>
    	</table>
      	</article>
    </section>

    Et la requ�te :
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function getEpisodes() {
            global $pdo;
            global $seriesId;
            $sql = <<<SQL
    	    SELECT S.seriesId, E.episodeId, E.episodeNumber epNumber, E.seasonEpisodeNumber seasonEpNumber,
    		E.episodeTitle, FE.frenchEpisodeTitle, SN.seasonNumber
    		FROM EPISODE AS E
    		JOIN SERIES AS S ON S.seriesId = E.seriesId
    		JOIN FOREIGN_EPISODE AS FE ON FE.episodeId = E.episodeId
    		JOIN SEASON AS SN ON SN.seasonId = E.seasonId
    		WHERE S.seriesId = ?
    		GROUP BY seasonNumber, seasonEpisodeNumber
    		ORDER BY seasonNumber, episodeNumber, seasonEpisodeNumber
    		SQL;
     
    	$stmt = $pdo->prepare($sql);
    	$stmt->execute([ $seriesId ]);
    	$data = [];
    	foreach($stmt as $row) {
    		$row['epNumber'] = str_pad($row['epNumber'], 2, '0',STR_PAD_LEFT);
    		$row['seasonEpNumber'] = str_pad($row['seasonEpNumber'], 2, '0',STR_PAD_LEFT);
    		$data[$row['seasonNumber']][] = $row;
    	}
    	return $data;
    }

  4. #4
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par d�faut
    Bonjour,

    Cette derni�re requ�te est invalide et tout autre SGBD que MySQL l'aurait rejet�e, car la clause GROUP BY est incoh�rente avec la clause SELECT.
    Toutes les colonnes ne faisant l'objet d'aucun calcul d'agr�gat doivent �tre dans la clause GROUP BY.
    Si le but est de d�doublonner, alors il faut utiliser la clause DISTINCT

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Ao�t 2013
    Messages
    226
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2013
    Messages : 226
    Par d�faut
    Effectivement, je m'avan�ait un peu quand je disait que �a fonctionnait.

    Il fallait effectivement supprimer la clause GROUP BY.

    Si le but est de d�doublonner, alors il faut utiliser la clause DISTINCT
    Il ne s'agit pas de d�doblonner, mais simplement de grouper les �pisodes de chaque saison dans une cellule diff�rente.

  6. #6
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 602
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 602
    Billets dans le blog
    10
    Par d�faut
    La clause GROUP BY sert � calculer des agr�gats : SUM(), MIN(), MAX(), AVG() et COUNT(). On peut y associer la restriction HAVING pour filtrer sur le r�sultat de l'agr�gation.
    Dans votre cas, il n'y a aucune raison d'utiliser GROUP BY.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 09/09/2014, 09h39
  2. Limiter l'affichage des elements d'une base par date
    Par john85 dans le forum ASP.NET MVC
    R�ponses: 0
    Dernier message: 22/06/2011, 22h26
  3. R�ponses: 4
    Dernier message: 09/02/2011, 17h00
  4. Affichage des chiffres dans une phrases arabe
    Par omda dans le forum Oracle
    R�ponses: 4
    Dernier message: 30/09/2005, 13h36
  5. R�ponses: 2
    Dernier message: 29/11/2004, 12h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo