Trier et afficher le resultat d'une requête

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 : Trier et afficher le resultat d'une requête

par bibicool » 19 févr. 2008, 14:05

YEs... si ca fonctionne c'est exactement ce qu'il me faut !!!!

Je teste ca ce soir et vous dit quoi !!!!

THANKS

par Sékiltoyai » 19 févr. 2008, 14:03

Bah avec Order by, c'est possible :

Code : Tout sélectionner

ORDER BY champ1 ASC, FIELD(champ2, 'Hotel', 'Bar', 'Restaurant') ASC
avec champ1 : Except et Non
et champ2 : Hotel, Bar, Restaurant…

par mere-teresa » 19 févr. 2008, 13:15

As tu regardé du côté de GROUP BY ?
http://dev.mysql.com/doc/refman/5.0/fr/ ... fiers.html

par bibicool » 19 févr. 2008, 12:07

Merci pour ton aide... je vais réfléchir à ce système de tableau.. ca pourrait effectivement solutionner mon problème. Je dois juste vérifier si je n'ai pas des exceptions qui pourrait faire planter ce genre de recherche (style : plusieurs promotions exceptionnelles de type Bar) ca ne devriat pas exister mais bon on est jamais à l'abris d'une erreur client.

Si jamais quelqu'un avait une solution SQL ca m'intéresserait égalemnet... j'avais pensé à un truc du style (pure fiction mais il existe pê quelque chose qui le permette)

Select * from PROMO order by ... et lui donner un tableau qui donne l'ordre de tri style

Select * from PROMO order by $categorie["Hotel","Bar","Restaurant",...]

et là il ordonnerait la requête par l'ordre défini dans le tableau categorie... bon je rêve probablement..;

seb

par d0m » 19 févr. 2008, 10:05

Coté SQL je ne suis pas assez calé pour un tri de cette sorte.

Par contre en PHP, il suffit de bien concevoir et d'ordonner tes données.
Pour cela tu peux utiliser les tableaux associatifs multidimensionnels :

Après exécution de ta requête SQL, tu ranges tes résultats par catégories.
Le but étant d'obtenir un tableau de ce type :

Code : Tout sélectionner

array( 'bar' => array(0=>enregistrement1, 1=> enregistrement2;...) , 'hotel' => array(0=>enregistrement3, 1=> enregistrement4;...) , ... )
Disons que bar, hotel ,... est le champ categorie :
$promotions = array();
while($ligne = mysql_fetch_assoc($resultat)){
  $promotions[$ligne['categorie']][] = $ligne;
}
Il te suffira ensuite d'accéder aux promotions bar à travers le tableau
$promotions['bar']

par Invité » 19 févr. 2008, 07:46

Hello,

Oui bien sûr mais mon problème est que j'ai 5 valeurs différentes dans ma deuxième colonne... bref trier par ordre ne m'aide pas beaucoup,.. j'explique

J'ai Restaurant / Bar / Hotel / ...

Le tri me donnera Bar / Hotel / Restaurant

Et moi j'aimerais en fait afficher TOUTES ces promos définies comme exceptionnel mais en premier les promotions liées aux HOTEL (bref au milieu de ma liste de résultat).

Sachant les différensts valeurs potentielles de ma colonne, s'il était possible de dire de la trier par order de ces valeurs (et ensuite lui donner un tableau ordonné comme je le veux ca serait génial... Je vais aller réétudier le SQL mais je ne pense pas que c'est possible)

Merci en tout cas de ton aide

par iclo » 19 févr. 2008, 00:59

Tu peux tout à fait trier sur plusieurs colonne à la fois avec l'instruction sql order by.

http://sql.1keydata.com/fr/sql-order-by.php

Trier et afficher le resultat d'une requête

par bibicool » 18 févr. 2008, 23:18

Bonjour,

J'espère poster au bon endroit dans le forum. En fait ma question est liée aux bases de donnée, mais c'est plutôt le PHP qui m'aidera... enfin je vous explique

Voilà j'utilise donc mysql

en gros... J'ai une table reprenant des promotions, un promotion à un titre, une explication, un flag informant si c'est une promo exceptionnelle et une colonne m'informant à qui s'adresse cette promotion (hotel, restaurant, bar)
Chacun client une fois identifié va aller dans la section promo de mon site et là il doit voir en premier les promo Exceptionnelle qui s'adresse à son secteur (hotel par exemple), ensuite les promos Except. des autres secteurs ensuite les promo classique de son secteur et enfin les autres promo.
Ex : un client x travaillant pour un hotel va sur promotion

Dans ma table j'ai

Titre 1 - Texte 1 - Except - Restaurant
Titre 2 - Texte 2 - Non - Hotel
Titre 3 - Texte 3 - Non - Restaurant
Titre 4 - Texte 4 - Except - Hotel

Je voudrais donc que les promotions s'affichent dans cet ordre

Titre 4 - Texte 4 - Except - Hotel
Titre 1 - Texte 1 - Except - Restaurant
Titre 2 - Texte 2 - Non - Hotel
Titre 3 - Texte 3 - Non - Restaurant

Voilà donc ma question... il y a t'il moyen de faire ca en sql... je ne pense pas... ok premier tri je le fais sur le flag et j'aurai en priorité mes Exceptionnelle...

Ensuite en fait il faudrait que je puisse passer à travers les résultats, afficher en premier les Except Hotel puis les autres Except ensuite les Non - Hotel...

Avez-vous une idée de la façon de faire... Bon j'ai bien une idée à l'aide d'un tableau, des recherches,... et puis à nouveau réafficher à travers le tableau mais même là je planche. Il y aurait-il une fonction que je ne connaisse pas permettant ce genre de truc ?

MErci de votre aide

Seb