Problème champ select, onchange et variable PHP

Mammouth du PHP | 531 Messages

25 janv. 2008, 12:56

Bonjour,

j'ai un petit soucis avec cette ligne :
echo '<span class="element"><select name="position" title="Position du lien dans le menu" onchange="location.href=\'req.php?req=modif_position&position=this.options[this.selectedIndex].value&id='.$data_pages['id'].'\' " >'; 
L'idée est de passer la valeur de l'option du champ select sélectionné dans une variable.
Quand le code s'exécute au lieu de me passer la valeur de la variable dans l'url il me fait :

req.php?req=modif_position&position=this.options[this.selectedIndex].value&id=22

Comme je suis pas doué en Javascript et débutant/moyen en PHP je nage un peu là... :cry:

ViPHP
ViPHP | 2287 Messages

25 janv. 2008, 13:09

Javascript n'évalue pas automatiquement les variables et/ou fonctions contenues dans les chaînes (qu'elles soient délimités par des apostrophes ou des guillemets), contrairement à PHP (dans le cas des chaînes délimitées par des guillemets). Il faut donc sortir ta variable de la chaîne, et assembler le tout manuellement (ce que tu dois déjà faire en PHP si tu suis les bonnes pratiques ;-) )

Bon, là c'est en effet un peu ardu, car tu es dans le cas particulier d'un évènement JS qui est écrit dans la valeur de l'attribut de balise HTML lui-même écrit dans une chaîne PHP. Il faut donc jongler avec les \... |*() .
echo '<span class="element"><select name="position" title="Position du lien dans le menu" onchange="location.href=\'req.php?req=modif_position&position=\'+this.options[this.selectedIndex].value+\'&id='.$data_pages['id'].'\' " >'; 
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Mammouth du PHP | 531 Messages

25 janv. 2008, 16:02

Merci de ta réponse, ça marche :wink:
je crois que j'ai compris, mais comme sur le net on trouve un tas d'exemple avec aussi un tas d'erreurs j'ai l'impression... dur de faire le tri dans ce qu'on trouve.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

25 janv. 2008, 17:55

Modération :
supercanard, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.