Aller au contenu

Sujets conseillés

Posté

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.

Posté

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" ;)

Posté

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...
Posté

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

Posté

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...