PHP liste deroulante actualiser requette

Fermé
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 - 4 mai 2012 à 17:52
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 4 mai 2012 à 19:12
Bonjour,

J'essaye actuellement d'utiliser une liste deroulante,
pour utiliser un filtrage sur la base de donnee SQL.

<!-- CONTENT -->
<div class="content-center">
<div id="products-list">
<header>
<p class="counter"><strong>01-08</strong> sur 40</p> <!-- pas encore mis en place -->

<form method="GET" action=""><select name="trie" action="">
<option value="prixAsc">Prix croissant</option>
<option value="prixDesc">Prix décroissant</option>
<option value="dateAsc">Date croissante</option>
<option value="dateDesc">Date décroissante</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 {
echo 'sa ne marche pas';
$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 le contenu de la table en fonction de la variable tri
$sql = 'SELECT * FROM produits ORDER BY '.$tri.' LIMIT 0, 12';
$reponse = $bdd->query($sql);

// 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());
}

?>

mon souci c'est que la page s'affiche bien,
mais méme en selectionnant un autre choix dans la liste deroulante l'affichage reste pareil.

je pense qu'il faudrait réinjecter la variable dans la requette,
mais je ne trouve pas comment faire.
A voir également:

6 réponses

sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
4 mai 2012 à 18:04
UP
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
4 mai 2012 à 18:06
Salut,

Peut être en ajoutant un onchange="javascript:submit(this)" sur le select de la liste déroulante, ce qui rechargerait la page et relancerait la requête avec le nouveau choix ..?
0
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
4 mai 2012 à 18:10
Sa marche enfin!!!! merci à toi!!

j'avais deja vus cette methode sauf que je l'avais mal orthographier!!

efficace et rapide.

le soucis est résolu.

merci encore
0
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
4 mai 2012 à 18:27
Enfin presque!!!! lol
autre soucis du à l'ajout de ce code :

quand je selectionne un autre choix l'actualisation fonctionne,
mais la liste deroulante reste sur le choix par defaut!!! etonnant.

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

je souhaiterais que lorsque l'utilisateur selectionne un choix que la page s'actualise, mais aussi que la liste deroulante affiche se choix.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sonar974 Messages postés 44 Date d'inscription jeudi 3 mai 2012 Statut Membre Dernière intervention 15 septembre 2017 4
4 mai 2012 à 18:44
UP
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
4 mai 2012 à 19:12
<option value="prixAsc" <?php if (isset($_POST['trie']) && $_POST['trie']=="prixAsc") echo 'selected="selected"';?>>Prix croissant</option>

A faire pour chaque option.
0