PHP liste deroulante et requete sql select

Résolu/Fermé
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 - 3 mai 2012 à 17:59
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 - 3 mai 2012 à 21:19
Bonjour,

etant debutant en PHP/MYSQL,
je suis actuellement entrin de codé un ecommerce,
le design html est en place !!!
la partie du code php que j'ai mis en place fonctionne bien mais pour aller plus loin,
j'ai une list deroulante pour le trie et je souhaiterais utiliser cette liste deroulante pour filtrer ma requete voici mon code :

<div class="content-center">
<div id="products-list">
<header>
<p class="counter"><strong>01-08</strong> sur 40 créations</p>
<select name="trie">
<option>Date</option>
<option>Prix croissant</option>
<option>Prix décroissant</option>
<option>Nom de A-Z</option>
<option>Nom de Z-A</option>
</select>
</header>
<div class="products">
<?php

try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=catatest', 'root', '', $pdo_options);

// On récupère tout le contenu de la table
$reponse = $bdd->query('SELECT * FROM produits LIMIT 0, 12');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<article>
<figure><a href="produit.php?ID=<?php echo $donnees['ID']; ?>" title="Informations produits"><img src="<?php echo $donnees['photo']; ?>" alt="" /></figure>
<figcaption>
<h2>
<span class="title"><?php echo $donnees['prix']; ?>€</span>
<span class="marque"><?php echo $donnees['marques']; ?> <?php echo $donnees['ref']; ?></span>
<br />
</h2>
<br />
</figcaption>
</article>
</em>
</p>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}


?>

si vous m'avais compris ce qui me pose probleme c'est sa :

<select name="trie">
<option>Date</option>
<option>Prix croissant</option>
<option>Prix décroissant</option>
<option>Nom de A-Z</option>
<option>Nom de Z-A</option>
</select>
utiliser un choix pour l'injecter dans ma requete ici :
$reponse = $bdd->query('SELECT * FROM produits LIMIT 0, 12');

merci d'avance

6 réponses

sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
3 mai 2012 à 21:19
si sa peu aider quelqu'un

<!-- CONTENT -->
<div class="content-center">
<div id="products-list">
<header>
<p class="counter"><strong>01-08</strong> sur 40 créations</p>
<!--- <select name="trie">
<option>Date</option>
<option>Prix croissant</option>
<option>Prix décroissant</option>
<option>Nom de A-Z</option>
<option>Nom de Z-A</option>
</select> --->

<form method="GET" action=""><select name="trie" action="">
<option value="dateAsc">Date croissante</option>
<option value="dateDesc">Date décroissante</option>
<option value="prixAsc">Prix croissant</option>
<option value="prixDesc">Prix décroissant</option>
<option value="nomAsc">Nom A-Z</option>
<option value="nomDesc">Nom Z-A</option>
</select>
</form>

</header>
<div class="products">

<?php
if(isset($_GET['trie'])) {
switch($_GET['trie']) {
case 'dateAsc':
$tri = 'date ASC';
break;

case 'dateDesc':
$tri = 'date DESC';
break;

case 'prixAsc':
$tri = 'prix ASC';
break;

case 'prixDesc':
$tri = 'prix DESC';
break;

default:
$tri = 'prix ASC';
break;
}
} else {
$tri = 'prix ASC';
}

try
{
// On se connecte à MySQL
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=catatest', 'root', '', $pdo_options);

// On récupère tout le contenu de la table

$reponse = $bdd->query('SELECT * FROM produits ORDER BY ".$tri." ASC LIMIT 0, 12');
//$reponse = $bdd->query('SELECT * FROM produits LIMIT 0, 12');

// On affiche chaque entrée une à une
while ($donnees = $reponse->fetch())
{
?>
<p>
<article>
<figure><a href="produit.php?ID=<?php echo $donnees['ID']; ?>" title="Informations produits"><img src="<?php echo $donnees['photo']; ?>" alt="" /></figure>
<figcaption>
<h2>
<span class="title"><?php echo $donnees['prix']; ?>€</span>
<span class="marque"><?php echo $donnees['marques']; ?> <?php echo $donnees['ref']; ?></span>
<br />
</h2>
<br />
</figcaption>
</article>
</em>
</p>
<?php
}

$reponse->closeCursor(); // Termine le traitement de la requête

}
catch(Exception $e)
{
// En cas d'erreur précédemment, on affiche un message et on arrête tout
die('Erreur : '.$e->getMessage());
}

?>

cette methode n'affiche aucune erreur,
cepandant je pense qui faudrais un bouton pour activer le filtrage
2