Requete à choix multiples non obligatoires
axelandre
Messages postés
37
Statut
Membre
-
NookZ Messages postés 2376 Statut Membre -
NookZ Messages postés 2376 Statut Membre -
Bonjour à tous,
Je viens de créer un formulaire permettant d'afficher des résultats en fonction des champs renseignés.
Tous les champs sont des select.
Le fait est que je ne sais pas comment m'y prendre pour attaquer ma base de données car en fonction de ce qu'à sélectionné l'utilisateur, il y a des champs qui sont soit non renseigné soit renseigné et que donc ma requete doit changer en conséquence.
En gros, voici les champs du formulaire :
date du (3 champs pour jour mois année) au (3 champs jour mois année)
nom
docc
secteur
raison sociale
type
Ensuite en fonction de ce que sélectionne l'utilisateur la requete va chercher dans les critères sélectionnés.
Par défaut, tous les champs ont pour valeur "-".
Donc si quelqu'un pouvait m'orienter vers la solution ce serait plus que sympa !
Merci à tous
Je viens de créer un formulaire permettant d'afficher des résultats en fonction des champs renseignés.
Tous les champs sont des select.
Le fait est que je ne sais pas comment m'y prendre pour attaquer ma base de données car en fonction de ce qu'à sélectionné l'utilisateur, il y a des champs qui sont soit non renseigné soit renseigné et que donc ma requete doit changer en conséquence.
En gros, voici les champs du formulaire :
date du (3 champs pour jour mois année) au (3 champs jour mois année)
nom
docc
secteur
raison sociale
type
Ensuite en fonction de ce que sélectionne l'utilisateur la requete va chercher dans les critères sélectionnés.
Par défaut, tous les champs ont pour valeur "-".
Donc si quelqu'un pouvait m'orienter vers la solution ce serait plus que sympa !
Merci à tous
A voir également:
- Requete à choix multiples non obligatoires
- Liste déroulante de choix excel - Guide
- Choix multiples excel - Guide
- Votre envoi est réexpédié à la demande du destinataire vers l'adresse de son choix. - Forum Réseaux sociaux
- Choix des applications par défaut - Guide
- Quelle requête écrire pour demander au moteur de recherche de présenter de préférence les pages web traitant de tennis mais pas de tennis de table ✓ - Forum Android
7 réponses
Vous faites un test sur le champ et si sa valeur = "-", vous faites la requête en conséquence, je ne vois pas trop le problème :s
Bonjour,
Le problème c'est qu'il peut y avoir un certain nombre de possibilité de requete.
Exemple :
Si le nom, et la date sont sélectionnés, je ne vais attauqer la base que sur ces deux champs.
Si la date, le secteur, le type et la raison sociale sont sélectionnés, attaque sur ces 4 champs.
etc...
Donc du coup comment faire pour automatiser cela en fonction des champs sélectionnés ou non ?
Il faudrait faire une requete avec des variables pour chaque champ du genre :
SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE date="$date" AND docc="$docc" AND raisonSociale="$raisonSociale" AND secteurActivite="$secteurActivite" AND type="$type";
Mais le soucis, c'est que si un champ est vide, c'est à dire égale à "-", il ne faut pas qu'il soit pris en compte.
J'espère être suffisament claire.
Merci
Le problème c'est qu'il peut y avoir un certain nombre de possibilité de requete.
Exemple :
Si le nom, et la date sont sélectionnés, je ne vais attauqer la base que sur ces deux champs.
Si la date, le secteur, le type et la raison sociale sont sélectionnés, attaque sur ces 4 champs.
etc...
Donc du coup comment faire pour automatiser cela en fonction des champs sélectionnés ou non ?
Il faudrait faire une requete avec des variables pour chaque champ du genre :
SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE date="$date" AND docc="$docc" AND raisonSociale="$raisonSociale" AND secteurActivite="$secteurActivite" AND type="$type";
Mais le soucis, c'est que si un champ est vide, c'est à dire égale à "-", il ne faut pas qu'il soit pris en compte.
J'espère être suffisament claire.
Merci
en reprenant votre exemple, personnellement je ferais une construction de requête :
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
etc
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
etc
Ok
Mais si une valeur est null, donc "-", la requete va planter du faite que le champs soit indiqué dans la requete mais que la valeur n'existe pas ! non ?
Et avec ce type de construction, les résultats trouvés seront ceux correspondant à l'ensemble des champs sélectionnés par l'utilisateur ou alors sont-ils indépendant les uns des autres ?
Merci
Mais si une valeur est null, donc "-", la requete va planter du faite que le champs soit indiqué dans la requete mais que la valeur n'existe pas ! non ?
Et avec ce type de construction, les résultats trouvés seront ceux correspondant à l'ensemble des champs sélectionnés par l'utilisateur ou alors sont-ils indépendant les uns des autres ?
Merci
Dans le cas où l'un des champs sera non rempli (à "-"), il ne figurera pas dans la requête.
Exemple :
SI date n'est pas défini :
SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE docc="$docc" AND raisonSociale="$raisonSociale" AND secteurActivite="$secteurActivite" AND type="$type";
par contre je ne suis pas sûre d'avoir suivi votre besoin.
Est-ce que vous voulez affichés uniquement les résultats renseignés?
Si tel est le cas il faut ajouter ceci :
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
else
str_replace("date, ", "", $requete);
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
else
str_replace("docc, ", "", $requete);
Exemple :
SI date n'est pas défini :
SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE docc="$docc" AND raisonSociale="$raisonSociale" AND secteurActivite="$secteurActivite" AND type="$type";
par contre je ne suis pas sûre d'avoir suivi votre besoin.
Est-ce que vous voulez affichés uniquement les résultats renseignés?
Si tel est le cas il faut ajouter ceci :
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
else
str_replace("date, ", "", $requete);
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
else
str_replace("docc, ", "", $requete);
Ok,
En fait au final, je veux que les résultats qui s'affichent soient ceux qui remplissent les conditions fixées par l'utilisateur.
Exemple :
Si date compris entre "01/06/08" et "12/08/08", docc = "paris", nom = "durand", type = "client" alors les résultats qui devront s'afficher devront correspondre à ces critères.
Les champs qui s'afficheront à l'écran sont : date, docc, nom, nom fichier, piece jointe et statut
Merci
En fait au final, je veux que les résultats qui s'affichent soient ceux qui remplissent les conditions fixées par l'utilisateur.
Exemple :
Si date compris entre "01/06/08" et "12/08/08", docc = "paris", nom = "durand", type = "client" alors les résultats qui devront s'afficher devront correspondre à ces critères.
Les champs qui s'afficheront à l'écran sont : date, docc, nom, nom fichier, piece jointe et statut
Merci
alors c'est cette solution :
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
$requete= "SELECT date, nom, docc, raisonSociale, secteurActivite, type FROM table WHERE";
$premiereOK = False;
if($date!="-") {
$requete= $requete." date='$date'";
$premiereOK = True;
}
if ($docc != "-") {
if($premiereOK)
$requete= $requete."AND docc='$docc'";
else {
$requete= $requete." docc='$docc'";
$premiereOK = True;
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ok super mercie,
je vais essayer tout cela !
Je vous tiens au courant pour la suite
Merci mille fois pour votre aide.
je vais essayer tout cela !
Je vous tiens au courant pour la suite
Merci mille fois pour votre aide.
Bonjour,
Je viens de terminer la construction de ma requete à choix multiple en m'appuyant sur votre code.
Mais bien sur, un problème persiste !
Lorsque la date ne fait pas partie des critères de recherches, et bien la requête se construit mal.
Voici mon code : (par avance désolé pour le formatage mais sinon une partie du code ne se voyait pas !)
J'espère que vous pourrez le visualiser dans sa totalité.
merci pour votre aide
Je viens de terminer la construction de ma requete à choix multiple en m'appuyant sur votre code.
Mais bien sur, un problème persiste !
Lorsque la date ne fait pas partie des critères de recherches, et bien la requête se construit mal.
Voici mon code : (par avance désolé pour le formatage mais sinon une partie du code ne se voyait pas !)
$nom2 = "date";
$champ1 = $date_deb;
$champ2 = $date_fin;
$nom3 = "nom";
$champ3 = $_POST['nom'];
$nom4 = "docc";
$champ4 = $_POST['docc'];
$nom5 = "raisonSociale";
$champ5 = $_POST['raisonSociale'];
$nom6 = "secteurActivite";
$champ6 = $_POST['secteur'];
$nom7 = "type";
$champ7 = $_POST['type'];
$requete = 0;
$premierOk = false; //permet de vérifier si la requete est commencée ou non
for($i=2; $i<8; $i++){
$nom = "nom".$i; //Variable qui va contenir la variable nom.$i
$champ = "champ".$i; //Variable qui va contenir la variable champ.$i
//Si c'est date alors on controle que les deux dates soient remplies
if($$nom == "date"){ //$$nom affiche le contenu de la variable $nom.$i contenu dans la variable $nom
if(strlen($champ1) == 10 && strlen($champ2) != 10 || strlen($champ2)
== 10 && strlen($champ1) != 10){
echo 'Vous devez renseigner les deux dates';
break;
}
else if((strlen($champ1) == 10) && (strlen($champ2) == 10)){
$requete = "SELECT date, docc, nom, fichierUpload, statut, pdf
FROM success_story_".$marche." WHERE ".$$nom." >= ".$champ1."
AND ".$$nom." <= ".$champ2."";
$premierOk = true;//donne vri à premier ainsi on sait que la requete est déjà commencé
}
else{
//sinon rien
}
}
else{
if($$champ != "-"){//si le champ est renseigné
if($premierOk == true){//si la requete est commencée alors on concatenne
$requete = $requete." AND ".$$nom." = ".$$champ."";
echo '<br /><br />'.$champ.' = '.$nom.' = '.$$champ;
}
else{//sinon on commence à érire le début de la requete
$requete = mysql_query("SELECT date, docc, nom, fichierUpload, statut, pdf
FROM success_story_".$marche." WHERE ".$$nom." = ".$$champ."");
$premierOk = true;
}
}
else{
//si champ non renseigné alors ne rien faire et continuer la boucle
}
}
if($i == 7){ //Si i=7 alors on arrive à la fin de la requete et il faut donc la fermer
$requete = $requete.";";
}
}
J'espère que vous pourrez le visualiser dans sa totalité.
merci pour votre aide
Bonjour bonjour,
La requete fonctionne niquel mais sous php, elle ne l'accepte pas !
En effet, j'ai une erreur mysql : "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ".
Le truc c'est que lorsque je fais un echo de la variable contenant la requete générée, et bien elle est correcte et fonctionne très bien sous phpMyAdmin !
Voyez-vous d'où cela peut-il venir ?
Merci encore pour votre aide
La requete fonctionne niquel mais sous php, elle ne l'accepte pas !
En effet, j'ai une erreur mysql : "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ".
Le truc c'est que lorsque je fais un echo de la variable contenant la requete générée, et bien elle est correcte et fonctionne très bien sous phpMyAdmin !
Voyez-vous d'où cela peut-il venir ?
Merci encore pour votre aide