Page 1 sur 1

Requète SQL (GROUP BY)

Posté : 13 janv. 2015, 13:17
par Hellowz
Bonjour tout le monde,
En espérant, que vous puissiez m'aider, mais je n'en doute pas !

Je ne vois pas trop comment faire. Donc je vous explique, c'est tout simple.
J'ai une table projets(Id_Projets, Nom_Projets, Prix_Projets, Date_Projets).

je voudrais afficher sur ma page l'architecture suivant :

------------ Date_Projets (12-01-2015) ---------
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--

------------ Date_Projets (13-01/2015)---------
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--
---Titre_Projets + Prix_Projets--

En gros, le problème actuel avec la clause "GroupBy", c'est que ça marche, mais ça ne détailles pas les projets et le prix pour chaque date.
Donc si vous avez une solution avec le "groupby" ou avec une autre méthode, je me ferais un plaisir de la mettre en place.

Merci davance,
Hellowz

Re: Requète SQL (GROUP BY)

Posté : 13 janv. 2015, 13:27
par @rthur
Bonjour,

La solution pour faire cela c'est de faire ta requête avec un simple ORDER BY Date_Projets DESC.

Et au moment de l'affichage (quand tu boucles sur chaque résultat), tu regardes si la valeur Date_Projets précédente est égale à la valeur Date_Projets courante.
Si ce n'est pas le cas, ça veut dire que tu es sur le 1er enregistrement d'un nouveau jour et donc il faut afficher une nouvelle section avec le nom de ce jour, et tu mets à jour une variable date_projets_precedente avec la Date_Projets courante.

Re: Requète SQL (GROUP BY)

Posté : 13 janv. 2015, 15:46
par Hellowz
Bonjour Arthur,
Merci de ta réponse,
je vais mettre la réponse sur le forum, au cas ou plus tard des personnes cherchent une solution.
<?php $req = "SELECT DISTINCT Mois_Projets FROM projets ORDER BY Mois_Projets";
$result  = mysql_query($req) or die($req."<br />\n".mysql_error());
while($Mon_Resultat = mysql_fetch_array($result)) { 

		$test = $Mon_Resultat['Mois_Projets'] ;
		echo "<b>".$test."</b>" ;   
		
		// REQUETE IMBRIQUEE DEBUT 
				$req2 = "SELECT * FROM projets WHERE Mois_Projets = '$test' ";
				$result2  = mysql_query($req2) or die($req2."<br />\n".mysql_error());
				while($Mon_Resultat2 = mysql_fetch_array($result2)) { 
				{
					echo "hello";
				}
		// REQUETE IMBRIQUEE FIN
} } ?>
Le code n'est pas du tout propre, mais c'est pour avoir une idée.
Bonne journée,

Re: Requète SQL (GROUP BY)

Posté : 13 janv. 2015, 16:50
par @rthur
Encore mieux, sans requête imbriquée :
<?php
$mois_projet_precedent="";
$req = "SELECT * FROM projets ORDER BY Mois_Projets";
$result  = mysql_query($req) or die($req."<br />\n".mysql_error());

while($Mon_Resultat = mysql_fetch_array($result)) {
    
    if ($mois_projet_precedent != $Mon_Resultat['Mois_Projets']) {
        // C'est le 1er projet réalisé à cette date donc on affiche la date
        echo "<b>".$Mon_Resultat['Mois_Projets']."</b>" ; 
        $mois_projet_precedent = $Mon_Resultat['Mois_Projets'];
    }
    
    echo "hello<br />"; // là on affiche les données projet de $Mon_Resultat
    
}