Problème requete mysql/php
Résolu/Fermé
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
-
18 mars 2009 à 13:16
otaku-sensei Messages postés 7 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 19 mars 2009 - 19 mars 2009 à 18:36
otaku-sensei Messages postés 7 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 19 mars 2009 - 19 mars 2009 à 18:36
Bonjour à tous,
Je débute en php/mysql.
Je suis en train de créer un formulaire dans lequel l'internaute pourra sélectionner plusieurs critères. Après avoir valider leur sélection ils arriveront sur une page résultat qui ira chercher des infos dans la base de données que j'ai créé.
Pour pouvoir afficher un résultat approprié en fonction des critères sélectionnés dans le formulaire je cherche à réaliser une requete mysql "SELECT", et en fait je cherche une façon de concaténer tout mes SELECT dans une seule requête. J'ai essayé de mettre "AND" ou "UNION" entre mes SELECT, sans succès.
Voici le code de ma requete :
$result1 = $db->sql_query("SELECT * FROM flers_locsal_salle WHERE dflers<='".$_POST['localisation']."' UNION ALL SELECT * FROM flers_locsal_salle WHERE capacite>='".$_POST['nbr_personne']."' UNION ALL SELECT * FROM flers_locsal_salle WHERE cuisine =='".$_POST['cuisine']."'");
Merci d'avance.
Je débute en php/mysql.
Je suis en train de créer un formulaire dans lequel l'internaute pourra sélectionner plusieurs critères. Après avoir valider leur sélection ils arriveront sur une page résultat qui ira chercher des infos dans la base de données que j'ai créé.
Pour pouvoir afficher un résultat approprié en fonction des critères sélectionnés dans le formulaire je cherche à réaliser une requete mysql "SELECT", et en fait je cherche une façon de concaténer tout mes SELECT dans une seule requête. J'ai essayé de mettre "AND" ou "UNION" entre mes SELECT, sans succès.
Voici le code de ma requete :
$result1 = $db->sql_query("SELECT * FROM flers_locsal_salle WHERE dflers<='".$_POST['localisation']."' UNION ALL SELECT * FROM flers_locsal_salle WHERE capacite>='".$_POST['nbr_personne']."' UNION ALL SELECT * FROM flers_locsal_salle WHERE cuisine =='".$_POST['cuisine']."'");
Merci d'avance.
A voir également:
- Problème requete mysql/php
- Easy php - Télécharger - Divers Web & Internet
- Mysql community server - Télécharger - Bases de données
- Expert php pinterest - Télécharger - Langages
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
- Error 2002 (hy000): can't connect to local mysql server through socket '/var/lib/mysql/mysql.sock' (2) ✓ - Forum Linux / Unix
11 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 mars 2009 à 13:30
18 mars 2009 à 13:30
Essayes comme ça:
$result1 = $db->sql_query("SELECT * FROM flers_locsal_salle WHERE dflers<=".$_POST['localisation']." AND capacite>=".$_POST['nbr_personne']." AND cuisine ='".$_POST['cuisine']."'");
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
18 mars 2009 à 14:15
18 mars 2009 à 14:15
J'avais déjà essayé ce script et le formulaire ne renvoie rien c'est bizarre ^^
Je suis à cour d'idées
Je suis à cour d'idées
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 mars 2009 à 21:02
18 mars 2009 à 21:02
dflers<=".$_POST['localisation']."
dflers c'est bien un nombre qui est dans ce champ et bien en INT ?
et le champ localisation du formulaire te renvoie bien un nombre ?
dflers c'est bien un nombre qui est dans ce champ et bien en INT ?
et le champ localisation du formulaire te renvoie bien un nombre ?
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
18 mars 2009 à 21:53
18 mars 2009 à 21:53
le champ dflers est bien composé de nombre en smallint et le champ localisation renvoie bien un nombre.
Lorsque je réalise que la requete WHERE dflers<=".$_POST['localisation']." , celle ci fonctionne correctement.
Lorsque je réalise que la requete WHERE dflers<=".$_POST['localisation']." , celle ci fonctionne correctement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 mars 2009 à 21:57
18 mars 2009 à 21:57
alors procedes par étapes en rajoutant d'abord AND capacite>=".$_POST['nbr_personne']."
à ta requette et ensuite si ça marche tu ajoutera:
AND cuisine ='".$_POST['cuisine']."'"
ainsi tu verra quelle est la condition qui coince
à ta requette et ensuite si ça marche tu ajoutera:
AND cuisine ='".$_POST['cuisine']."'"
ainsi tu verra quelle est la condition qui coince
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
18 mars 2009 à 22:02
18 mars 2009 à 22:02
dflers<=".$_POST['localisation']."
AND capacite>=".$_POST['nbr_personne']."
Dès que je fais cela ça ne marche plus, bizarre car quand je fais la requête capacite seule elle fonctionne
:(
AND capacite>=".$_POST['nbr_personne']."
Dès que je fais cela ça ne marche plus, bizarre car quand je fais la requête capacite seule elle fonctionne
:(
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
18 mars 2009 à 22:21
18 mars 2009 à 22:21
essayes de mettre une trace d'erreur comme ça:
$result1 = $db->sql_query("SELECT * FROM flers_locsal_salle WHERE dflers<=".$_POST['localisation']." AND capacite>=".$_POST['nbr_personne']." AND cuisine ='".$_POST['cuisine']."'") or die ("Pb :".mysql_error());
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
19 mars 2009 à 11:30
19 mars 2009 à 11:30
$result1 = $db->sql_query("SELECT * FROM flers_locsal_salle WHERE dflers<=".$_POST['localisation']."
AND capacite>=".$_POST['nbr_personne']."
Jusqu'à là ça marche correctement, donc apparemment c'est la requete AND cuisine ='".$_POST['cuisine']."' qui pose problème. Normalement le POST cuisine est récupéré par la sélection d'une check box
Encore plus étrange le fait de mettre "mysql_error" change le comportement: des résultats s'affichent à nouveau mais ne correspondent plus à la base de données :O
Merci pour ton aide
AND capacite>=".$_POST['nbr_personne']."
Jusqu'à là ça marche correctement, donc apparemment c'est la requete AND cuisine ='".$_POST['cuisine']."' qui pose problème. Normalement le POST cuisine est récupéré par la sélection d'une check box
Encore plus étrange le fait de mettre "mysql_error" change le comportement: des résultats s'affichent à nouveau mais ne correspondent plus à la base de données :O
Merci pour ton aide
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
19 mars 2009 à 15:05
19 mars 2009 à 15:05
ha donc
il faut passer par un décodage par php si coché => $cuisine= une valeur
si pas coché=> $cuisine=une autre valeur
bien sur en fonction de ce qui est dans ta BDD
et tu fais ta requette non plus avec $_POST[cuisine]
mais $cuisine
il faut passer par un décodage par php si coché => $cuisine= une valeur
si pas coché=> $cuisine=une autre valeur
bien sur en fonction de ce qui est dans ta BDD
et tu fais ta requette non plus avec $_POST[cuisine]
mais $cuisine
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
19 mars 2009 à 16:59
19 mars 2009 à 16:59
Dans le coup j'ai réussi à faire marcher mes checkbox en fonctionnant autrement, voici le code:
$result = "SELECT * FROM flers_locsal_salle WHERE";
if(!empty( $_POST['cuisine'] ) ) $result .= " cuisine='".$_POST['cuisine']."' ";
if(!empty( $_POST['toilettes'] ) ) $result .= "AND toilettes='".$_POST['toilettes']."' ";
if(!empty( $_POST['acces_handi'] ) ) $result .= "AND handi='".$_POST['acces_handi']."' ";
if(!empty( $_POST['estrade'] ) ) $result .= "AND estrade='".$_POST['estrade']."' ";
if(!empty( $_POST['table_chaise'] ) ) $result .= "AND mobil='".$_POST['table_chaise']."' ";
if(!empty( $_POST['vaisselle'] ) ) $result .= "AND vaisselle='".$_POST['vaisselle']."' ";
if(!empty( $_POST['parking'] ) ) $result .= "AND parking='".$_POST['parking']."' ";
if(!empty( $_POST['piece_sup'] ) ) $result .= "AND piecesupp='".$_POST['piece_sup']."' ";
if(is_numeric( $_POST['localisation'] ) ) $result .= " AND dflers<='".$_POST['localisation']."' ";
if(is_numeric( $_POST['nbr_personne'] ) ) $result .= " AND capacite>='".$_POST['nbr_personne']."' ";
var_dump($result);
$result = $db->sql_query($result);
Le seul truc c'est que la checkbox cuisine doit forcement être validée pour que la validation du formulaire fonctionne.
Maintenant j'ai un autre souci ^^: J'ai un champ budget (en numérique) et je souhaite que le résultat renvoie tous ce qui est à + ou - 30% du budget sélectionné. Le champ, concerné, de ma base s'appelle prix
J'ai essayé ce code mais fonctionne pas:
$result .= " AND prix BETWEEN '".$_POST['budget_salle']."'+30% AND'".$_POST['budget_salle']."'-30%");
$result = "SELECT * FROM flers_locsal_salle WHERE";
if(!empty( $_POST['cuisine'] ) ) $result .= " cuisine='".$_POST['cuisine']."' ";
if(!empty( $_POST['toilettes'] ) ) $result .= "AND toilettes='".$_POST['toilettes']."' ";
if(!empty( $_POST['acces_handi'] ) ) $result .= "AND handi='".$_POST['acces_handi']."' ";
if(!empty( $_POST['estrade'] ) ) $result .= "AND estrade='".$_POST['estrade']."' ";
if(!empty( $_POST['table_chaise'] ) ) $result .= "AND mobil='".$_POST['table_chaise']."' ";
if(!empty( $_POST['vaisselle'] ) ) $result .= "AND vaisselle='".$_POST['vaisselle']."' ";
if(!empty( $_POST['parking'] ) ) $result .= "AND parking='".$_POST['parking']."' ";
if(!empty( $_POST['piece_sup'] ) ) $result .= "AND piecesupp='".$_POST['piece_sup']."' ";
if(is_numeric( $_POST['localisation'] ) ) $result .= " AND dflers<='".$_POST['localisation']."' ";
if(is_numeric( $_POST['nbr_personne'] ) ) $result .= " AND capacite>='".$_POST['nbr_personne']."' ";
var_dump($result);
$result = $db->sql_query($result);
Le seul truc c'est que la checkbox cuisine doit forcement être validée pour que la validation du formulaire fonctionne.
Maintenant j'ai un autre souci ^^: J'ai un champ budget (en numérique) et je souhaite que le résultat renvoie tous ce qui est à + ou - 30% du budget sélectionné. Le champ, concerné, de ma base s'appelle prix
J'ai essayé ce code mais fonctionne pas:
$result .= " AND prix BETWEEN '".$_POST['budget_salle']."'+30% AND'".$_POST['budget_salle']."'-30%");
otaku-sensei
Messages postés
7
Date d'inscription
mercredi 18 mars 2009
Statut
Membre
Dernière intervention
19 mars 2009
19 mars 2009 à 18:36
19 mars 2009 à 18:36
C'est bon j'ai trouvé la solution! ^^
Merci à toi Alain pour ton aide
Merci à toi Alain pour ton aide