Requete

WRInaute occasionnel
Bonjour,

Il y a une requete qui me pose un soucis.

Mon code est le suivant :

Code:
$result = mysql_query("SELECT Famille, Latin, Vernaculaire, Protection FROM Protection WHERE Categorie='$Categorie' ORDER BY Famille"); 
if (!$result) { 
   echo 'Impossible d\'exécuter la requête : ' . mysql_error(); 
   exit; 
} 
while ($row = mysql_fetch_assoc($result)) {
extract($row);
   echo '<div class="protection1">'.$Famille.'</div>';
   echo '<div class="protection2">'.$Latin.'</div>';
   echo '<div class="protection3">'.$Vernaculaire.'</div>';
   echo '<div class="protection4">'.$Protection.'</div>';
   echo '<br /><br />';
}

J'aimerais qu'il m'affiche une seule fois la famille et pour cette famille, qu'ils affichent tous les enregistrements , puis la famille suivante avec tout ses enregistrements... Au lieu d'afficher autant de fois la famille qu'il y a d'enregistrements.
J'ai pensé à mettre GROUP BY dans ma requete mais la méthode d'affichage n'est plus bonne.

Quelqu'un aurait une idée ?

Merci beaucoup
 
Nouveau WRInaute
Bonjour,

Tu peux faire cela:
Code:
$result = mysql_query("SELECT Famille, Latin, Vernaculaire, Protection FROM Protection WHERE Categorie='$Categorie' ORDER BY Famille");
if (!$result) {
   echo 'Impossible d\'exécuter la requête : ' . mysql_error();
   exit;
}
$OldFamille = '';
while ($row = mysql_fetch_assoc($result)) {
extract($row);
   if($Famille != $OldFamille)
      echo '<div class="protection1">'.$Famille.'</div>';
   else
      echo '<div class="protection1">&nbsp;</div>';

   echo '<div class="protection2">'.$Latin.'</div>';
   echo '<div class="protection3">'.$Vernaculaire.'</div>';
   echo '<div class="protection4">'.$Protection.'</div>';
   echo '<br /><br />';
}

Est ce que ça résoud ton problème ?

Cordialement,
 
WRInaute occasionnel
Non ça marche toujours pas.
tant pis je crois que je vais laisser tomber.

merci quand même

quand je mets group by famille, il m'affiche qu'un seul résultat par famille.
 
WRInaute impliqué
en fait, je pense que ca peut aider:

il faut faire un tableau sur tes noms de familles, avec offset.
Puis une boucle while: tant que famille[x] vrai
puis dans cette boucle, la requete sql avec Where famille=
Et une boucle while pour afficher toutes les rangées.
 
WRInaute passionné
cyberdesign a oublié de réinitialiser OldFamille au changement de famille dans sa boucle.
C'est un algo vieux comme l'informatique connu sous le nom de "marche en canard". Je ne certifie pas le nom exact de l'algo :)

Code:
if($Famille != $OldFamille)
      echo '<div class="protection1">'.$Famille.'</div>';
     $OldFamille = $Famille ;
   else
      echo '<div class="protection1">&nbsp;</div>';
 
Discussions similaires
Haut