Page 1 sur 1
HELP sur for() et While()
Posté : 21 févr. 2011, 01:22
par marc96
Bonjour,
Après moultes essais, je n'arrive p as à afficher ce que je veux;
Je me suis fait une base de donnée des films que je vois avec titre/Réalisateur/Année
J'aimerais afficher une filmo comme ceci :
2011
- titre du film 1
- titre du film 2
-...
2010
- titre du film 1
- titre du film 2
-...
etc
Voici mon code qui pose problème d'affichage :
for ($year=2050; $year>1900; $year--)
{$demande = "SELECT titre,realisateur,annee FROM films WHERE annee='$year' ORDER BY titre ASC";
$i = 0;
$sth = $db->query($demande);
if (DB::isError($sth)) {
die ($sth->getMessage());
}else{
while($rangee = $sth->fetchRow(DB_FETCHMODE_ASSOC))
{
$titre[$i] = $rangee['titre'];
$realisateur[$i] = $rangee['realisateur'];
$annee[$i] = $rangee['annee'];
$i++;
}
}
}
Merci de votre aide !!
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 01:37
par moogli
salut,
ou alors tu fait bien sql
"SELECT titre,realisateur,annee FROM films group by annee ORDER BY titre ASC
et pour l'affichage une variable "tampon" qui garde l'année traité et quand ça change tu affiche l'année.
par exemple
<?php
$annee='';
while ( ....) {
if ($annee !== $rangee['annee']) {
echo $rangee['annee'];
$annee = $rangee['annee'];
}
//affichage du reste normalement
}
?>
@+
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 02:04
par marc96
Bonjour,
Merci de ton aide, mais je ne vois pas trop ce que tu me dis.
Et le code "FROM films group by annee" est pas une norme reconnu visiblement... il me met "DB Error: syntax error"
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 02:22
par marc96
Je précise que pour l'affichage, j'appelle un TPL (templates), sur lequel j'inscris ceci :
{section name=j loop=$annee} {$annee[j]} <br> {$titre[j]} {/section}
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 02:24
par marc96
Au résultat, j'ai un affichage correcte de certaines années (en double) et d'un seul titre par année :
(....)
2006
Titre
2009
Titre
2009
Titre
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 02:47
par moogli
hum wé group by pas normalisé tu fait erreur
http://sqlpro.developpez.com/cours/sqlaz/ensembles/#L1
par contre à la relecture group by n'est pas approprié, par contre un order by annee,titre serais plus indiqué.
le plus simple etant de tester la requete directement sur le SGBD et ensuite de l'intégrer dans ton code.
le coup de la césure est à faire quelque soit la chose utilisée template ou pas il va donc te falloir refaire ce que j'ai mis au dessus dans ton template et non dans le code du while puisse que ce n'est pas lui qui affiche.
@+
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 09:51
par Mazarini
Bonjour,
Il faut gérer une rupture sur l'année.
De manière schématique :
$annee = 0
while ($data=mysql_fetch(...))
{
if ($annee<>$data['annee']) rupture($annee,$data);
$année = $data['annee'];
afficher_film();
}
if ($annee <> 0) echo '</table>';
function rupture($annee,$data)
{
if ($annee <> 0) echo '</table>';
echo $data['annee'];
echo '<table>';
}
function afficher_film($data);
{
echo '<tr><td>.........</td></tr>';
}
Re: HELP sur for() et While()
Posté : 21 févr. 2011, 10:50
par stealth35
Re: HELP sur for() et While()
Posté : 22 févr. 2011, 15:48
par marc96
Merci de votre aide,
mais ma page fonctionnant avec un TPL appellant les variables définies dans un fichier PHP, je ne peux pas fonctionner avec des "echo".
J'ai donc ma page PHP avec le script mentionné ci-dessus.
Puis mon templates avec le script mentionné ci-dessus;
L'affichage également mentionné ci-dessus ne me convient pas car il ne regroupe pas les années, et ne remonte qu'un titre à la fois.
Quelle erreur y a-t-il dans mes scripts actuels ?
Merci,
Re: HELP sur for() et While()
Posté : 22 févr. 2011, 16:02
par moogli
comme indiqué par tous les post : pas de césure sur l'année au niveau de l'affichage tu n'a pas le choix ton template affiche année et donnée associée !
si tu ne peut modifier le template dans ce sens alors ce que tu souhaite n'est pas réalisable car cela ce fait à l'affichage
@+