[Résolu] Trier requète avec liste déroulante
Posté : 06 nov. 2011, 17:19
Voici un code PHP pour sélectionner des articles qui fonctionne bien, néanmoins je souhaiterais l’améliorer avec une liste déroulante qui permettrait de faire trois tri par sélection...
Et bien sur, vous vous en doutez je ne sais par quel bout commencer ..
Après l’avoir déclaré comme ceci :
$trier = isset($_POST['tri']) ? $_POST['tri'] : '';
$trier = mysql_escape_string($_POST['tri']);
Mais je n’ai aucun résultat, si ce n’est une erreur…
Y a-t-il une âme charitable pour m’aider dans ma requête ?
Cordialement
Et bien sur, vous vous en doutez je ne sais par quel bout commencer ..
<?php
$currentPage = $_SERVER["PHP_SELF"];
$colname_SousCat = "1";
if (isset($_GET['id'])) {
$colname_SousCat = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($Nom_bdd, $connection_base);
$query_SousCat = sprintf("SELECT * FROM table_sous_categories WHERE id = %s", $colname_SousCat);
$SousCat = mysql_query($query_SousCat, $connection_base) or die(mysql_error());
$row_SousCat = mysql_fetch_assoc($SousCat);
$totalRows_SousCat = mysql_num_rows($SousCat);
$idURL_Cat = "1";
if (isset($_GET['id'])) {
$idURL_Cat = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($Nom_bdd, $connection_base);
$query_Cat = sprintf("SELECT table_categories.intitule, table_categories.id FROM table_categories INNER JOIN table_sous_categories ON table_sous_categories.parent=table_categories.id WHERE table_sous_categories.id = %s", $idURL_Cat);
$Cat = mysql_query($query_Cat, $connection_base) or die(mysql_error());
$row_Cat = mysql_fetch_assoc($Cat);
$totalRows_Cat = mysql_num_rows($Cat);
$maxRows_articles = 5;
$pageNum_articles = 0;
if (isset($_GET['pageNum_articles'])) {
$pageNum_articles = $_GET['pageNum_articles'];
}
$startRow_articles = $pageNum_articles * $maxRows_articles;
$idURL_articles = "1";
if (isset($_GET['id'])) {
$idURL_articles = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($Nom_bdd, $connection_base);
// Ligne ci-dessous concernée pour remplacer prix_ttc par le résultat de la liste déroulante
$query_articles = sprintf("SELECT * FROM table_articles WHERE table_articles.categorie = %s or table_articles.sous_categorie = %s ORDER BY table_articles.prix_ttc", $idURL_articles,$idURL_articles);
$query_limit_articles = sprintf("%s LIMIT %d, %d", $query_articles, $startRow_articles, $maxRows_articles);
$articles = mysql_query($query_limit_articles, $connection_base) or die(mysql_error());
$row_articles = mysql_fetch_assoc($articles);
if (isset($_GET['totalRows_articles'])) {
$totalRows_articles = $_GET['totalRows_articles'];
} else {
$all_articles = mysql_query($query_articles);
$totalRows_articles = mysql_num_rows($all_articles);
}
$totalPages_articles = ceil($totalRows_articles/$maxRows_articles)-1;
$queryString_articles = "";
if (!empty($_SERVER['QUERY_STRING'])) {
$params = explode("&", $_SERVER['QUERY_STRING']);
$newParams = array();
foreach ($params as $param) {
if (stristr($param, "pageNum_articles") == false and
stristr($param, "totalRows_articles") == false) {
array_push($newParams, $param);
}
}
if (count($newParams) != 0) {
$queryString_articles = "&" . htmlentities(implode("&", $newParams));
}
}
$queryString_articles = sprintf("&totalRows_articles=%d%s", $totalRows_articles, $queryString_articles);
?>
Voici le formulaire avec lequel j’aimerais faire fonctionner la liste déroulante avec trois critères de sélection. <form action="" method="post" name="trier" id="trier">
<p style="text-align:center">
<select name="tri">
<option value="">Classer le catalogue par...</option>
<option value="prix_ttc">Article</option>
<option value="date_MEV">Date de vente</option>
<option value="type_article">Prix</option>
</select>
</p>
</form>
Comment dois-je procéder pour insérer le post tri dans la ligne suivante, à la place de prix_ttc :
$query_articles = sprintf("SELECT * FROM table_articles WHERE table_articles.categorie = %s or table_articles.sous_categorie = %s ORDER BY table_articles.prix_ttc", $idURL_articles,$idURL_articles);
Moi je pense à remplacer prix_ttc par $trier juste derrière ORDER BY table_articles.$trierAprès l’avoir déclaré comme ceci :
$trier = isset($_POST['tri']) ? $_POST['tri'] : '';
$trier = mysql_escape_string($_POST['tri']);
Mais je n’ai aucun résultat, si ce n’est une erreur…
Y a-t-il une âme charitable pour m’aider dans ma requête ?
Cordialement