Requete SQL
kenicki
-
tafiscobar Messages postés 1281 Statut Contributeur -
tafiscobar Messages postés 1281 Statut Contributeur -
Bonjour,
Voila j'ai une base de données avec plein de champs (par exemple nom, age,
pays, ville, nationalité...).
Mon but est de faire une recherche sur différents champs de cette base.
Je m'explique l'utilisateur va arriver sur un formulaire de recherche et
aura le choix de remplir entre 1 et 4 champs pour exécuter sa recherche
(selon si il veut la nationalité, ou l'age et la nationalité ...).
Pour le moment ce que j'ai fait c'est que j'ai testé tous les champs qui me
sont renvoyés par le fomulaire et j'ai défini une requête pour chaque
résultat de test.
De ce fait ma page de traitement est très "lourde", c'est pourquoi
j'aimerais savoir si il n'y a pas une solution plus simple !!!
Merci pour vos réponses
Pierre
Voila j'ai une base de données avec plein de champs (par exemple nom, age,
pays, ville, nationalité...).
Mon but est de faire une recherche sur différents champs de cette base.
Je m'explique l'utilisateur va arriver sur un formulaire de recherche et
aura le choix de remplir entre 1 et 4 champs pour exécuter sa recherche
(selon si il veut la nationalité, ou l'age et la nationalité ...).
Pour le moment ce que j'ai fait c'est que j'ai testé tous les champs qui me
sont renvoyés par le fomulaire et j'ai défini une requête pour chaque
résultat de test.
De ce fait ma page de traitement est très "lourde", c'est pourquoi
j'aimerais savoir si il n'y a pas une solution plus simple !!!
Merci pour vos réponses
Pierre
A voir également:
- Requete SQL
- Logiciel sql - Télécharger - Bases de données
- Requête sql pour afficher uniquement les fleurs dont le prix est strictement inférieur à 10 euros - Forum calculatrices
- Sql (+) - Forum Programmation
- Cherche des haricot vendez les moi ✓ - Forum DS
- Sql lister les tables ✓ - Forum Programmation
2 réponses
salut
bon premierement si tu a qutre champs dans ton formulaire tu ne dois pas avoir plus de quatre requetes
apres tu as deux option
1- tu effectue les 4 requêtes tu utilise ton curseur pour remplir quatre table que tu compares...(tres lent et assez fastidieux)
2- tu concatene les chaines de requetes avec union et inter puis tu envoi la requete finale
du genre
SI CHAMP 1 non nul
req_princ.= req_champ1
SI req_princ non nulle && CHAMP 2 non nul
req_princ.=UNION
req_princ.=req_champ2
SINON
req_princ.=req_champ2
...
envoi req_princ.
bon premierement si tu a qutre champs dans ton formulaire tu ne dois pas avoir plus de quatre requetes
apres tu as deux option
1- tu effectue les 4 requêtes tu utilise ton curseur pour remplir quatre table que tu compares...(tres lent et assez fastidieux)
2- tu concatene les chaines de requetes avec union et inter puis tu envoi la requete finale
du genre
SI CHAMP 1 non nul
req_princ.= req_champ1
SI req_princ non nulle && CHAMP 2 non nul
req_princ.=UNION
req_princ.=req_champ2
SINON
req_princ.=req_champ2
...
envoi req_princ.
moi,j'ai une autre idee, tu sais, tu vas sur chaque champ, voir s'il est vide ou non et s'il n'est pas vide, tu l'ajoute a ta requete,voici un exemple, c'est plus explicite :
soient les 4 champs nat,age,sexe,CouleurY(pas un autre exeemple)
$query = " select * from table where ";
if(!empty($nat))
{
$query += " Nat = "
$query += $nat
}
if(!empty($age))
{
$query += " or Age = "
$query += $age
}
if(!empty($sexe))
{
$query += " or Sexe = "
$query+= $sexe
}
if(!empty($CouleurY))
{
$query += " or CouleurY = "
$query += $CouleurY
}
mysql_query($query);
de ce fait, tu executes ta requete une seule fois, d'ailleurs, pour une meilleure tu peux faire une fonction qui ajoute une requete ds le cas a ta string et ainsi, tu pourras l'etendre a un cas de plus de 10 criteres et c'est plus lisible
tafiscobar
soient les 4 champs nat,age,sexe,CouleurY(pas un autre exeemple)
$query = " select * from table where ";
if(!empty($nat))
{
$query += " Nat = "
$query += $nat
}
if(!empty($age))
{
$query += " or Age = "
$query += $age
}
if(!empty($sexe))
{
$query += " or Sexe = "
$query+= $sexe
}
if(!empty($CouleurY))
{
$query += " or CouleurY = "
$query += $CouleurY
}
mysql_query($query);
de ce fait, tu executes ta requete une seule fois, d'ailleurs, pour une meilleure tu peux faire une fonction qui ajoute une requete ds le cas a ta string et ainsi, tu pourras l'etendre a un cas de plus de 10 criteres et c'est plus lisible
tafiscobar