IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

double boucle + requete SQL


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut double boucle + requete SQL
    Bonjour à tous
    J'ai dans ma BDD plusieurs concerts.
    J'aimerais afficher (dans des divs) ces concerts de manière à ce qu'ils soient classés d'abord par année et ensuite par mois : x années, dans chaque années x mois représenté s'ils comportent x concerts (voir le fichier joint).
    Je pense qu'il faut pour ça que je fasse une double boucle, mais je ne vois pas trop comment mettre ça en oeuvre... Pour l'instant, j'arrive bien à ne créer les divs pour les années que si l'année en question n'est pas encore représentée, mais je n'obtiens qu'un concert (le premier de chaque année) et pas les mois
    Le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    $ConcertSQL = mysql_query("SELECT * maTable ConcertDate ASC");
     
    	$anneeDate = "";
    	$moisDate = "";
     
    	while($Concert = mysql_fetch_object($ConcertSQL)){
     
    		$ladate=DateMySQL2FR($Concert->ConcertDate);
    		$laDateExplode = explode("/",$ladate);
    		$annee = $laDateExplode[2];
     
    		if($annee != $anneeDate){
     
    			$anneeDate = $annee;
     
    			echo '<div class="blockAnnee'. $anneeDate .'">';
    			echo $Concert->ConcertDate."-".$Concert->ConcertTitre;
     
    		echo '</div>';
     
    		}
    	}
    En vous remerciant d'avance pour votre aide
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    as tu essayé une requete de type GROUP BY ?

    ex: select annee, mois, concerts from matable GROUP BY annee, mois, concerts


    EDIT: tu as oublié le from dans ta requete

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse, je vais regarder de ce côté là.
    Effectivement, j'ai oublié le form en faisant mon copié /collé

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Bon ça avance un peu, mais je bloque encore
    voici ou j'en suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $ConcertSQLAnnee = mysql_query("SELECT * FROM matable GROUP BY ConcertAnnee");
    $ConcertSQLMois = mysql_query("SELECT * FROM matable ");
     
    	$anneeDate = "";
    	$moisDate = "";
     
    	while($ConcertAnnee = mysql_fetch_object($ConcertSQLAnnee)){
     
    		if($anneeDate != $ConcertAnnee->ConcertAnnee){
     
    			$anneeDate = $ConcertAnnee->ConcertAnnee;
     
    			echo $anneeDate."<br/>";
     
    			while($ConcertMois = mysql_fetch_object($ConcertSQLMois)){
     
    				if($moisDate != $ConcertMois->ConcertMois){
     
    					$moisDate = $ConcertMois->ConcertMois;
     
    					//<img src="../images/'.$moisDate.'.jpg" width="300" height="30" />
    					echo $moisDate."<br/>";
    					echo $ConcertMois->ConcertTitre."<br/>";
     
    				}else{
                        echo $ConcertMois->ConcertTitre."<br/>";
    				}
    			}
    		}
    	}
    J'obtiens bien pour chaque mois, les concerts qui correspondent, masi rien à faie, je ne parvient pas à regrouper ça par année. J'obtiens un truc comme :
    2009
    novembre
    concert1
    concert2
    ...
    décembre
    concert1
    concert2
    ...
    janvier
    concert1
    concert2
    ...
    2010

    Ou la partie janiver devrait être sous 2010...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Ayest !
    En fait, il fallait que je redéfinisse ma requête dans le corps de ma première boucle. Je ne suis pas certain que ce soit optimisé, mais ça fonctionne. Si quelqu'un à une solution plus simple...
    Pour ceux que ça intéresserait, voisi le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    $ConcertSQLAnnee = mysql_query("SELECT * FROM matable WHERE GROUP BY ConcertAnnee ORDER BY ConcertDate ASC");
     
    	$anneeDate = "";
    	$moisDate = "";
     
    	while($ConcertAnnee = mysql_fetch_object($ConcertSQLAnnee)){
     
     
    		if($anneeDate != $ConcertAnnee->ConcertAnnee){
     
    			$anneeDate = $ConcertAnnee->ConcertAnnee;
     
    			echo $anneeDate."<br/>";
     
    			$ConcertSQLMois = mysql_query("SELECT * FROM matable ORDER BY ConcertDate ASC ");
     
    			while($ConcertMois = mysql_fetch_object($ConcertSQLMois)){
     
    				if($ConcertMois->ConcertAnnee == $anneeDate){
     
    					if($moisDate != $ConcertMois->ConcertMois){
     
    						$moisDate = $ConcertMois->ConcertMois;
    						echo $moisDate."<br/>";
    						echo $ConcertMois->ConcertTitre."<br/>";
     
    					}else{
     
    						echo $ConcertMois->ConcertTitre."<br/>";
     
    					}
    				}
    			}
    		}
    	}

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 22
    Points : 33
    Points
    33
    Par défaut
    Ton problème principal est dans ta requête, il faudrait faire quelque chose dans ce goût
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql = 
    "
      SELECT concerttitre, YEAR(concertdate) AS annee, MONTH(concertdate) AS mois
        FROM tatable
        ORDER BY YEAR(concertdate) DESC, MONTH(concertdate) ASC
    "
    Et logiquement, ta liste sera dans le bon ordre en faisant une seule requête.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 21
    Points : 5
    Points
    5
    Par défaut
    Le truc, c'est que mysql est pas vraiment un pote à moi, et j'ai du mal à voir comment traiter efficacement le résultat de mes requêtes (et que dire de requêtes plus complexes)... Avec des boucles ? Combien ? D'autant que je dois ensuite intégrer ça et c'est un peu le bazard

    Mais merci Fallen_Leaf, je vais tenter un coup d'oeil de ton côté.

Discussions similaires

  1. [MySQL] Requetes SQL dans une boucle PHP
    Par Siteac dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2006, 14h35
  2. Requete SQL dans boucle while
    Par vince_grenoblois dans le forum MS SQL Server
    Réponses: 18
    Dernier message: 04/08/2006, 20h41
  3. tableau double entrée et requete sql
    Par oceane751 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 29/11/2005, 14h25
  4. [MySQL] Tableau double entrée et requete sql
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 28/11/2005, 09h07
  5. requete SQL double références ...
    Par khardros dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/09/2004, 19h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo