Valeur liste déroulante dans requete sql ? [Résolu/Fermé]

Signaler
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
-
Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
-
Bonjour,

J'ai 1 ptit souci qui à première vue, ne sont pas bien compliqué :
Sur une meme page de mon site, j'ai une liste déroulante et une requete SQL.
Comment receuillir la valeur de ma liste déroulante dans ma requete SQL ?

liste réroulante :
<FORM method="post" action="ma_page.php">
<select onchange="submit()">
<option value="note_moyenne">Par note moyenne</option>
<option value="ville">Par commune</option>
<option value="nom">Par odre alphabétique</option>
</select>
</FORM>

requete : ...GROUP BY ma_table.value_ de_l_option_choisie


Merci à vous
Bon appétit

13 réponses

Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
181
Normalement, les variables de type $_POST[''] ou $_GET[''] ne sont pas utilisables directement dans une requête, il faut les récupérer dans une autre avant:

$maVariable = $_GET['maVariable'];
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
d'accord, je ne savais pas...
en tout cas, sur mon serveur, ça marche...

merci pour l'info en tout cas
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
181
La variable tri est affectée au formulaire lui même, ce n'est pas une variable utilisable, elle ne veut rien dire, d'ailleurs, elle ne doit rien valoir d'après moi…

Ensuite, dans ta requête sql, n'échappe pas tes variables, tu colle tout entre des guillemets doubles.

Pour vérifier, tu peut faire un echo de la requête pour vérifier qu'elle est bien construite.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981
Jean : reprends ce que je t'ai dit au début, et mets le "name" pas sur le FORM mais sur le SELECT !
Comme dans mon premier post.


Et sinon, pour MaamuT, je suis désolé mais ton histoire de config de php qui interdit les POST dans un texte de requête ne tient pas debout, c'est même plutôt n'importe quoi... Une requête n'est, pour php, qu'une chaine de caractère comme une autre. On la concatène comme on veux, y a pas d'histoire de config là-dedans !
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981
Bonjour,

Il faut donner un nom ("name") à ton select, par exemple : <select onchange="submit()" name="tri">

Ensuite, dans ma_page.php, la variable $_POST["tri"] vaut le contenu de la liste.

Donc tu fais ta requête :
$requete = "...GROUP BY ma_table".$_POST["tri"]

Xavier
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
il doit y avoir une petite erreur de syntaxe car là, ça ne marche pas, ma requete (je l'ai simplifiée) :

$reponse = mysql_query("SELECT ma_table.* FROM ma_table WHERE ma_table.numero_region='" . $_GET['numero_region'] . "' GROUP BY ma_table.là où je veux receuillir la value");

???
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
actuellement, j'ai :
$reponse = mysql_query("SELECT ma_table.* FROM ma_table WHERE ma_table.numero_region='" . $_GET['numero_region'] . "' GROUP BY ma_table.'" . $_POST['tri']"'");
et ça ne marche pas...
par contre, quand je met je met ville (l'un des critères de tri) à la place de .'" . $_POST['tri']"' là ça marche
quelkqu'un pour m'aider ?
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
non non, le $_GET fonctionne bien ça c'est sur
(testé avant)
Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
181
Pas sur tous les serveurs PHP, si le php.ini est bien fait, il ne les accepteras pas…

Ce n'est pas une constante, certains acceptent, d'autres non !!

En tous cas, je ne ferais pas l'économie sur ce point là…
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
j'ai donc créé :
<?php
$numero_region = $_GET['numero_region'];
$tri = $_POST['tri'];
?>

et remplacé ma requete :
$reponse = mysql_query("SELECT ma_table.* FROM ma_table WHERE ma_table.numero_region='" . $_GET['numero_region'] . "'GROUP BY estaminet. '" . $tri "' ")

mon formulaire est le suivant :
<FORM name="tri" method="post" action="ma_page.php">
<select onchange="submit()">
<option value="note_moyenne">Par note moyenne</option>
<option value="ville">Par commune</option>
<option selected="selected" value="alpha">Par odre alphabétique</option>
</select>
</FORM>

Je signale que le formulaire recharge la page dans laquelle il se trouve.

mais ça ne marche pas !!!
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
1/ alors comment puis-je faire pour récupérer la valeur choisie dans ma liste déroulante ?
2 / la requete commence par un guillement double. Si je met un guillemet double dans ma requete, ça va être interprété comme une fin de requete non ?

merci à toi
Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
181
1/ Bien renseigner le nom du select.

2/ Tu insère tes variable tel quel, sans les échaper ni sortir, sans concaténation, directement dedans:

$sql = "SELECT * FROM maTable WHERE nom = $nom and prenom = $prenom";

PS @ Reivax962: Pas la peine d'être agressif, mon serveur perso n'accepte pas ces variables et il est configuré pour afficher un max d'erreurs, E_ALL | E_NOTICE, ce doit être pour ça.
Messages postés
3668
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 janvier 2021
981 >
Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014

Je ne voulais pas être aggressif, désolé.
Mais si ton serveur ne les accepte pas, à mon avis c'est surtout parce que tu ne les concatènes pas, mais tente de les insérer directement dans la chaîne de caractère, ce qui n'est pas correctement compris par l'interpréteur php !

Dis-moi si je me trompe, mais tu essaies de faire :
$variable = "untexte $_POST['chose']";
au lieu de
$variable = "untexte ".$_POST['chose'];

Non ?
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
donc c'était ça...
la vieille erreur...

merci, je teste
Messages postés
245
Date d'inscription
lundi 24 septembre 2007
Statut
Membre
Dernière intervention
13 septembre 2013
12
c'est bon, vos 2 méthodes fonctionnent. merci
Messages postés
174
Date d'inscription
mercredi 14 novembre 2007
Statut
Membre
Dernière intervention
20 décembre 2014
181
Super, voilà une bonne chose de faite ;)