Valeur liste déroulante dans requete sql ?

Résolu
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   -  
MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

13 réponses

MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   184
 
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
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   12
 
d'accord, je ne savais pas...
en tout cas, sur mon serveur, ça marche...

merci pour l'info en tout cas
1
MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   184
 
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
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
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
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   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");

???
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   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 ?
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   12
 
non non, le $_GET fonctionne bien ça c'est sur
(testé avant)
0
MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   184
 
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à…
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   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 !!!
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   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
0
MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   184
 
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.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011 > MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   12
 
donc c'était ça...
la vieille erreur...

merci, je teste
0
Jean_2 Messages postés 245 Date d'inscription   Statut Membre Dernière intervention   12
 
c'est bon, vos 2 méthodes fonctionnent. merci
0
MaamuT Messages postés 174 Date d'inscription   Statut Membre Dernière intervention   184
 
Super, voilà une bonne chose de faite ;)
0