IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage requete ORDER BY [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut Affichage requete ORDER BY
    Bonjour

    Je ne sais pas si c'est dans cette rubrique (PHP) ou bien du cote de SQL que je dois me tourner mais je sollicite tout de même votre aide.

    Je cherche à afficher le résultat d'une requête, mais je ne vois vraiment pas comment faire dans ce cas particulier.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $res= sql::exec("SELECT * FROM `membres`");
    while($membre=mysql_fetch_object($res)){
    $filleuls=mysql_fetch_object(mysql_query('SELECT COUNT(*) AS `filleuls` FROM `membres` WHERE `ref`="'.$membre->id.'"'));?>
    Cela m'affiche donc la liste de tous mes membres avec le nombre de filleuls respectifs. Pas de problème de ce coté là.

    MEMBRE 1 5 filleuls
    MEMBRE 2 10 filleuls
    MEMBRE 3 15 filleuls

    Comment faire pour que le résultat s'affiche par NOMBRE de filleuls. Je vois vraiment pas comment faire.

    Surement avec un ORDER BY... oui mais ORDER BY quoi... parce que le nombre de filleuls il est calculé en dessous grace au COUNT. Si je le met au dessus ca ira pas, car il a besoin de connaitre la variable $membre->id

    Je suis franchement perdue.. j'ai beau cherché des exemples sur internet je ne trouve pas de solution. Ca strouve je m'y prend pas du tout comme il faut. Quelqu'un aurait-il une piste ?

    Merci de m'avoir lue

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Par défaut
    Bonjour,

    Justement tu as eu la bonne reflexion, c'est bien ORDER BY filleuls
    Tu dis dans ta requete que Filleuls = COUNT(), donc tu peux l'utiliser dans le ORDER by comme si c'était un élément de ta table.


    GoT

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Citation Envoyé par GoTrUnKo Voir le message
    Bonjour,

    Justement tu as eu la bonne reflexion, c'est bien ORDER BY filleuls
    Tu dis dans ta requete que Filleuls = COUNT(), donc tu peux l'utiliser dans le ORDER by comme si c'était un élément de ta table.


    GoT
    Oui mais mon souci comme dis plus haut, c'est que le ORDER BY filleuls ca va rien me retourner PUISQUE le COUNT est calculé en fonction de la variable du while.

  4. #4
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Jusd'abricot, tu as testé ce que j'ai mit?

    Certes ça te fait changer un peu ton code php puisque j'ai inclut le résultat de ta première requête dans la seconde mais bon ^^

    Tu gagnes un while
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Merci Deallyra d'avoir pris le temps de me repondre.

    Je suis actuellement en train d'étudier ton code pour voir comment l'intégrer

    Il y a des choses que je ne connais pas du tout:

    GROUP BY et IS IN donc je regarde en mm temps sur le manuel

    Je te dis ca a fonctionné dans 5 min

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2007
    Messages : 148
    Par défaut
    Bonjour,

    Mais as-tu essayé ce que je t'ai dis au moins? Que ca fasse des calculs ou pas, la solution est bien là
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *, GREATEST(ABS(x - $joueur_etat_X), ABS(y - $joueur_etat_Y)) AS distance
     FROM pnj
     WHERE x BETWEEN $xmin AND $xmax AND
           y BETWEEN $ymin AND $ymax $pnj_select
           AND id_carte = '$joueur_etat_id_carte'
     ORDER BY `distance` ASC

    Une de mes requête, je fais une GREATEST, ça m'empêche pas de faire un GROUP BY.

    GoT


    EDIT : AU passage tu aurais du faire ta requête en une seule requête,


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT a.id, COUNT(b.ref) AS filleuls 
    FROM `membres` AS a, `membres`AS b 
    WHERE a.id=b.ref ORDER BY filleuls

    Une auto jointure devrait être plus efficace qu'une suite de requête. Enfin logiquement ça devrait marcher ^^'

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 24
    Par défaut
    Ok donc voila le code que j'ai mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
     
    $res= sql::exec("SELECT * FROM `membres`");
    while($membre=mysql_fetch_object($res)){
    $filleuls=mysql_query('SELECT COUNT(*) AS filleuls FROM membres M WHERE M.id IS IN (SELECT * FROM MEMBRE) GROUP BY filleuls ORDER BY filleuls ASC;');
    ?>
    Par contre mon <?php echo $filleuls->filleuls; ?> ne m'affiche rien du tout

    Donc j'ai du me planter quelquepart (pour changer)

  8. #8
    Inactif   Avatar de Deallyra
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    1 997
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 1 997
    Par défaut
    Bonjour,

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS filleuls
    FROM membres M
    WHERE M.id IS IN (SELECT * FROM MEMBRE)
    group by filleuls
    order by filleuls asc;

    Tu peux tester ceci cependant, n'ayant pas fait de SQL depuis près de huit mois... Je ne suis pas sûre que tu obtiennes le résultat escompté.

    Sinon, le bon forum pour poster aurait été

    php sgbd

    edit : grillée mais ma solution est plus complète >.<
    *Si la réponse vous convient, n'oubliez pas le tag
    *Exprimez vous dans un français correct; on prend le temps de vous lire, prenez le temps de bien écrire.
    *Et comment on interprète votre code? N'oubliez pas la balise!

    *Pour une mise en page simple avec des divs.
    *Pour faire des formulaires xHTML CSS.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Requête] order by difficile sur deux champs
    Par new_wave dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/09/2006, 17h02
  2. affichage requete
    Par fbu78 dans le forum Access
    Réponses: 5
    Dernier message: 30/03/2006, 19h19
  3. [débutant] Affichage requetes et sous requetes
    Par max63_ dans le forum Access
    Réponses: 2
    Dernier message: 09/03/2006, 15h23
  4. affichage requete
    Par pierrot67 dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/02/2006, 08h20
  5. LIBPQ - Affichage requete dans table virtuelle
    Par Mike@Nestor dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 27/07/2005, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo