Page 1 sur 1

Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 13:10
par aussie74
Bonjour à tous,
Je débute en php et j'ai un problème avec le choix "tous" dans ma liste déroulante.
J'ai une bdd "fournisseur" contenant les champs idFourn et nomFourn et une bdd "produits" contenant les champs idProduit et idFourn.
Ma liste déroulante doit permettre de filtrer les produits par fournisseur.
Ma requête est donc la suivante : select idProduit, nomFourn from produit, fournisseur where produit.idFourn=fournisseur.idFourn and produit.idFourn=$_POST['fournisseur']
Comment faire pour que lorqu'on sélectionne "tous" on obtienne l'équivalent de a requête suivante select idProduit, nomFourn from produit, fournisseur where produit.idFourn=fournisseur.idFourn
J'avais pensé faire en sorte que la valeur du $_POST soit fournisseur.idFourn mais cela ne me paraît pas très propre.
Merci d'avance pour votre aide

Re: Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 14:36
par moogli
Salut,


Il que tu utilise le prédicat (clause where suivant la valeur de ta liste).
Pour la suite je vais supposer que lorsque l'on sélectionne "tous" le champ de formulaire retourne "tous".
On commence par "normaliser" la requête
select idProduit, nomFourn from produit join fournisseur using(idFourn) where produit.idFourn=$_POST['fournisseur'];
Ensuite côté php
<?php
$sql = 'select idProduit, nomFourn from produit join fournisseur using(idFourn)';
if(!empty($_POST['fournisseur']) && $_POST['fournisseur'] != 'tous') {
$sql .= ' where produit.idFourn='.$_POST['fournisseur'];
}
// exécution de la requête SQL 
?>
Attention cette requête est sujette aux injections SQL a toi de la protéger ;)

@+

Re: Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 15:20
par aussie74
Salut moogli,
Merci pour ta réponse.
Mon problème est là : je ne sais pas quoi mettre dans la valeur du formulaire lorsqu'on sélectionne "tous" ...

Re: Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 15:34
par moogli
Ben tous ;)
<option value="tous">Tous les fournisseurs</option>

Et dans ce cas tu n'utilise pas de condition where ;)

C'est ce que fait le code que j'ai mis plus haut.

@+

Re: Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 15:48
par aussie74
OK ça y est, je crois avoir compris.
Par contre mon prof ne m'a pas enseigné cette méthode pour les jointures, je les fais avec un where.
Dans ces cas là, je pense qu'il me suffit de rajouter un AND et de faire $sql .= ' AND where produit.idFourn='.$_POST['fournisseur'];

Re: Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 16:18
par aussie74
Merci moogli, ça fonctionne parfaitement

Re: [RESOLU] Sélection "tous" par liste déroulante

Posté : 15 déc. 2012, 18:16
par moogli
de rien :)