Problème requete mysql/php
Résolu
otaku-sensei
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
otaku-sensei Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
otaku-sensei Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
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
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
11 réponses
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']."'");
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
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 ?
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
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
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
:(
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());
$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
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
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%");