Order by

Bonjour,

J'aimerais que l'internaute puisse trier les résultats par date ASC ou date DESC par le biais par exemple d'un menu déourant (form) avec deux options: du + récent au plus ancien, du plus ancien au plus récent

Mon code est le suivant et par défaut je trie les données par date DESC

$req= $bdd->prepare('SELECT *
FROM articles, articles_themes
WHERE id=articles_id AND themes_id=?
ORDER BY date DESC
LIMIT '.(($cPage-1)*$perPage).','.$perPage.'');//
$req->execute(array($_GET['themes_id']));

while($donnees2 = $req->fetch()){
echo "<a href=\"{$donnees2["url"]}-{$donnees2["id"]}\"> ";

Que faut-il ajouter et modifier?

Merci

4 réponses

  1. tu peut faire
    avec les radios
    echo "<form action='ton_url' method='get'>";
    echo "ASC <input type='radio' name='trie' value='asc'>";
    echo "DESC <input type='radio' name='trie' value='desc'>";
    echo "</form>";
    

    avec SELECT
    echo "<form action='ton_url' method='get'>";
    echo "Choisissez un trie <select name="trie">
    echo "<option value='desc'>DESC</option>";
    echo "<option value='asc'>ASC</option>";
    echo "</select>";
    
    0
    1. j'ai executé cela:
      $trie = isset($_GET['trie'])?$_GET['trie']:'DESC';
      var_dump($trie);//me renvoie string(4) "DESC" ou string(3) "ASC"

      $req= $bdd->prepare('SELECT *
      FROM articles, articles_themes
      WHERE id=articles_id AND themes_id=?
      ORDER BY date '.$trie.'
      LIMIT '.(($cPage-1)*$perPage).','.$perPage.'');//
      $req->execute(array($_GET['themes_id']));

      A partir de là, comment construire un formulaire reprenant le ASC et le DESC pour que l'internaute puisse choisir, je ne sais pas mélanger du "form" et du "php"

      Merci à vous
      0
      1. merci de ta réponse :) en faite il faut passer par une variable dans le order by

        je testerai ce soir en rentrant
        0
        1. salut
          je te décrirai la méthode que je te propose en étape j'espère que ca t'aiderai

          1- Au tous début de ton code tu suppose que l'utilisateur a envoyer son choix pour le tri par la methode GET ou POST c'est a ta guise mais ici je suppose que c'est GET

          2- donc tu va nommer une variable $trie qui va contenir soit ASC soit DESC et si elle n'est pas envoyer ou n'exista pas tu la met par defaut a DESC ce qui donne

          $trie = isset($_GET['trie'])?$_GET['trie']:'DESC';

          3- On arrive maintenant au moment ou tu fait le select donc ton code va devenir

          $req= $bdd->prepare('SELECT *
          FROM articles, articles_themes
          WHERE id=articles_id AND themes_id=?
          ORDER BY date $trie
          LIMIT '.(($cPage-1)*$perPage).','.$perPage.'');//
          $req->execute(array($_GET['themes_id']));

          while($donnees2 = $req->fetch()){
          echo "<a href=\"{$donnees2["url"]}-{$donnees2["id"]}\"> ";

          4- j'espere que ca t'aporte le bonheur
          0