Page 1 sur 1

Recuperer Valeur avec Onchange POST

Posté : 29 sept. 2006, 17:00
par fabien_14
Bonjour,

J'ai une select comme ceci

Code : Tout sélectionner

<form method="post" enctype="multipart/form-data" name="upform" action="index.php?dest=infos&act=infos2"> <div class="row"> <span class="label">test: </span> <span class="formw"> <?php $result = mysql_query("SELECT * FROM infos ORDER BY id"); $nb_total=mysql_num_rows($result); if ($nb_total == 0) { } else { ?> <select name="infos" onChange="window.location.replace('index.php?dest=infos&infos2='+this.value+'');"> <? echo "<option value=\"\" >> Choisissez votre infos ... <</option>"; while($row = mysql_fetch_row($result)){ // Ma boucle } ?> </select> </span> </div> </form>
Tous marche bien mais actuellement je recueprer la valeur par GET hors dans la barre d'adresse on voi les champs ... infos2=50&o=90...

je voudrai recuerper c'est valeur par un POST mais je ni arrive pas avec le ONchange ...

Qlq peu me donner un coup de main ?

Merci

Posté : 29 sept. 2006, 23:27
par Ultiny
C'est quelque chose comme :
onChange="document.upform.submit();"

Posté : 29 sept. 2006, 23:37
par fabien_14
J'ai essayé ceci mais rien ne marche ...

Code : Tout sélectionner

<form method="post" name="upform2" > <select name="inf" onChange="document.upform2.submit();" > <? echo "<option value=\"\" >> Choisissez ... <</option>"; while($row = mysql_fetch_row($result)){ $id_pays = $row[0]; $nom = $row[1]; echo "<option value=\"$id_pays \""; if ($id_pays==[b]REPRENDRE LA VALEUR[/b]) echo " selected"; echo ">$nom </option>"; }} ?> </select> </form>

Posté : 29 sept. 2006, 23:45
par Cyrano
la dernière version n'ayant pas d'attribut action renvoie automatiquement sur la même page.

La première envoie de toutes façons des données en méthode GET puisque ces données sont écrites en dur dans l'url de l'attribut action, même si tu vas retrouver des valeurs en POST en parallèle à cause de l'attribut mthod de ta balise <form>.

CQFD, reste logique, tu vas trouver ;)

Posté : 29 sept. 2006, 23:55
par fabien_14
:oops: J'ai pas trops compris Lol (il est tard) en faite je me tracasse sur ceci car niveau sécurité est-ce bien d'avoir des parametre dans l'URL ? et de les reprendre aprés pour remplir des chose comme ceci ?

<input type="hidden" name="iddpt" value="<?=$_GET[d]?>" >

Posté : 30 sept. 2006, 00:07
par Cyrano
Faut pas devenir non plus parano avec la sécurité : le simple bonsens va dégrossir un peu. On ne passera jamais par l'url des valeurs qui doivent transiter vets une base de données par exemple. Pour le reste, ça dépend des besoins.

Quand tu as un paramètre dans une url, c'est utiliser de façon tacite la méthode GET. D'autre part, l'url que tu mets dans l'attribut action de ton formulaire est l'adresse de la page qui va s'ouvrir lorsque tu cliqueras sur le bouton d'envoi de ton formulaire.

Partant de là, si l'url en question comporte des paramètres, ils seront bien entendu fidèlement reproduits et tu pourras lire clairement les valeurs dans la barre de navigation, même si tu as mis method="post" dans ta balise. Mais il faut aussi comprendre que si tu as bien précisé la méthode post, tu auras d'une part les paramètres indiqués dans l'url mais en plus les valeurs du formulaire qui passeront via la méthode post en parallèle.

Pour t'en convaicre, essaye la chose suivante avec la première version de ton formulaire : en début de la page correspondant à l'url de ton attribut action, ajoute ceci:
<?php
/* Valeurs GET-DATA */
?>
Valeur GET :
<pre>
<?php
var_dump($_GET);
?>
</pre>
Valeurs POST :
<pre>
<?php
/* Valeurs POST-DATA */
var_dump($_POST);
?>
</pre>
Essaye ça et observe ;)

Posté : 30 sept. 2006, 03:09
par artotal
avec des variables dans action=
c'est obligatoirement un passage en get.
Sa fait perroquet
je sors -->