Mise en page complexe

Eléphanteau du PHP | 41 Messages

05 déc. 2011, 19:47

Bonjour,

après moultes essais je viens quérir votre aide! Qué je veux faire ? Un affichage comme cela :
Catégorie1
tableau de données relatives à la catégorie1

Catégorie2
tableau de données relatives à la catégorie2
J'aurais pu faire plusieurs SELECT par cat mais j'ai des catégories supérieures et ça serait vite le bazar. Alors je me suis dit que ça pouvait bien se faire quand même!
Le soucis dans mon travail est que j'ai cela :
Catégorie1
Une donnée de la catégorie1
Catégorie1
Une donnée de la catégorie1
Catégorie1
.
.
.
J'ai fait cette manip
<div>
        <?php while($row1 = mysql_fetch_array($c1)) { ?>
	<h3><?php echo "$row1[nomCat]"; ?></h3>
	<table>
	<tr>
	<td class="gauche"><?php echo "$row1[nom]"; ?><br><span><?php echo "$row1[desc]"; ?></span></td>
	<td  class="droite"><?php echo "$row1[prix]"; ?> €</td>
	</tr><?php } ?>
</table>
</div>
Dois-je continuer à me torturer l'esprit ou bien là, comme ça il faut faire autre chose.
A savoir que dans ma requête je fait un GROUP BY catégorie. ça ne semble pas bien regrouper mes données...
$c1 = mysql_query("SELECT DISTINCT  * FROM vin, categories WHERE ville='labas' AND vinCatSup='VSO' AND cat=codeCat GROUP BY codeCat ASC, prix ASC ");
Merci pour vos précieux conseils :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 déc. 2011, 22:04

Concernant ton problème, il te suffit de créer une variable temporaire dans laquelle tu stockeras ta catégorie. Il te suffira alors d'afficher le nom de la catégorie uniquement lorsque celle-ci change :)

Code : Tout sélectionner

TANT QUE il y a des enregistrement SI la catégorie est différente de celle dans la var temporaire Affiche la nouvelle catégorie Met à jour la variable temporaire FIN SI Affiche l'élément de ton tableau FIN TANT QUE

Ps : Il ne faut pas utiliser la clause GROUP BY si ton SELECT ne comporte pas au moins une fonction de groupe (MIN, MAX, COUNT, SUM, ...)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 41 Messages

05 déc. 2011, 23:37

Je sais pas si c'est d'avoir creusé l'affaire longuement mais comment obtenir un résultat vu que $cat = $row1['cat'] si je fais un if ($cat!=$cat) je tourne un peu en rond et bien entendu cela ne m'affiche aucun résultat...
Comme je ne suis pas dans un formulaire, je ne sais pas trop comment faire tourner tout cela. #-o

En gros, et je sais que je vais passer pour mauvaise élève mais... Comment je fais un var temporaire ? Et comment je la met à jour ? :?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

06 déc. 2011, 22:14

Ben euh.... tu peux faire une variable temporaire du genre $tempCat ou $catTemporaire ou $saladeTomateOignon si tu veux :)
$tempCat = '';
while ( .... ) {
   $cat = $row1['cat'];
   if ($cat!=$tempCat) {
      echo $cat; 
      $cat = $tempCat;
   }
   ...
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...