IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[PHP-JS] Manipuler en Javascript un tableau dans un formulaire PHP


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Par d�faut [PHP-JS] Manipuler en Javascript un tableau dans un formulaire PHP
    Pourtant, toutes les docs sont claires et unanimes, dans tous les langages, l'acc�s � un tableau se fait par "montableau[numChamp]". Sauf que ...

    Contexte :
    Je travaille en PHP, je cr�e un formulaire avec un tableau de longueur variable, avec des cases � cocher (style un calendrier, et je coche les dates que je r�serve). Et je souhaite mettre un bouton de commande "Tout chocher", ou de m�me "tout d�cocher". Et l�, selon la syntaxe, soit le PHP marche, soit le Javascript.

    Solution 1 : pas de [] dans le formulaire HTML
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type='checkbox' name='semaine' value=$n >
    Le Javascript peut "Tout cocher" en faisant
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
     for (i=0;i<52,i++) document.forms.f_resa.semaine[i].checked =true;
    Dans ce cas le PHP suivant ne r�cup�re que la derni�re valeur : si je coche 12 semaines, seule la 12� (la valeur 38 ) arrive dans le champ _HTTP_POST_VARS['semaine'].

    Solution 2 : cette fois, je mets des [] dans le HTML
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    <input type='checkbox' name='semaine[]' value=$n >
    Ici, le PHP r�cup�re toutes les valeurs dans le tableau $_REQUEST('semaine'], c'est nickel.
    Mais cette fois, c'est le Javascript qui ne fait rien losque je clique sur "Tout cocher".

    J'ai fait les m�me essais avec des zones de texte (colonne 'hidden' qui contient la valeur de la case � cocher), rien � faire, mais rien de rien. C'est quand m�me fou !

    Sinon, la derni�re id�e, c'est de mettre dans mon formulaire un champ texte 'hidden' unique, qui va contenir la totalit� du tableau "� plat", du style "Semaine1=Oui ; Semaine2=Oui, Semaine3=Non, ....". Charge au PHP qui recevra �a de tout d�composer. Ca devrait marcher, mais je trouverais �a dommage de b�tir une usine � gaz, pour un truc qui parait "ordinaire".

    Merci d'avance pour votre coup de main.

  2. #2
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    effectivement il te faut les [] :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    checks = document.getElementsByName("semaine[]");
    apres tu boucle sur checks

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2006
    Messages
    2
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 2
    Par d�faut [R�solu]
    Excusez-moi messires,

    Depuis 2 semaines je suis sur ce seul pb, toutes les nuits, dans les cours, dans les FAQ, et � lire les 40 premi�res pages des forums.
    Ne trouvant rien, je finis par me d�cider � �crire un post.
    Du coup je m'inscrit, et je poste ma demande (hier soir).
    Et ce midi je d�couvre un bouton : "Recherche avanc�e". Gr�ce � cette recherche avanc�e, je trouve un sujet �quivalent au mien, r�solu le 17 f�vrier 2005 par un certain "Javatwister".

    Apr�s des tests cet apr�s-m, �a marche super.
    Donc merci beaucoup � lui, et d�sol� d'avoir envoy� un post "inutile". Je n'avais jamais vu ce bouton.
    De m�me que dans les r�gles du forum, il est conseill� d'utiliser le bouton "r�solu" en bas � gauche.... que je ne trouve pas.

    Je n'avais trouv� cette syntaxe form.elements["list[]"] dans aucun cours, aucune FAQ. De m�me que "getElementsByName" ; disons que ce genre de m�thode est plus souvent utilis�e pour de la programmation dynamique, alors que moi, je voulais juste cocher des cases, sans modifier l'allure du formaulaire.

    En tout cas merci beaucoup.

  4. #4
    Expert confirm�
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    D�tails du profil
    Informations personnelles :
    �ge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par d�faut
    alors, en fait ces deux solutions sont �quivalentes, l'une utilise le dom (manipulation de la page a l'aide d'un arbre), l'autre non

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par d�faut Merci
    Et moi �a m'a aussi permis de resoudre un probleme sur lequel je butais depuis un moment.
    Je ne connaissais pas non plus cette syntaxe : form.elements['zone[]']
    Je suis d�butante et j'ai appris un nouveau truc qui effectivement ne figure pas ma bible javascript.

    Un grand Merci � vous deux !!! C'est top (meme 4 ans apr�s )

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Placer un tableau dans u post php
    Par fakeclk dans le forum Android
    R�ponses: 5
    Dernier message: 13/06/2012, 17h49
  2. [SOAP] Tableau dans un client PHP
    Par nezdeboeuf62 dans le forum XML/XSL et SOAP
    R�ponses: 2
    Dernier message: 19/11/2009, 16h13
  3. [PHP 5.0] Popup Javascript dans mon formulaire PHP
    Par kykyboogy dans le forum Langage
    R�ponses: 7
    Dernier message: 05/02/2009, 23h36
  4. R�ponses: 4
    Dernier message: 17/02/2008, 15h54
  5. [ STRUTS ] [ LOGIC:ITERATE ] tableau dans un formulaire
    Par LoulouFifi dans le forum Struts 1
    R�ponses: 3
    Dernier message: 18/06/2004, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo