Requête vide car variable vide [Résolu]

Messages postés
16
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
2 novembre 2010
- - Dernière réponse : artkap
Messages postés
16
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
2 novembre 2010
- 12 janv. 2010 à 12:23
Bonjour,

voila j'ai un formulaire de recherche avec des select box.
Par default je leur ai attribué une valeure nulle :
<option value='' selected="selected"></option>
...

ma page php récupère les POST sauf que la requête ne me renvoi rien si un des champs n'a pas été choisi (si il a été laissé sur sa valeure nulle donc) car tous les champs sont rensieignés dans ma base.
Je voudrais simplement que la requete sql ignore cette varibale si rien n'a été select dans le choix déroulant.

Merci de votre aide.
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
3
Merci
Bon, donc si j'ai bien compris, tu as deux <select>, l'une avec les propriétés et une autre avec les applications.

L'utilisateur peux choisir de les remplir ou non et soumettre le formulaire, c'est bien ca ?

Et bien il faut que tu crée ton SELECT SQL en fonction de ce qui est retourné par ton formulaire...

<?php
// Dans $where on meteras la clause WHERE de ton select,
// cette clause dépends de tes variables renvoyées par 
// le formulaire.
$where = "";

// Si ton formulaire a spécifié un toto, on crée la 
// clause where avec le toto
if(isset($toto) and $toto != null)
   $where "WHERE propriete '$toto'";

// Si ton formulaire a spécifié un tata et que le
// toto est déjà présent dans le where, on ajoute
// le tata à la clause WHERE déjà crée
if(isset($tata) and $tata != null and $where != "")
{
   $where ." AND application '$tata'";
}
// Sinon si ton formulaire a spécifié un tata et que le
// toto n'est pas spécifié, on crée une clause where
// avec le tata
elseif(isset($tata) and $tata !null and $where "")
{
   $where "WHERE application '$tata'";
}
// Si ni toto ni tata n'est spécifié dans le formulaire
// la clause WHERE seras vide

$sql = "SELECT * FROM produits $where";
// $sql contient donc soit
// SELECT * FROM produits WHERE propriete='ta valeurn toto sécurisée'
// SELECT * FROM produits WHERE propriete='ta valeur toto sécurisée' AND application='Ta valeur tata sécurisée'
// SELECT * FROM produits WHERE application='Ta valeur tata sécurisée'
// SELECT * FROM produits

// PS : pour sécuriser toto et tata n'oublie pas 
// mysql_real_escape_string
// $toto = mysql_real_escape_string($_POST['titi']);
?>




_________________________________
Min iPomme

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Tonio_35
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
14
0
Merci
Salut,

Comprends-tu et connais-tu, l'utilisation de la balise select et, donc de option ?
Vous me faites vraiment peur des fois

______________________________________________________________________
Commenter la réponse de phpAnonyme
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
0
Merci
Bonjour,

Peux-tu nous envoyer un mini bout de code (Construction de ta requete SQL par exemple)...


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
16
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
2 novembre 2010
0
Merci
Select je comprend. Option moins...je débute

Tonio :

$sql "SELECT * FROM produits WHERE propriete '$Propriete' AND application = '$Application'";
Commenter la réponse de artkap
Messages postés
16
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
2 novembre 2010
0
Merci
Merci Tonio !
Pour finir, qu'est ce que tu entends par "sécuriser" toto ?
Commenter la réponse de artkap
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
0
Merci
Sécuriser c'est empecher un utilisateur mal veillant de toucher à ta base de donnée. Pour cela il faut utiliser la fonction mysql_real_escape_string afin d'éviter ce qu'on appel les attaques par injection SQL...


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
0
Merci
PS : si un message t'as permis de résoudre ton problème, n'hésite pas à le marquer en cliquant sur le bouton en dessous du nom d'utilisateur afin qu'il soit mieux vu dans la recherche...



<===


_________________________________
Min iPomme
Commenter la réponse de Tonio_35
Messages postés
16
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
2 novembre 2010
0
Merci
Merci à toi !
Commenter la réponse de artkap