HELP sur for() et While()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : HELP sur for() et While()

Re: HELP sur for() et While()

par moogli » 22 févr. 2011, 16:02

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

@+

Re: HELP sur for() et While()

par marc96 » 22 févr. 2011, 15:48

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()

par stealth35 » 21 févr. 2011, 10:50

Re: HELP sur for() et While()

par Mazarini » 21 févr. 2011, 09:51

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()

par moogli » 21 févr. 2011, 02:47

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()

par marc96 » 21 févr. 2011, 02:24

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()

par marc96 » 21 févr. 2011, 02:22

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()

par marc96 » 21 févr. 2011, 02:04

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()

par moogli » 21 févr. 2011, 01:37

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
}
?>

@+

HELP sur for() et While()

par marc96 » 21 févr. 2011, 01:22

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 !!