Mumulafrite Posté 26 Juin 2010 Posté 26 Juin 2010 Bonjour, je suis actuellement en train de faire un petit site pour une association et j'ai une petite question sur une petite requête à mettre en forme. voici ce que je cherche à faire: Afficher la prochaine réunion si la date n'est pas passée.Si date passée, afficher "pas de réunion programmée" voici mon code: <?php $db=connect_mysql();$sql = "SELECT * FROM agenda ORDER BY id DESC";$res = mysql_query($sql);$tab=mysql_fetch_array($res);?> <p align="center"><span class="Style1"><?php echo format_date($tab['date']); ?> </span><span class="Style2">à</span><span class="Style1"> <?php echo $tab['heure']; ?></span><br /><?php echo $tab['titre']; ?><br /><?php echo $tab['lieu']; ?><br /> Merci d'avance pour votre réponse.
captain_torche Posté 26 Juin 2010 Posté 26 Juin 2010 Si ta date est enregistrée au format mysql (aaaa-mm-jj), c'est très simple : <?php $db = connect_mysql(); $sql = "SELECT * FROM agenda ORDER BY date DESC": // Il est plus logique de trier par date, non ? Si tu n'enregistres pas les évènements dans l'ordre, ils apparaîtraient ainsi triés. $res = mysql_query($sql); while($tab = mysql_fetch_assoc($res)) { if(date('Y-m-d') < $tab['date']) echo '<p align="center">La réunion est passée</p>'; else { echo '<p align="center"><span class="Style1">'.format_date($tab['date']).'</span><span class="Style2">à</span><span class="Style1">'.$tab['heure'].'</span><br />'.$tab['titre'].'<br />'.$tab['lieu']'.<br /></p>'; } }?> Par ailleurs, ton code HTML me semble un peu confus ... Tu pourrais sans doute utiliser des balises ou une hiérarchie plus parlante que "Style1" et "Style2"
Mumulafrite Posté 26 Juin 2010 Auteur Posté 26 Juin 2010 Salut et merci pour ta réponse. J'ai trouvé ca sur le net qui à l'air de fonctionner: if (strtotime($date) < time()) {echo "dépassé";} else {echo "il te reste du temps";} Qu'en penses tu? Au fait c'est possible de repasser membre au lieu d'inactif je ne peux même plus modifier mon profil...
Mumulafrite Posté 26 Juin 2010 Auteur Posté 26 Juin 2010 Bon j'ai essayer ton code et j'ai virer la boucle qui m'afficher tout et pas uniquement le dernier rendez vous. Par contre maintenant j'ai un petit soucis, si dans ma base j'ai: reunion 1 le 8 juin (dépassé) reunion 2 le 14 juillet (à venir) réunion 3 le 15 septembre (à venir) il m'affichera à chaque fois la réunion 3 sachant que la 2 devrait être affichée. Merci d'avance $db=connect_mysql(); $sql="SELECT * FROM agenda ORDER BY date DESC"; // Il est plus logique de trier par date, non ? Si tu n'enregistres pas les évènements dans l'ordre, ils apparaîtraient ainsi triés. $res=mysql_query($sql); $tab=mysql_fetch_assoc($res); if(date('Y-m-d') > $tab['date']) echo '<p align="center">La réunion est passée</p>'; else { echo '<p align="center"><span class="Style1">'.format_date($tab['date']).'</span><span class="Style2">à</span><span class="Style1">'.$tab['heure'].'</span><br />'.$tab['titre'].'<br />'.$tab['lieu'].'<br /></p>'; } ?>
captain_torche Posté 26 Juin 2010 Posté 26 Juin 2010 Dans ce cas, tu devrais modifier ta requête comme suit : SELECT * FROM agenda WHERE date >= CURDATE() ORDER BY date ASC LIMIT 1 En gros, tu ne prends que les résultats dont la date est supérieure ou égale à la date du jour, tu les classes par date croissante et n'en prends que le premier.
Mumulafrite Posté 26 Juin 2010 Auteur Posté 26 Juin 2010 Super cela marche très bien ! Merci bcp pour ton aide
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant