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
| <?php
// Cast Query
$sql = <<<SQL
SELECT S.seriesId, CP.characterId AS charId, P.personId, seriesTitle, characterName AS charName, personName, appearanceOrder AS appOrder, period FROM CASTING AS C
JOIN SERIES AS S ON S.seriesId = C.seriesId
JOIN PERSON AS P ON P.personId = C.personId
JOIN CHAR_PLAYED AS CP ON CP.characterId = C.characterId
WHERE S.seriesId = :seriesId
ORDER BY period, appOrder
SQL;
$castQuery = $pdo->prepare($sql);
$castQuery->bindParam(':seriesId', $_GET['series'], PDO::PARAM_INT);
$castQuery->execute();
$rows = $castQuery->fetchAll();
if ($rows[0]['period'] == '') { // On vérifie si la colonne 'period' est vide
foreach ($rows as $row) { // Si la colonne 'period' est vide, la série n'a pas de périodes, on affiche la distribution normalement
$cast[$row['charName']][] = $row['personName'];
}
foreach ($cast as $char => $persons) {
echo '<p class="castAndCrew">', implode(' -> ', $persons), " : {$char}</p>";
}
} else { // Ici, la série à des périodes
if ($rows[0]['period'] == '0') { // On vérifie si un acteur est présent sur la totalité des périodes
echo "<p class='castAndCrew'>{$rows[0]['personName']} : {$rows[0]['charName']}</p>"; // C'est le cas, alors, on l'affiche en tête de la distribution, avant le premier en-tête de période
} // Ce n'est pas le cas, alors on affiche l'en-tête de période, suivi de la distribution pour cette période
foreach ($rows as $row) {
$cast[$row['period']][$row['charName']][] = $row['personName'];
}
foreach ($cast as $period => $chars) {
echo "<span class='castAndCrew'>{$period}</span>";
foreach ($chars as $char => $persons) {
echo '<p class="castAndCrew">', implode(' -> ', $persons), " : {$char}</p>";
}
}
}
?> |
Partager