Boucle "While" et séparateur

myHemi
Invité n'ayant pas de compte PHPfrance

16 janv. 2012, 23:25

Bonjour à toutes et à tous,

J'ai beau me creuser la tête et compte tenu de mon niveau PHP, je bloque... Voici ma problématique :
- J'ai une table (SQL) avec trois champs : jour (INT), mois (INT) et titre (VARCHAR).
- Sur ma page, j'effectue un affichage trié (ORDER BY mois,jour) via une boucle WHILE (ce qui donne un classement par date, quoi...). Les enregistrements sont affichés les uns en dessous des autres. Jusque là, no problem!

Ce que j'aimerai faire :
- Mettre un séparateur (</hr>) à chaque changement de mois et c'est ici que je sèche...
- Une idée ?

Merci d'avance !

@+

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

17 janv. 2012, 09:40

salut,

enregistre le mois précédent dans une variable puis un simple if pour l'affichage
<?php
$tmp= null;
while ( ) {
if ($tmp != $mois){
if ($tmp != null) echo '<hr />';
$tmp = mois;
}
//blabla
}
?>
@+
Il en faut peu pour être heureux ......

myHemi
Invité n'ayant pas de compte PHPfrance

17 janv. 2012, 14:37

Hello!

...effectivement, vu sous cet angle ça paraît simple !

Juste une petite correction :

Code : Tout sélectionner

<?php $tmp= null; while ( ) { if ($tmp != $mois){ if ($tmp = null) echo '<hr />'; $tmp = $mois; } //blabla } ?>
Merci pour l'aide ! ;-)

@+

ViPHP
xTG
ViPHP | 7331 Messages

17 janv. 2012, 15:33

Non c'est bien un != et non une affectation (à moins que tu voulais une comparaison ? == ).
Ce test est là pour ne pas afficher de balise hr avant la première occurrence.

myHemi
Invité n'ayant pas de compte PHPfrance

17 janv. 2012, 20:32

J'ai effectivement effectué une comparaison. Mea Culpa...

Mammouth du PHP | 2278 Messages

18 janv. 2012, 19:22

Quelle idée de ne pas avoir un champ mysql DATE.
Il permettrait sûrement beaucoup de choses, y compris celles que tu n'as pas encore prévues, par exemple comparer deux dates...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD