valery54
Messages postés4Date d'inscriptionmercredi 13 août 2008StatutMembreDernière intervention22 septembre 2008
-
22 sept. 2008 à 11:56
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 2011
-
22 sept. 2008 à 19:46
Bonjour
j'ai un formulaire avec 4 champs. Lorsqu'on le valide, les champs sais permettent de renvoyer les resutals d'une ou plusieur table suivant les cas.
Ca signifie pour moi que dans chaque cas ou les champs du formulaire sot remplis, je dois avoir une requette particulière, donc une infinité de if.
if ($nom1)
{
if ($prenom1)
{ if ($paysres1)
{
$req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
where nom like '$nom1%'
and prenom like '$prenom1%'
and paysr = '$payres1'
and users.id = agenda_anniv.id_mbr");
}
else
{
$req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
where nom like '$nom1%'
and prenom like '$prenom1%'
and users.id = agenda_anniv.id_mbr");
}
}
else if ($paysres1)
{
$req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
where nom like '$nom1%'
and paysr like '$prenom1%'
and users.id = agenda_anniv.id_mbr");
}
else
{
$req = reqmysql("select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
where nom like '$nom1%'
and users.id = agenda_anniv.id_mbr");
Est ce que je peux gérer tout ça avec une seule requete? si oui, laquelle?
nhervagault
Messages postés6063Date d'inscriptiondimanche 13 avril 2003StatutMembreDernière intervention15 juillet 201137 22 sept. 2008 à 13:41
Salut
Tu peux factoriser la premiere partie de la requete
comme
$sql = "select nom, prenom, paysr, titre, date_naissance from users, agenda_anniv
where 1=1 " //1==1 renvoie toutes les données et permet de gerer plus facilement les AND ;-)
ensuite tu fais tes tests
if ($nom1)
{
$sql += " AND nom like '$nom1%'"
}
if ($prenom1) {
.....
}
if(.....){...}
.....
//
Et pour finir
$req = reqmysql($sql,"agenda_anniv.id_mbr")
Apres tu peux faire une fonction pour concatener l'ordre SQL si tu as 50 if
(tu place les champs dans un tableau et tu le parcoures)
valery54
Messages postés4Date d'inscriptionmercredi 13 août 2008StatutMembreDernière intervention22 septembre 2008 22 sept. 2008 à 14:08
ça parait logique, sauf que je pense que tu veux dire
pour les test,
if ($nom1)
{
$sql += " AND nom like '$nom1%'";
$sql1 =$ql+
}
if ($prenom1) {
.$sql += " AND nom like '$prenom1%'";
$sql = $sql+}
if(........
pour pouvoir concatener dans une boucle for...
J'essaie et je vois ce que ça donne.