Conditions, php et formulaire
cooook
-
cooook -
cooook -
Bonjour,
je suis en train de créer un formulaire de recherche avancée. Il y a 2 listes déroulantes: je voudrais qu'il soit possible de choisir dans une des deux listes ou dans les deux listes. Le problème, c'est qu'avec le code que j'ai écrit ci dessous, il faut que les 2 champs soient validés pour qu'il y ait un résultat. Si je choisis dans une seule des deux listes, il n'y a pas de résultats.
ex:
$requete = SELECT * FROM mestables
WHERE table1.id1 = liaison.id1
AND table2.id2 = liaison.id2
AND table3.id3 = liaison2.id3
AND table4.id4 = liaison2.id4
if (!empty ($_POST ['var1']) && !empty (!empty ($_POST ['var1'])
{
$requete.="AND (liaison.id1 = '$var1') AND liaison2.id3 = '$var2'";
}
else
{
if (! empty $_POST ['var1'])
{
$requete.="AND (liaison.id1 = '$var1')'";
}
if (! empty $_POST ['var2'])
{
$requete.="AND (liaison2.id3 = '$var2')'";
}
}
Merci d'avance!
je suis en train de créer un formulaire de recherche avancée. Il y a 2 listes déroulantes: je voudrais qu'il soit possible de choisir dans une des deux listes ou dans les deux listes. Le problème, c'est qu'avec le code que j'ai écrit ci dessous, il faut que les 2 champs soient validés pour qu'il y ait un résultat. Si je choisis dans une seule des deux listes, il n'y a pas de résultats.
ex:
$requete = SELECT * FROM mestables
WHERE table1.id1 = liaison.id1
AND table2.id2 = liaison.id2
AND table3.id3 = liaison2.id3
AND table4.id4 = liaison2.id4
if (!empty ($_POST ['var1']) && !empty (!empty ($_POST ['var1'])
{
$requete.="AND (liaison.id1 = '$var1') AND liaison2.id3 = '$var2'";
}
else
{
if (! empty $_POST ['var1'])
{
$requete.="AND (liaison.id1 = '$var1')'";
}
if (! empty $_POST ['var2'])
{
$requete.="AND (liaison2.id3 = '$var2')'";
}
}
Merci d'avance!
A voir également:
- Conditions, php et formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Formulaire de contact le bon coin introuvable ✓ - Forum Réseaux sociaux
9 réponses
Voila ce que tu veux
if (!empty ($_POST ['var1']) && (!empty ($_POST ['var1'])))
{
$requete.="AND (liaison.id1 = '$var1') AND liaison2.id3 = '$var2'";
} else if (! empty ($_POST ['var1'])) {
$requete.="AND (liaison.id1 = '$var1')'";
} else if (! empty ($_POST ['var2'])) {
$requete.="AND (liaison2.id3 = '$var2')'";
}
Deux petites choses
Empty est une fonction donc forcément empty(arg)
ensuite, si tu fais !empty(!empty(arg)) (ligne 1 deuxième partie), renverra toujours false...
En effet si
si arg=null
empty (arg) renvoie true
!empty (arg) renvoie false
empty(!empty (arg))renvoie true
!empty(!empty (arg))renvoie false
si arg= 5
empty (arg) renvoie false
!empty (arg) renvoie true
empty(!empty (arg))renvoie true
!empty(!empty (arg))renvoie false
if (!empty ($_POST ['var1']) && (!empty ($_POST ['var1'])))
{
$requete.="AND (liaison.id1 = '$var1') AND liaison2.id3 = '$var2'";
} else if (! empty ($_POST ['var1'])) {
$requete.="AND (liaison.id1 = '$var1')'";
} else if (! empty ($_POST ['var2'])) {
$requete.="AND (liaison2.id3 = '$var2')'";
}
Deux petites choses
Empty est une fonction donc forcément empty(arg)
ensuite, si tu fais !empty(!empty(arg)) (ligne 1 deuxième partie), renverra toujours false...
En effet si
si arg=null
empty (arg) renvoie true
!empty (arg) renvoie false
empty(!empty (arg))renvoie true
!empty(!empty (arg))renvoie false
si arg= 5
empty (arg) renvoie false
!empty (arg) renvoie true
empty(!empty (arg))renvoie true
!empty(!empty (arg))renvoie false
petite erreur de frappe je suppose:
if (!empty ($_POST ['var1']) && (!empty ($_POST ['var1'])))
serait plutot:
mais on peut faire plus simple:
if (!empty ($_POST ['var1']) && (!empty ($_POST ['var1'])))
serait plutot:
if (!empty ($_POST ['var1']) && (!empty ($_POST ['var2'])))
mais on peut faire plus simple:
$requete = SELECT * FROM mestables WHERE table1.id1 = liaison.id1 AND table2.id2 = liaison.id2 AND table3.id3 = liaison2.id3 AND table4.id4 = liaison2.id4 ; if (! empty ($_POST ['var1'])) { $requete.=" AND liaison.id1 = '".$var1."' "; //ne pas oublier l'espace avant AND } if (! empty ($_POST ['var2'])) { $requete.=" AND liaison2.id3 = '".$var2."' "; }
quand tu dis ça ne marche pas tu as quoi ?
sinon:
sinon:
$requete = "SELECT * FROM table1,table2,table3,table4,liaison,liaison2 WHERE table1.id1 = liaison.id1 AND table2.id2 = liaison.id2 AND table3.id3 = liaison2.id3 AND table4.id4 = liaison2.id4 ";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
et si tu fais seulement avec cette partie de la requette:
sans les conditions rajoutées par les if
as tu des résultats ?
$requete = "SELECT * FROM table1,table2,table3,table4,liaison,liaison2 WHERE table1.id1 = liaison.id1 AND table2.id2 = liaison.id2 AND table3.id3 = liaison2.id3 AND table4.id4 = liaison2.id4 ";
sans les conditions rajoutées par les if
as tu des résultats ?
Oui, j'ai des résultats: mais tous les résultats: c'est à dire 2000 images!
Tu as raison, le problème doit venir de la requête... Merci pour toute ton aide!
Tu as raison, le problème doit venir de la requête... Merci pour toute ton aide!
alors on va avancer progressivement
essayes:
est ce que ta liste 1 porte bien le name="var1" ?
donnes nous un bout de code de ta liste
essayes:
$requete = "SELECT * FROM table1,table2,table3,table4,liaison,liaison2 WHERE table1.id1 = liaison.id1 AND table2.id2 = liaison.id2 AND table3.id3 = liaison2.id3 AND table4.id4 = liaison2.id4 "; if (! empty ($_POST ['var1'])) { echo "var1 recue: ".$_POST ['var1']; //Visualisation $requete.=" AND liaison.id1 = '".$var1."' "; //ne pas oublier l'espace avant AND }
est ce que ta liste 1 porte bien le name="var1" ?
donnes nous un bout de code de ta liste
Mais oui! ça venait de la liste! Une erreur si bête que j'ai honte de la dire...Mais maintenant ça fonctionne!
En tout cas merci, car même sans cette erreur débile, je n'y serais pas arrivée toute seule!
Le problème, c'est maintenant qu'il y a des tas de résultats en double (voire plus!)...c'est ce qu'on appelle les fameux doublons sql?
En tout cas merci, car même sans cette erreur débile, je n'y serais pas arrivée toute seule!
Le problème, c'est maintenant qu'il y a des tas de résultats en double (voire plus!)...c'est ce qu'on appelle les fameux doublons sql?
si arg=null
empty (arg) renvoie true
!empty (arg) renvoie false
empty(!empty (arg))renvoie true
!empty(!empty (arg))renvoie false
si arg= 5
empty (arg) renvoie false
!empty (arg) renvoie true
empty(!empty (arg))renvoie false
!empty(!empty (arg))renvoie true