Bonsoir à tous,
J'ai de faibles connaissances en PHP et j'ai bien conscience que même si certaines parties de mon code fonctionnent, ce n'est pas comme ça qu'il faut faire...
Je n'arrive pas à trouver la solution simple pour faire un classement croissant (ou décroissant) sur un tableau autrement que comme ça :
(interdit de se moquer)
session_start();
if(isset($_SESSION['ordre'])){
if($_SESSION['ordre']=='ASC'){
$_SESSION['ordre']='DESC';
}
else {
$_SESSION['ordre']='ASC';
}
}
else {
$_SESSION['ordre']='DESC';
}
if (isset($_GET['tri'])) {
$tri = $_GET['tri'];
$ordre = $_SESSION['ordre'];
$req = $bdd->query("SELECT * FROM comptesrendus ORDER BY $tri $ordre");
}
else {
$_SESSION['ordre']='DESC';
$ordre = $_SESSION['ordre'];
$sql = "SELECT * FROM comptesrendus ORDER BY quand $ordre";
$req = $bdd->query($sql);
}
?>
<th style ="width:562px;text-align: center;"><a href="comptesrendus.php?tri=titre&ordre=<?php echo $ordre ?>" title="Classement par titres...">ARTICLES</a></th>
Merci à ceux qui pourraient m'aider à rendre cette partie fonctionnelle plus "propre" !
Il y a quelque chose que je ne comprends pas dans ton code.
En cliquant sur le lien, tu transmets l'ordre voulu (tout comme pour le champ sur lequel faire le tri) via la méthode get, et donc via l'url.
Donc, pourquoi est-ce que tu cherches à récupérer l'ordre dans la session au lieu de le récupérer via l'url ?
Merci pour vos réponses...
@Benjamin : J'avais vu la fonction sort() mais je ne vois pas comment l'adapter à mon cas. La doc parle
du tri d'un tableau array et je suis sur une table, résultat d'une requête depuis une base de données...
(désolé de ne pas avoir été plus clair dans l'énoncé de mon problème !)
@Lartak : J'ai déjà pour un autre site mis 2 icones/liens avec la transmission en méthode get, l'un croissant,
l'autre décroissant. Je voulais cette fois qu'un même lien (le nom de la colonne) donne le même résultat. J'ai donc
à ma manière "codé" une sorte de bascule, mais j'ai conscience qu'il doit y avoir une méthode plus simple et plus "PRO".
J'ai fait des essais avec switch($ordre) mais ils n'ont pas fonctionnés (ou je n'ai pas su faire ce qui est plus probable)...