Requête vide car variable vide

Résolu
artkap Messages postés 16 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 2 novembre 2010 - 11 janv. 2010 à 16:30
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.

8 réponses

Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
11 janv. 2010 à 19:00
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
3
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
11 janv. 2010 à 16:58
Salut,

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

______________________________________________________________________
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
11 janv. 2010 à 16:58
Bonjour,

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


_________________________________
Min iPomme
0
artkap Messages postés 16 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 2 novembre 2010
11 janv. 2010 à 17:33
Select je comprend. Option moins...je débute

Tonio :

$sql "SELECT * FROM produits WHERE propriete '$Propriete' AND application = '$Application'";
0

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

Posez votre question
artkap Messages postés 16 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 2 novembre 2010
12 janv. 2010 à 09:31
Merci Tonio !
Pour finir, qu'est ce que tu entends par "sécuriser" toto ?
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
12 janv. 2010 à 09:43
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
0
Tonio_35 Messages postés 567 Date d'inscription mercredi 4 octobre 2006 Statut Membre Dernière intervention 30 août 2011 11
12 janv. 2010 à 09:46
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
0
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
Merci à toi !
0
Rejoignez-nous