Forum Clubic

(php + JS) retour de variable dans un formulaire post avec un array

Bonjour,

J’ai un problème de remontée de variable issu d’un script JS dans un formulaire avec un post qui incrémente et alimente automatiquement un tableau.

Voici une portion du code:


for($y=0;$y<$nb_article_preconfigure;$y++)
			{
			?>
			<tr><td>Modèle:</td><td><input name="<?php echo $ref_article[$y];?>" type="text" onclick="window.open('choix_article3.php?param=<?php echo $ref_article[$y];?>','Choisir','width=500,height=250');"></td>
			<td>Quantité:</td><td><input name="<?php echo $quantite[$y];?>" type="text" maxlength="200" size="5" value="0"></td>
			<td>Remise sup:</td><td><input name="<?php echo $remise[$y];?>" type="text" maxlength="10" size="5" value="0">%</td></tr>}


donc la boucle incrémente le tableau $ref_article. Or dans le choix de l’article (issu du script choix_article3) il doit retourner via la fonction
function choisir(truc)
{ window.opener.document.forms[1].<?php print $_GET['param'];?>.value = truc.options[truc.selectedIndex].value;
self.close(); }

et l’envoi directement dans le bon POST. Mais en utilisant le tableau, param devient vide! Donc le champ post ne se remplit pas du tout. Je pense qu on peut etre peut etre trouver une solution en passant par l’ID du champs post que je veux.

A votre avis comment je peux faire?

Sachant que le recupère le tableau dans le script suivant le formulaire…

merci d’avance

J’ai pas bien compris, le problème se créé lors de l’envoie de la pop-up au tableau parent, ou lors de l’envoie du formulaire parent?

bonjour,

merci de t’interesser au problème.
En fait le problème se pose lors de l’envoi du resultat dans le formulaire parent. Dans la popup en fait on fait une recherche d’article, le resultat de la recherche retourne les resultats dans un menu deroulant, et après choix dans le menu deroulant, la designation de l’article choisit est renvoyé dans le formulaire parent et est censé alimenter le tableau ref_article pour être reutilisé dans le code suivant

Hors actuellement comme le code est fait, la popup fait bien la recherche, mais n’arrive a envoyer le resultat dans le formulaire parent a cause du paramètre param qui est cesné contenir le nom du champs input. Or le nom de ce champ étant dynamique (puisque c’est le tabealu) le paramètre param est vide

Il y aurait bin sur la solution de dire que je supprime le tableau et je recrée des variables independantes (ref_article0,ref_article1,…) c’est ce que je faisais avant…mais mainetant que je dois rajouter des lignes de choix d’articles, ca devient vraiment trop lourd de gerer cela ainsi…d’ou le choix du tableau

voila j’espère avoir été plus clair.

merci

D’accord, donc le problème est essentiellement javascript. Je me suis déjà servis de cette méthode :

window.opener.document.getElementById(id_element).value=new_value;

j’ai essayé

j’ai donc modifié le code:

Modèle:

et dans le fichier de choix_article3

function choisir(truc)
{ window.opener.document.getElemendById(’<?php print $_GET['param'];?>’).value = truc.options[truc.selectedIndex].value;
self.close(); }

néanmoins j ai une erreur javascript
window.opener.document a la valeur null ou n’est pas un objet

sachant que le truc.options[truc.selectedIndex].value marche bien
J’ai essayé egalement avec window.opener.document.getElemendById(’<?php print $_GET['param'];?>’).innerHTML et le pb est le meme
j’ai egalement donne d’autres nom au variable de depart (ref_article) pour la differencier du tableau ms c’est pareil
je precise que j ai fait un essai d’affichier le contenu du print $_GET[‘param’];?> et ca marche bien aussi

qu’en pensez vous?

merci

<tr>
<td>Modèle:</td>
<td>
  <input id="ref_article<?php echo $y;?>" name="<?php echo $ref_article[$y];?>" type="text"
onclick="window.open('choix_article3.php?param=ref_article<?php echo $y;?>','Choisir','width=500,height=250');">
</td>

Je crois que tu as oublié le fonction echo pour retourner $y dans l’id de l’input.
Edité le 28/06/2008 à 22:00

bonjour,

merci effectivement je lavais oublié

pourtant meme avec lui en plus, ca ne marche toujours pas avec la meme erreur javascript…

Personnellement pour le débogage d’une partie dynamique je la test en partie statique pour trouver les erreurs qui auraient pu m’échapper. Je suis pas expert en javascript, mais je te conseillerais de tester un fonction simple du type :

function choisir2()
{window.opener.document.getElemendById(un_id_existant).value = 'test';}

Et tu mets simplement dans la pop-up un bouton pour tester si l’hérédité fonctionne bien :

<button onclick="choisir2();">Test</button>

Juste pour voir si ça fonctionne correctement, car chez moi ça, ça marche.

ca yest ca fonctionne…je n esais pas pk ca fonctionnait pas tout a l heure mais c’est tout bon!

je te remercie bien.
En meme temps pour ceux qui sont interessé par mon code, sacher qu il ya egalement une autre erreur lors de la creation des tableau dans le formulaire, il faut remplacer par name=“ref_article[<?php echo $y;?>]” et idem pour les 2 autres

merci encore