Requete d'affichage sql/php

Eléphanteau du PHP | 33 Messages

25 nov. 2010, 06:05

Bonjour,

J'ai une petite question concernant une requête en PHP.

J'ai une base de données d'évènements, et je voudrais afficher en page d'accueil de mon site le prochain evenements à venir.
Pour l'instant j'ai une fonction qui affiche l'évènement du jour et "Pas d'évènement" s'il n'y a rien...
function affichageEvent()
	{
		$c = connection("base");
		$sql = "select * from table where date='".date("Y-m-d")."'";
		$res = execution($c,$sql);
		$nbEvent = mysql_num_rows($res);
		
		if($nbEvent>0)
		{
			for($i=0;$i<$nbEvent;$i++)
			{
				while($l = mysql_fetch_array($res))
				{
					$presentation="";
					$sql_asso = "select * from table where id='".$l['organisateur_evt']."'";
					$resAsso = execution($c,$sql_asso);
					$asso = mysql_fetch_array($resAsso);
							
					if($l['groupe_evt']!=null || $l['groupe_evt']!=0)
					{
						$gp = explode("_",$l['groupe_evt']);
						for($i=0;$i<sizeof($gp)-1;$i++)
						{
							if($gp[$i]!="" || $gp[$i]!=null)
							{
								$sg = "select * from table where id=".$gp[$i];
								$rg = mysql_fetch_array(execution($c,$sg));
								$presentation.=strtoupper($rg['nom_groupe']). " + ";
							}
						}
						if($gp[sizeof($gp)-1]!="" || $gp[sizeof($gp)-1]!=null)
						{
							$ag = "select * from table where id=".$gp[sizeof($gp)-1];
							$rg = mysql_fetch_array(execution($c,$ag));
							$presentation.=strtoupper($rg['nom_groupe']);
						}
					}
					
				}
			}
		}
		else
		{
			echo "Pas d'&eacute;v&egrave;nement";
		}
		mysql_close($c);
	}
Pouvez-vous m'aider ?

ViPHP
xTG
ViPHP | 7331 Messages

25 nov. 2010, 09:44

$sql = "select * from table where date >= '".date("Y-m-d")."' limit 1";
On recherche tous les évènements du jour ou à venir et on ne sélectionne que le premier.

Eléphanteau du PHP | 33 Messages

25 nov. 2010, 12:14

Merci de votre réponse.
J'ai essayé votre proposition, cela m'affiche toujours la même chose : l'évènement du jour, sinon un message précisant qu'il n'y a rien dans la base.

ViPHP
xTG
ViPHP | 7331 Messages

25 nov. 2010, 14:43

Es-tu sûr d'avoir utilisé de bonnes valeurs pour ton essai ?
Car je viens de tester sur une table créée pour l'exemple avec un code de récupération et aucun soucis.

Eléphanteau du PHP | 33 Messages

25 nov. 2010, 20:39

ben oui il me semble :
<?php
function affichageAujourdhui()
	{
		$c = connection("base");
		$sql = "select * from evenements where date_evt='".date("Y-m-d")."' limit 1";
		$res = execution($c,$sql);
		$nbEvenement = mysql_num_rows($res);
		
		if($nbEvenement>0)
		{
			for($i=0;$i<$nbEvenement;$i++)
			{
				while($l = mysql_fetch_array($res))
				{
					$presentationGroupe="";
					$sql_asso = "select * from association where id_asso='".$l['organisateur_evt']."'";
					$resAsso = execution($c,$sql_asso);
					$asso = mysql_fetch_array($resAsso);
							
					if($l['groupe_evt']!=null || $l['groupe_evt']!=0)
					{
						$gp = explode("_",$l['groupe_evt']);
						for($i=0;$i<sizeof($gp)-1;$i++)
						{
							if($gp[$i]!="" || $gp[$i]!=null)
							{
								$sg = "select * from groupe where id_groupe=".$gp[$i];
								$rg = mysql_fetch_array(execution($c,$sg));
								$presentationGroupe.=strtoupper($rg['nom_groupe']). " + ";
							}
						}
						if($gp[sizeof($gp)-1]!="" || $gp[sizeof($gp)-1]!=null)
						{
							$ag = "select * from groupe where id_groupe=".$gp[sizeof($gp)-1];
							$rg = mysql_fetch_array(execution($c,$ag));
							$presentationGroupe.=strtoupper($rg['nom_groupe']);
						}
					}
					echo "<p class='titre'>".$l['intitule_evt']."</p>";
					
					if($asso['nom_asso']!=null)
					{
						echo "Organisateur : ".utf8_decode($asso['nom_asso']).'<br /><br />';
					}
					echo"Heure :&nbsp;".$l['heure_evt'];
					
					if($l['prix_evt']!=0 && $l['prix_evt']!=null)
					{
						echo "<br /><br />Prix : ".$l['prix_evt']."&euro;";
					}
					else
					{
						echo "<br /><br />Prix : Prix libre / Gratuit"; 
					}
					if(isset($presentationGroupe))
					{
						echo "<br /><br />Line-up :".$presentationGroupe."";
					}
					
					
					
					if($l['commentaire_evt']!=null)
					{
						echo "<br />Commentaire : ".nl2br($l['commentaire_evt']).'<br />';
					}
					
				}
			}
		}
		else
		{
			echo "<div>aucun &eacute;v&egrave;nement à venir...</div>";
		}
		mysql_close($c);
	}

?>

devlop78
Invité n'ayant pas de compte PHPfrance

25 nov. 2010, 20:51

1. Le for et le while se marchent sur le pied.
2. Tu as 0 ou 1 résultat, aucune boucle n'est donc nécessaire.

$nbEvenement = mysql_num_rows($res);

Si $nbEvenement == 0 alors afficher "Pas de nouveaux éléments"
Sinon, $l = mysql_fetch_array($res) etc

Eléphanteau du PHP | 33 Messages

25 nov. 2010, 21:03

2. Tu as 0 ou 1 résultat, aucune boucle n'est donc nécessaire.
Ben justement vu qu'avant cela affichait l'evenement du jour, il y avait effectivement 0 ou 1 résultat.
Mais la du coup je veux afficher le prochain event, parmis toutes celles à venir.