Partage
  • Partager sur Facebook
  • Partager sur Twitter

Order by en dehors d'une requête

M'enfin...

Sujet résolu
    8 avril 2006 à 19:44:11

    Bonsoir tout le monde,

    Je suis confronté à un joli casse-tête, j'espère que j'obtiendrai quelques idées sur le forum (éventuellement une solution, mais bon)... Voici le problème :)

    J'ai 3 tables :
    - une pour des articles
    - une pour des catégories
    - une pour les correspondances articles/catégories

    Lorsque j'affiche ma page categorie.php (le nom importe peu en fait), je veux afficher dessus les caractéristiques de la catégorie (no problem), mais également les articles rattachés à cette catégorie. Là encore, tout va bien, MAIS les champs dans la table des correspondances sont :
    - id (afin de supprimer la correspondance)
    - id_categorie
    - id_article

    Voici venir le problème : ma requête est du type...

    $q = mysql_query("SELECT * FROM correspondances WHERE id_categorie = '".$_GET['id_categorie']."'");
    while($article = mysql_fetch_array($q))
    {
    // affichage des titres des articles par requêtes successives
    }


    ... et le seul argument que je puisse donner à un éventuel ORDER BY serait l'ID des articles. Or, je voudrais pouvoir les ordonner par odre alphabétique. C'est à dire selon la ou les premières lettres du titre de l'article.

    Bon, ce que me donne cette requête, c'est un tableau avec des variables $article['id_article']. Après cela, je fais une requête par $article['id_article'], pour chercher dans la table articles le nom de l'article, et l'afficher avec un lien vers celui-ci. Se pourrait-il qu'à partir de ce résultat, je réordonne la liste d'articles, afin de l'afficher dans l'ordre alphabétique ?

    Bon, je sais que je suis exigeant, mais pour moi ce sera sans doute le seul moyen de m'y retrouver, avec tous ces articles... Parceque pour l'instant, c'est un gentil bazarre... :-°

    Goldwaith
    • Partager sur Facebook
    • Partager sur Twitter
      8 avril 2006 à 19:46:53

      Il suffit de faire ORDER BY titre ASC


      $q = mysql_query("SELECT * FROM correspondances WHERE id_categorie = '".$_GET['id_categorie']."' ORDER BY titre ASC");
      while($article = mysql_fetch_array($q))
      {
      // affichage des titres des articles par requêtes successives
      }
      • Partager sur Facebook
      • Partager sur Twitter
        8 avril 2006 à 19:53:10

        Justement non, la table des correspondances ne contient que l'ID de l'article, pas son titre... :D
        • Partager sur Facebook
        • Partager sur Twitter
          9 avril 2006 à 0:05:34

          SELECT c.id, c.id_categorie, c.id_article, a.titre FROM correspondances c LEFT JOIN articles a ON id_article = a.id ORDER BY a.titre;
          • Partager sur Facebook
          • Partager sur Twitter
            9 avril 2006 à 13:28:33

            Wahou, jamais vu de truc pareil... ^^ Je vais essayer de voir tout cela : si je comprends bien, ta requête sélectionne des données dans la table "correspondances", en y joignant le nom de l'article correspondant à l'ID.

            Le lien entre les tables, s'effectue par c LEFT JOIN ... ON.

            Eh bien, si cela fonctionne, je crois que je te dois une fière chandelle, Shepard ;)

            EDIT : Dans mes bras, mon sauveur ! Ohhh, c'est trop beau, merci infiniment ! :ange:
            • Partager sur Facebook
            • Partager sur Twitter

            Order by en dehors d'une requête

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown