8797 sujets

Développement web côté serveur, CMS

bonjour,
j'ai créé une galerie photos sur mon site internet. Pour le moment l'affichage des photos se fait de tel sorte que tout apparait mélanger.
Ma table est faite de la sorte : type (pour type de la photo), photo, nom (pour nommé la photo).

j'ai donc toutes mes photos qui s'affichent les unes derriere les autre et jaimerai les classé en fonction du type de la photo. (dans type j'ai paysages, lacs, montagnes...)
ma requete actuelle est :

$limit_str = "LIMIT ". $page * $limit .",$limit";  
$req = mysql_query("SELECT * FROM galerie ORDER BY id DESC $limit_str");  
while($data = mysql_fetch_array($req))  
    { 




je souahiterai que mes photos s'affichent donc par type (ok order by type) mais que lorsque l'on change de type on ai une séparation entre les photos et que l'on affiche le type.

Wouha !!! vous avez compris ?

exemple :

Type montagnes :
photo1, photo2, photo3, photo, photo5, photo6,....

----separation----

Type lacs:
photo1, photo2, photo3, photo, photo5, photo6,....

merci pour votre aide
je connaissai pas encore cette fonction Group BY.
je vien de l'essayé mais en ajoutant groupby a ma requete je n'ai qu'un seul affichage de chaque type qui apparait.
Salut,

pour SQL je te conseille les tutos de http://sqlpro.developpez.com/

Sinon pour ta question le GROUP BY fait un regroupement (comme son nom l'indique) et ne sort donc qu'un résultat par type... ce qui ne répond pas à ta demande.

Donc soit tu fais une première requête avec GROUP BY et pour chaque résultat tu fais une nouvelle requête en précisant le type, soit tu gères ça côté PHP :
$req = mysql_query("SELECT ... ORDER BY type, nom $limit_str");  
$type_en_cours = '';
while($data = mysql_fetch_array($req))  
    { 
       if($type_en_cours != $data['type']) { // Nouveau type...
           $type_en_cours = $data['type'];
           echo '<h2>Type : '.$type_en_cours."</h2>\n";
       }
       // Suite du traitement
me revoilà Smiley biggrin .
pour l'affichage par type c'est ok mais en rentrant les images au fur et a mesure je me rend vite compte que c'est un peu le fouilli.
du coup j'essai de faire en sorte quemes photos soient rangées sous forme de tableau 3 colonnes car actuellement elles s'affichent les unes en desous des autres.

le probleme est que le fait de trié par type le tableau ne fonctionne pas. je voudrai qu'un tableau de 3 colonnes se cré en dessous de chaque type avec toutes les photos liées au type.

existe til un solution simple pour mettre en place un tableau pour chaque type ?
Modifié par fabrice88 (19 Feb 2009 - 19:42)
Tu peux récupérer simplement ton résultat de ta première requête, et tu recrée tes tableaux.

Ma requête avec sont résultat

switch($resultat['type'])
{
case 'type1':
      $type1.='<td>'.$resultat['donnees'].'</td>';
      break;
case 'type2':
      $type2.='<td>'.$resultat['donnees'].'</td>';
      break;
case 'type3':
      $type3.='<td>'.$resultat['donnees'].'</td>';
      break;
case 'type4':
      $type4.='<td>'.$resultat['donnees'].'</td>';
      break;
default:
      $autre1.='<td>'.$resultat['donnees'].'</td>';
      break;
}


Ce qui te retournera pour chaque type, une seule variable. Par exemple, je te montre le contenu de la variable $type2 sachant que tu aurais dans ta base 5 éléments de type2


$type2 = '<td>'.$resultat['donnees'].'</td><td>'.$resultat['donnees'].'</td><td>'.$resultat['donnees'].'</td><td>'.$resultat['donnees'].'</td><td>'.$resultat['donnees'].'</td><td>'.$resultat['donnees'].'</td>';


C'est pas propre, car y'a surement une solution avec mysql pour voir ça, mais ça dépanne Smiley smile