recuperer les donnes d'une table depends des champs choisit

Petit nouveau ! | 9 Messages

29 sept. 2010, 23:59

Bonjour
Mon problème est le suivant:
je veux récupérer les données d'une table mais ca dépend des champs choisit par l'utilisateur , mon code de select est le suivant :
$reponse = $bdd->query("SELECT * FROM produits
where categorie=$categorie AND prix=$prix AND marque=$marque ville=$ville
");
l'utilisation de AND oblige l'utilisateur de remplir tout les champs (c'est pas ce que je veux).
l'utilisation de OR ne va pas afficher les données exacte
je veux que l'utilisateur remplit librement les champs et obtenir des résultat exacte
s'il vous plait j'ai besoin a votre aide

Merci d'avance

Mammouth du PHP | 881 Messages

30 sept. 2010, 05:56

Bonjour,

Ce que je peux te conseiller, c'est de sortir l'écriture de la requête de son exploitation, puis de la construire au gré des réponses obtenues.

Première étape: on sort la définition de la requête:
$requete = "SELECT * FROM produits where categorie=$categorie AND prix=$prix AND marque=$marque ville=$ville ";
$reponse = $bdd->query($requete);
Tant qu'à faire, pourquoi ne pas sortir les variables de la phrase:
$requete = "SELECT * FROM produits where categorie=".$categorie." AND prix=".$prix." AND marque=".$marque." AND ville=".$ville." ";
$reponse = $bdd->query($requete);
Cela étant fait, construisons la requête en fonction de ce que les usagers ont répondu:
$compte = 0;  //un marqueur, question de savoir si nous aurons à inclure "AND" ou non entre les analyses
$requete = "SELECT * FROM produits WHERE ";
if (trim($categorie) != '') { 
           $requete .= "categorie=".$categorie." "; 
           $compte = $compte + 1; 
}
if (trim($prix) != '' ) { 
          if ($compte > 0) { $requete .= " AND "; } 
          $requete .= " prix=".$prix." ";
           $compte = $compte + 1; 
}

//Tu peux faire la même chose avec $marque et $ville, je t'en laisse le loisir.
$requete .= " AND marque=".$marque." AND ville=".$ville." ";
$reponse = $bdd->query($requete);

Je sais, on me le dira certainement, j'aurais pu proposer l'usager de $compte++ à la place de $compte = ...
On peut faire plus simple avec des variables venant d'un tableau, mais bon.

Bonne chance.
Soyez artisans de paix

Invité
Invité n'ayant pas de compte PHPfrance

30 sept. 2010, 11:36

Bonjour
D'abord je vous remercie beaucoup pour votre réponse je vais essayer votre code je vois que c'est logique

Merci beaucoup

Merci :)