Tri de ma table sql avec bouton a href

Résolu/Fermé
Signaler
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
-
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
-
Hello les gens petit problème du jour si quelqu'un peut m'apporter ses lumières.

Je veux trier ma table sql par ordre de prix croissant ou décroissant en appuyant simplement sur un bouton voila mon code :


if (!isset($_REQUEST["orderby"])) {

$orderby = "prix *1 ASC";

}else{

$orderby = "date ASC";

}

$q = "SELECT
articlesmobilier.id,
articlesmobilier.titre,
articlesmobilier.gamme,
articlesmobilier.slogan,
articlesMobilier.largeurMobilier,
articlesmobilier.hauteurMobilier,
articlesmobilier.prix,
articlesmobilier.description,
articlesmobilier.options,
articlesmobilier.dossierCatalogue,
articlesmobilier.nomCatalogue,
articlesmobilier.image,
articlesmobilier.date,
articlesmobilier.categorie
FROM articlesmobilier
WHERE articlesmobilier.categorie = '$categorie'
AND articlesmobilier.id != $id
ORDER BY $orderby
";


et voila mon a href qui est sur une autre page :


<div class="triArticles">
<a href="<?php $_REQUEST["categorie"]?>?orderby=asc">Ordre croissant</a>
</div>


Tout dois marcher normalement ?? je ne comprend pas ou est mon erreur car rien ne ce passe.....il passe bien dans le if mais reste toujours sur la première condition ???

Merci par avance de votre aide.

François.

3 réponses

Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
3 990
Bonjour,
TU ne changes pas ton lien .. donc il est toujours sur ASC...
Essayes un truc du genre :
<div class="triArticles">
	<a href="<?php $_REQUEST["categorie"]?>?orderby=<?php  echo $_GET['orderby']=='asc' ? 'desc' : 'asc';  ?>">Ordre croissant</a>
</div>


0
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
3 990
Et dans le PHP
$order = isset($_REQUEST["orderby"])?$_REQUEST["orderby"]:'asc';
if ($order=='asc')) {
 $orderby = "prix *1 ASC";
}else{
 $orderby = "prix *1 DESC";
}

0
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
1
Ce n'est pas le fais que je change de lien normalement quand je clic sur le lien que j'ai fais il mes bien dans l'url "orderby" et comme cité dans le if si il est !isset il range tout par date sinon par prix mais il n'y qu'une seule condition qui marche à chaque fois...
0
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
3 990
Désolé.. je pensais à du ASC ou DESC.
Ok ..

Donc :
<div class="triArticles">
	<a href="<?php $_REQUEST["categorie"]?>?orderby=<?php  echo $_GET['orderby']=='asc' ? 'asc' : '';  ?>">Ordre croissant</a>
</div>


et dans le PHP:
$order = isset($_REQUEST["orderby"]) && !empty($_REQUEST["orderby"])?TRUE:FALSE);
if (!$order)) {
	$orderby = "prix *1 ASC";
}else{
	$orderby = "date ASC";
}
0
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
1
Merci de prendre de votre temps mais cette solution n'est pas bonne j'ai essayé cela mais ça ne marche toujours pas.... :


if (!isset($_REQUEST["orderby"])) {
$orderby = "date ASC";
}

if (isset($_REQUEST["orderby"]) && $_REQUEST["orderby"] == "asc") {

$orderby = "prix *1 ASC";

}

if (isset($_REQUEST["orderby"]) && $_REQUEST["orderby"] == "desc") {

$orderby = "prix *1 DESC";

}

$q = "SELECT
articlesmobilier.id,
articlesmobilier.titre,
articlesmobilier.gamme,
articlesmobilier.slogan,
articlesMobilier.largeurMobilier,
articlesmobilier.hauteurMobilier,
articlesmobilier.prix,
articlesmobilier.description,
articlesmobilier.options,
articlesmobilier.dossierCatalogue,
articlesmobilier.nomCatalogue,
articlesmobilier.image,
articlesmobilier.date,
articlesmobilier.categorie
FROM articlesmobilier
WHERE articlesmobilier.categorie = '$categorie'
AND articlesmobilier.id != $id
ORDER BY $orderby
";


Liens :


<div class="triArticles">
<a href="<?php $_REQUEST["categorie"]?>?orderby=asc">Ordre croissant</a>
<a href="<?php $_REQUEST["categorie"]?>?orderby=desc">Ordre croissant</a>
</div>


Je comprend vraiment pas mon code est pourtant enfin je crois...
0
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
1
Si le le paramètre orderby est = asc il me fais mes les articles par prix en ASC et si il est égal à desc alors par prix en DESC et sinon par date je comprend pas c'est pourtant d'un simple ce genre de choses....
0
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
3 990

Si le le paramètre orderby est = asc il me fais mes les articles par prix en ASC et si il est égal à desc alors par prix en DESC et sinon par date je comprend pas c'est pourtant d'un simple ce genre de choses....

Ah ok.. là c'est clair....

Donc :
$order = isset($_REQUEST["orderby"]) && !empty($_REQUEST["orderby"])?$_REQUEST["orderby"]:FALSE);
switch($order){
 case 'asc':
  $orderby = "prix *1 ASC";
  break;
 case 'desc':
  $orderby = "prix *1 DESC";
  break;
 default:
  $orderby = "date ASC";
  break;
}






0
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
1
Merci d'avoir pris le temps mais j'ai fini par trouver.
0
Messages postés
34667
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 janvier 2022
3 990 >
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015

Tu as fais quoi alors ?
0
Messages postés
107
Date d'inscription
lundi 30 septembre 2013
Statut
Membre
Dernière intervention
1 décembre 2015
1
J'ai tout simplement fais ceci :


if (!isset($_GET["orderby"])) {
$orderby = "date ASC";
}

if (isset($_GET["orderby"])) {
if ($_GET["orderby"] == "prixcroissant") {

$orderby = "prix *1 ASC";

}

if ($_GET["orderby"] == "prixdecroissant") {

$orderby = "prix *1 DESC";

}

if ($_GET["orderby"] == "derniersparus") {

$orderby = "date ASC";

}
}


et les liens (j'ai rewriting les urls) :

<a href="<?php echo $_REQUEST["categorie"]?>_prixcroissant#infoArticles">Prix croissants</a>
<a href="<?php echo $_REQUEST["categorie"]?>_prixdecroissant#infoArticles">Prix décroissants</a>
<a href="<?php echo $_REQUEST["categorie"]?>_derniersparus#infoArticles">Derniers parus</a>
0