Requete à choix multiples non obligatoires
Fermé
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
-
31 mars 2009 à 14:55
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 - 2 avril 2009 à 17:12
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 - 2 avril 2009 à 17:12
A voir également:
- Requete à choix multiples non obligatoires
- Liste déroulante de choix excel - Guide
- Requête bloquée par le firewall applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Cocher plusieurs choix dans excel ✓ - Forum Bases de données
- Graphql server responded with error 1675030: erreur lors de l’envoi de la requête. - Forum Facebook
7 réponses
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
513
31 mars 2009 à 14:57
31 mars 2009 à 14:57
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
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
31 mars 2009 à 16:38
31 mars 2009 à 16:38
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
513
31 mars 2009 à 16:45
31 mars 2009 à 16:45
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
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
31 mars 2009 à 17:10
31 mars 2009 à 17:10
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
513
31 mars 2009 à 17:19
31 mars 2009 à 17:19
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);
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
31 mars 2009 à 17:34
31 mars 2009 à 17:34
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
513
31 mars 2009 à 17:41
31 mars 2009 à 17:41
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
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
31 mars 2009 à 17:44
31 mars 2009 à 17:44
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.
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
1 avril 2009 à 17:51
1 avril 2009 à 17:51
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
axelandre
Messages postés
35
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
22 septembre 2010
2 avril 2009 à 16:20
2 avril 2009 à 16:20
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
NookZ
Messages postés
2138
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
7 mars 2013
513
2 avril 2009 à 17:12
2 avril 2009 à 17:12
oui le problème a été soulevé de nombreuses fois. Montrez-moi le code contenant le mysql_fetch_array et je vous corrige ça :)