Affichage des données par ordre choisi

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage des données par ordre choisi

par Albat90 » 19 févr. 2009, 15:56

Oui, c'est très bien comme ça :)
Donc je pense que maintenant tu peux mettre [RÉSOLU] :D

Albat90 ;)

par fabrice88250 » 19 févr. 2009, 14:57

merci pour vos conseils. j'ai finalement réussi a adapté ma requete et sa fonctionne.
$req = mysql_query("SELECT * FROM galerie ORDER BY type");  
$type_en_cours = '';
while($data = mysql_fetch_array($req))  
    { 

if($type_en_cours != $data['type']) { // Nouveau type...
           $type_en_cours = $data['type'];
           echo '<h3>Type : '.$type_en_cours."</h3>\n";
       }

echo'
<a href="../images/galerie/', $data['photoref'] ,'" target="_blank">
<img src="mini-galerie.php?f=' , $data['photoref'] , '" alt="', $data['alt'] ,'" width="148" height="105"/>
</a>
<br/>
Réf : ', $data['ref'] ,' 
';

par Sodams » 19 févr. 2009, 14:38

Par contre, si il ne connais pas tout les types, cette solution ne conviendra pas.

Si jamais tu ne connais pas tout les types avant l'éxécution, tu peux sauvegarder le type actuelle dans une variable frigo.
A chaque ligne d'enregistrement, tu compares le type actuel avec celui de l'enregistrement précédent.
$type = "Montagne";
$req = mysql_query("SELECT * FROM galerie ORDER BY type DESC");  
while($data = mysql_fetch_array($req))  
{ 
     if($data["type"] != $type) echo "<hr/>";
     $type = $data["type"];
}
Cette solution est plus compliquée que la précédente, d'autant plus qu'il faut vérifier que le test ne s'effectue pas sur la première ligne.
Si tu connais tout les types à l'avance, la solution de Albat90 sera normalement plus performante.

par Albat90 » 19 févr. 2009, 14:23

Bonjour,

Mysql_fetch_array(); va parcourir ton recordset occurrence après occurrence donc même si tu fais un tri par type, il ne te fera aucune séparation.

La meilleur solution pour séparé est que tu fasse une requête pour chaque type et que tu fasse toi même la séparation entre chaque type.

De même que j'ai remarqué ton Limite, veux tu sélectionner un nombre précis d'image?
Si non, mysql_fetch_array va s'arréter tout seul lorsqu'il aura atteint la dernière occurrence.
$req = mysql_query("SELECT * FROM galerie WHERE type = 'Montagne' ORDER BY id DESC"); 
while($data = mysql_fetch_array($req)) 
    {
...
     }
echo '<hr />';
$req = mysql_query("SELECT * FROM galerie WHERE type = 'Lac' ORDER BY id DESC"); 
while($data = mysql_fetch_array($req)) 
    {
...
     }
...

En espérant de t'avoir aider :)

Albat90 ;)

Affichage des données par ordre choisi

par fabrice88250 » 19 févr. 2009, 13:37

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