Tri du client dans une BDD

Bonjour, je souhaiterais que le visiteru de mons ite puisse trier les articles: afficher soit les Vidéos, soit les Animations, soit les Jeux, soit les Images.

Je voudrais remplire une variable PHP qui s'utiliserais dans un WHERE d'une commande SQL.
Le probleme, c'est comment remplir la variable PHP (disons $type) avec un lien qui ne changerais pas de page ?

Merci

--
<!-- Politically Lying Unholy Cowardly Killers. -->
Configuration: Windows XP
Firefox 3.0

9 réponses

  1. bonjour,

    si je comprend ton problème la solution est :

    $requette = "SELECT * FROM 'nomtable' WHERE type = 'video' ";

    remarque: nomtable = le nom de votre table
    type = le champs de trie
    1. Pas exactement, mon probleme se situerait plus au niveau du type.
      je fait des articles de type Video, Images, Anims.. etc.
      Mais si le visiteur voudrais voir seulement les videos, il lui suffirait de cliquer sur "Afficher seulement les videos" et la variable $type serais remplie de son choix.

      $requette = "SELECT * FROM 'nomtable' WHERE type = '$_GET['type']' ";

      Mon seul probleme : Comment la remplir ?
      Et, subsidiairement : L'utiliser par un $_POST ou par un $_GET ?

      Merci
      1. Quand il clique sur "Afficher seulement" tu recharges la page avec l'option ?type=videos à la suite de l'url, t'auras plus qu'à filtrer les éléments issus de la bdd.
        Pour le choix du POST ou GET, je crois que c'est plutot évident dans ton cas, non ?
        Pour rappel : http://www.j0k3r.net/php-formulaires-methode-post-ou-get-22.html
    2. tu peus créer un lien :

      <a href="page.php?type=videos">Afficher seulement les vidéos</a>

      et dans la page "page.php":
      utiliser where type=$_GET['type']
      1. Merci beaucoup pour vos réponses, ça fonctionne nickel !
        Merci encore.
        1. Encore une question,
          Si j'arrive sur la page, par défaut, il devrais se trouver tous les types d'articles, n'est-ce pas ?

          Faut-il utiliser un If ... Else... ?
          1. Faut-il utiliser un If ... Else... ?
            Tout à fait.
        2. D'accord, mais avec quels paramètres ?

          J'vois pas trop comment faire à vrai dire..
          1. Ben si $_GET['type'] est vide (chargement sans filtre), tu fais une requete sans WHERE (ie tu affiches toutes les données de ta bdd), sinon tu affiches avec le filtre $_GET['type'].
            Note : pour tester si une variable est initialisée en php on utilise isset().
        3. Ce qui donnerais ça ?
          Doit surement y avoir des erreurs, hein ^^

          if (isset($_GET['type']) == TRUE)
          {
          $premierArticleAAfficher = ($page - 1) * $nombreArticlesParPage; 
          $reponse = mysql_query('SELECT * FROM articles WHERE type=\'' .$_GET['type']. '\' ORDER BY id DESC LIMIT ' . $premierArticleAAfficher . ', ' . $nombreArticlesParPage);
          }
          else (isset($_GET['type']) == FALSE)
          [
          $premierArticleAAfficher = ($page - 1) * $nombreArticlesParPage; 
          $reponse = mysql_query('SELECT * FROM articles ORDER BY id DESC LIMIT ' . $premierArticleAAfficher . ', ' . $nombreArticlesParPage);
          }
          
          1. Ouaip le principe est là.
            3 remarques :
            1.faire un test a==true n'a pas de sens, car on suppose que a est un booléen, donc ==TRUE est superflu
            2.pas besoin de faire un deuxième test sur $_GET, puisque on a que deux cas ici, else seul suffit
            3.{ à la place d'une [ après le else
            code à tester...
        4. Avec les changements :

          if (isset($_GET['type']))
          {
          $premierArticleAAfficher = ($page - 1) * $nombreArticlesParPage; 
          $reponse = mysql_query('SELECT * FROM articles WHERE type=\'' .$_GET['type']. '\' ORDER BY id DESC LIMIT ' . $premierArticleAAfficher . ', ' . $nombreArticlesParPage);
          }
          else ()
          {
          $premierArticleAAfficher = ($page - 1) * $nombreArticlesParPage; 
          $reponse = mysql_query('SELECT * FROM articles ORDER BY id DESC LIMIT ' . $premierArticleAAfficher . ', ' . $nombreArticlesParPage);
          }
          


          Je le testerais une autre fois, pasque j'ai pas encore mon nouveau hebergeur (Payant), j'ai testé tout a l'heure avec mon hebergeur (Gratuit) et ça fonctionnait.
          1. Il reste une petite faute, mais tu la trouveras bien vite quand tu auras testé ;)