begin process at 2012 05 31 05:15:37
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Ordre des id dans le SELECT non pris en compte dans le WHILE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ordre des id dans le SELECT non pris en compte dans le WHILE

lundi 21 mars 2011 à 17:01:02 | Ordre des id dans le SELECT non pris en compte dans le WHILE

sagat06

Bonjour à tous,

j'ai une requête toute simple du genre:

$sql="SELECT pseudo,avatar FROM membres WHERE membre_id IN ('".$Ris[0]."','".$Ris[1]."','".$Ris[2]."')";
$result= mysql_query($sql) or die('');

J'en extrais le résultat comme ceci:

while ($Res = mysql_fetch_row($result) ){

$biz.="<div><a href='profil/".$Res[0]."' title='Voir le profil'><img src='image/".$Res[1]."' border='0' /></a><br /><strong>".$Res[0]."</strong></div>";
}

Mon problème est que les id précisés dans la 1ère requête ne sont pas forcément classés dans un quelconque ordre numérique alors que le while me les rends ordonnée du plus petit au plus grand. Pour obtenir ce que je veux (garder le même ordre d'entrée que dans le SELECT) je suis obligé d'utiliser le système D.

N'existe-t-il pas un moyen de forcer le while à me rendre les données dans le même ordre que celui de la requête SELECT ?

Merci d'avance



Signé Sagat
mardi 22 mars 2011 à 16:52:27 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

phpAnonyme

Pour désigner l'ordre d'affichage d'une requête il faut utiliser la clause sql ORDER BY.

______________________________________________________________________
lundi 28 mars 2011 à 21:21:34 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

ghuysmans99

Membre Club
Code PHP :
$sql = "SELECT pseudo, avatar FROM membres WHERE membre_id IN ('{$Ris[0]}','{$Ris[1]}','{$Ris[2]}') ORDER BY membre_id;"; 


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
jeudi 31 mars 2011 à 15:38:59 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

sagat06

Désolé, mes aucunes de vos méthodes ne fonctionne.

La débrouille me permet d'obtenir ce que je souhaite.

@phpAnonyme: j'obtiens les valeurs de Ris[] par une requête utilisant la clause ORDER BY sur un champs donné. Cette première requête me renvoie des id de membres qui eux n'ont aucun ordre particulier.

Mon problème est que le while me donne bien les infos correspondantes mais pas forcément dans le bon ordre.


Signé Sagat
jeudi 31 mars 2011 à 15:48:41 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

phpAnonyme

Le While n'a rien à voir dedans.
Fais voir ta requête avec le ORDER BY


______________________________________________________________________
jeudi 31 mars 2011 à 15:53:04 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

phpAnonyme

N'existe-t-il pas un moyen de forcer le while à me rendre les données dans le même ordre que celui de la requête SELECT ?


Petite précision par défaut le SELECT renvoie les données tel qu'il les à trouver.

______________________________________________________________________
jeudi 31 mars 2011 à 16:05:19 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

sagat06

Salut,

j'ai une tâche Cron qui rempli correctement une table donnée.

Pour obtenir mes infos, j'utilise les requêtes suivantes:

$sql="SELECT membre_id1,membre_id2,membre_id3,score1,score2,score3 FROM matable WHERE ligne_id='xxx'";
$result=mysql_query($sql) or die();
$Ris=mysql_fetch_row($result);

$sql1= "SELECT membre_id,pseudo,avatar FROM membres WHERE membre_id IN ('".$Ris[0]."','".$Ris[1]."','".$Ris[2]."')";
$result1= mysql_query($sql1) or die('Echec 1');

Avec score1 > score 2 > score 3

En faisant un tableau (membre_idX,scoreX) j'en déduis l'ordre souhaité

Sinon le Order By était dans la tâche cron.

Signé Sagat
jeudi 31 mars 2011 à 16:19:59 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

phpAnonyme

j'ai une tâche Cron qui rempli correctement une table donnée.


Sinon le Order By était dans la tâche cron.


Si la tâche cron sert à insérer des données je ne vois pas pourquoi tu utilise un ORDER BY dedans.
Néanmoins, au cas où tu ne le saurais pas ou que tu n'ai pas fais de recherche dessus si tu ne définit pas l'ordre de sortie(croissant ou décroissant) souhaité dans la clause, par défaut l'ordre est croissant(si je me souviens bien)

SELECT membre_id1,membre_id2,membre_id3,score1,score2,score3 FROM matable WHERE ligne_id='xxx'


J'ai du mal à saisir, la structure de cette table, voir de l'autre également. N'est ce pas un seul membre qui effectue les scores 1, 2 et 3?

Pour aller vite et de manière simple il faut me détailler le fonctionnement de tes tables et ce que tu cherche à faire.
- Que souhaite tu afficher ?
- Dans quel ordre ?
- A quoi correspond les champs : membre_id1,membre_id2,membre_id3 ?
Ton membre à plusieurs ID ?

Voilà.

______________________________________________________________________
jeudi 31 mars 2011 à 16:31:36 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

sagat06


Re,

1 table membres: membre_id, pseudo, avatar
1 table classement: ligne_id (identifiant du jeu), 3 meilleurs membres avec leur score respectifs (membre_id1, membre_id2, membre_id3, score1,..)

Ma tâche cron cherche le membre_id et le score des 3 meilleurs membres pour chaque jeu, et inscrit les résultats dans la table classement. Un simple SELECT sur cette table me permet de connaitre le trio de tête.


J'aurai pû faire une table classement avec plusieurs lignes par jeu, cela m'aurait permis de faire directement un seul Select sur 2 tables et de tout obtenir dans l'ordre. L'idée aurait put être:

ligne_id, top1, membre_id, score
ligne_id, top2, membre_id, score.....

Mais j'ai préféré utiliser 1 seule ligne par jeu. Un simple système D me permet d'obtenir ce que je désire. Donc je postais pour savoir s'il existait une manière de sortir les données d'un SELECT non pas dans l'ordre trouvé mais dans un ordre prédéfini et quelconque à la fois (celui inscrit dans la clause IN)

Merci encore de te soucier de mon problème, et s'il n'y a pas d'autres solutions que de modifier la structure de mes tables, je continuerai d'utiliser la débrouille comme rescousse


Signé Sagat
jeudi 31 mars 2011 à 16:45:52 | Re : Ordre des id dans le SELECT non pris en compte dans le WHILE

phpAnonyme

Non tu ne peut effectivement pas. Pas directement en tout cas, i.e système D comme tu dis.

Le choix que tu as pris n'est effectivement pas la meilleure pour ce que tu veux en faire.

______________________________________________________________________

1 2

Cette discussion est classée dans : ordre, while, requête, select, id


Répondre à ce message

Sujets en rapport avec ce message

Somme, valeur unique depuis requête [ par ltab ] Bonjour,Je cherche en vain depuis des lustres à faire l'addition de champs provenant d'une requête$sql = "select appartement FROM chambres WHERE id = affichage d'une requête comportant de deux autres requêtes [ par vir76 ] Je dispose de 3 requêtes :la 1ère :$requête fournitures="SELECT T_ANNEE.ANNEE_ANNEE, T_SOUSDIRECTION.ID_SOUSDIRECTION, T_SOUSDIRECTION.SOUSDIRECTION_N problème avec tablo et balise select dynamique [ par lookoom ] salutj'me casse les dents sur un script et j'viens chercher un peu d'aide !!j'ai un tablo avec une colonne contenant des "select" pour choisir le nomb afficher la valeur d'une table dans un menu select [ par inconnue ] Bonjour, j'affiche un menu select dynamiquement constitué par des valeurs dans une table,dans ma page de modification des données, je souhaiterai donc requête count [ par Tomcube ] Salut !J'ai une table news avec mes news, une table commentaires où sont stockés les commentaires de ces news. Dans ma page de news (qui en affiche 30 Requête SQL [ par alonsyl ] Bonjour,Sous Access, j'execute une 1ère requête ("4_ventes"):SELECT Mid([reference],1,4) AS ref, VENTES.nb_ventes FROM VENTES;Puis, j'utilise ce résul requête maitre/détail et php [ par ejmana ] BonjourVoilà mon soucis: je dispose de 2 tables, une contenant un article, avec différentes données, et une contenant les auteurs.Dans la table articl Problème de requête de non-correspondance [ par dphil94 ] Bonjour a tous... Voici mon problème ;J'ai 2 tables table1 "qcm_sujet" avec les champs id, sujet, ....table2 "qcm_score" avec les champs id, sujet, no Comment remmetre les ID en ordre. [ par BenXbox ] Salut à tous,Voila j'aimerez bien savoir comment je peut remmetre les ID dans l'ordre, c'est à dire :- J'ai dans ma table un message qui à l'ID 1 puit Requête PHP Mysql [ par nino69 ] Bonjour, j'ai 3 tables: jet_clients, clients_albums et album Note importante la table clients_albums à les deux clés etrangères des deux autre tables.


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales