Order by

gabbermaniac Messages postés 147 Statut Membre -  
thunder413 Messages postés 169 Statut Membre -
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

thunder413 Messages postés 169 Statut Membre 23
 
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
gabbermaniac Messages postés 147 Statut Membre 12
 
merci de ta réponse :) en faite il faut passer par une variable dans le order by

je testerai ce soir en rentrant
0
gabbermaniac Messages postés 147 Statut Membre 12
 
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
thunder413 Messages postés 169 Statut Membre 23
 
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