[Résolu] Trier requète avec liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [Résolu] Trier requète avec liste déroulante

Re: Trier requète avec liste déroulante

par brother » 07 nov. 2011, 01:11

Bonjour,

Merci beaucoup, opération réussi... =D>

Re: Trier requète avec liste déroulante

par xTG » 06 nov. 2011, 17:26

Quelle est l'erreur ?

Sinon il serait plus souple de remplacer le order by complet, ou bien de lui affecter une valeur par défaut.
$trier = isset($_POST['tri']) ? mysql_real_escape_string($_POST['tri']) : 'prix_ttc'; // le champ ou bien la valeur par défaut

[Résolu] Trier requète avec liste déroulante

par brother » 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 ..
	<?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.$trier

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