Résolu PHP Filtrer les produits d'une base de données

Solutions (1)
Tags :
  • Php
  • Base de données
  • Select
  • MySQL
|
Bonjour à tous,

Je suis en train d'étudier le PHP et j'ai pour tp de créer une boutique en ligne entièrement en php/mysql.

J'ai affiché mes produits sur une page (je vends des ordinateurs 'fake') et mon problème est que je n'arrive pas à faire marcher le filtrage des produits.

Je m'explique :
Mes produits s'affichent sur la page grace à cette requête et à un while.
$requete = mysql_query("SELECT * FROM Ordinateur ORDER BY Marque") or die (mysql_error());

Je veux permettre au client de filtrer les produits en fonction de plusieurs critères grâce à un formulaire de cette forme :

J'ai donc créé le formulaire, par exemple :
<select name="utilisation">
<option selected="select" value="All">Tout(es)</option>
<option value="Multimedia">Multimedia</option>
<option value="Gaming">Gaming</option>
<option value="Polyvalent">Polyvalent</option>
</select>

Que dois-je faire ensuite pour que les filtres soient pris en compte quand on clique sur le bouton "filtrer" ?

Je n'ai pas trouvé de tutos ou exemple sur le net pour cela, si quelqu'un a un exemple ou l'a déjà fait, ce serait super sympa.

Merci d'avance,
Cordialement.
Contenus similaires
Meilleure solution
partage
|
la solution se trouve surtout dans ton analyse et ta base de donnée que tu devrai penser comme ceci (si tu a déjà fait un peu d’analyse ):

  1. Ordinateur (id.1, //donné propres au pc, #id_utilisation, #id_marque, #id_processeur, #id_os, #id_ram, #id_disque)
  2.  
  3. utilisation (id, libelle)
  4. marque (id, libelle)
  5. processeur (id, libelle)
  6. os (id, libelle)
  7. ram (id, libelle)
  8. disque (id, libelle)


je te recommande de changer tes select dans tes formulaire contre un truc du genre :

  1. <select name="utilisation">
  2. <option value="0">toutes</option>
  3. <?php
  4. $requete = mysql_query("SELECT * FROM utilisation");
  5. while (/*fetch de la requete*/){
  6. ?>
  7. <option value="<?php echo $requete["id"]; ?>"><?php echo $requete["libelle"]; ?></option>
  8. <?php
  9. }
  10. ?>
  11.  
  12. </select>


et quand l'utilisateur clique sur "filtrer" tu modifie la requête sql... un truc du genre :

  1. <?php
  2. $reqete="select * from ordianateur where 1=1";
  3. if(isset($_POST["utilisation"]) and $_POST["utilisation"]<0){
  4. $reqete+=" and utilisation=".$_POST["utilisation"];
  5. }
  6. if(isset($_POST["marque"]) and $_POST["marque"]<0){
  7. $reqete+=" and marque=".$_POST["marque"];
  8. }
  9. if(isset($_POST["processeur"]) and $_POST["processeur"]<0){
  10. $reqete+=" and processeur=".$_POST["processeur"];
  11. }
  12. if(isset($_POST["os"]) and $_POST["os"]<0){
  13. $reqete+=" and os=".$_POST["os"];
  14. }
  15. if(isset($_POST["ram"]) and $_POST["ram"]<0){
  16. $reqete+=" and ram=".$_POST["ram"];
  17. }
  18. if(isset($_POST["disque"]) and $_POST["disque"]<0){
  19. $reqete+=" and disque=".$_POST["disque"];
  20. }
  21. $reqete+=" order by marque;";
  22. ?>


je pence t'avoir suffisamment mis sur la piste , je vois pas ce que je peut faire d'autre pour toi ^^
  • Dreamcaster a sélectionné cette solution comme la meilleure réponse
  • mdj de normandie a édité ce message
  • mdj de normandie a édité ce message
  • Commenter cette solution |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS