Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2627 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][DOM] balises select non envoyé au serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP][DOM] balises select non envoyé au serveur

n°1657979
weed
Posté le 13-12-2007 à 19:16:02  profilanswer
 

Bonjour,
 
J'ai un tableau d'une 30aine de colone contenant des balises select.  
 
Je me suis créé un un bouton qui me permet de dupliquer une ligne. Je l'ai fais avec DOM en javascript avec la fonction cloneNode.  
 
Puis toujours avec j'ai renomé les attributs name des nouveaux select pour différencier les champs avec la ligne qui a servi de copie. J'ai controlé à l'aide de Firebug, les attributs sont bien renommé.  
 
Lorsque je submit mon formulaire, les champs nouvellement créé n'apparraissent pas dans print_r($_POST).  
 
J'ai essayé les 2 méthodes pour changer les attribut name avec :  
- element.name = "jour_1";
et - element.setAttribute("name", "jour_1" );
 
Ou ai je fauté ?  
 
Est ce que l'on peux reelement creer des elements d'un formulaire coté client avec DOM en javascript pour ensuite pouvoir exploiter les informations coté serveur ?  
J'ai l'impression que non, car ce sont uniquement mes select créé coté client qui ne sont pas envoyés.

mood
Publicité
Posté le 13-12-2007 à 19:16:02  profilanswer
 

n°1657986
naceroth
Posté le 13-12-2007 à 19:54:20  profilanswer
 

Tu utilises un appendChild ou une méthode du style pour insérer ta ligne dans le document ?

n°1658008
PierreC
Posté le 13-12-2007 à 20:59:15  profilanswer
 

j'avais ecrit ce code il y a bien longtemps :

Code :
  1. <html>
  2. <head>
  3. <script>
  4. i=0
  5. function nouv_mail()
  6. {
  7.  i++;
  8.  noeud_span = document.createElement('span')
  9.  noeud_input = document.createElement('input')
  10.  noeud_br = document.createElement('br')
  11.  noeud_text = document.createTextNode('Mail '+i)
  12.  noeud_span.appendChild(noeud_text)
  13.  noeud_input.setAttribute('name','mail'+i)
  14.  document.frm.appendChild(noeud_span)
  15.  document.frm.appendChild(noeud_input)
  16.  document.frm.appendChild(noeud_br)
  17. }
  18. </script>
  19. </head>
  20. <body>
  21.  <input type="button" value="Nouveau mail" onclick="nouv_mail()" />
  22.  <input type="button" value="Envoyer" onclick="document.frm.submit()" />
  23.  <form name="frm" action="post.php" method="GET">
  24.   <br>
  25.  </form>
  26. </body>
  27. </html>


 
il doit toujours fonctionner ...
 


---------------
Du tofu en Alsace : www.tofuhong.com
n°1658200
weed
Posté le 14-12-2007 à 12:02:31  profilanswer
 

naceroth a écrit :

Tu utilises un appendChild ou une méthode du style pour insérer ta ligne dans le document ?


 
Apres avoir fais un clone de ma ligne j'utilise un insertBefore sur le noeud de la table mais le principe reste le meme que le appendChild
 
Voici ma fonction lorsque je clique sur mon bouton "Ajout Projet" qui est dans mon tableau :
 
 
//Chaque ligne est reference par un id "ligne" + ligne qui est une variable qui s'incremente à chaque ligne
 

Code :
  1. function ajoutProjet(ligne)
  2. {
  3. var ligneACopier = document.getElementById("ligne" + ligne);
  4. var table = ligneACopier.parentNode;
  5. var ligneClone = ligneACopier.cloneNode(true);
  6. table.insertBefore(ligneClone, ligneACopier);
  7.        
  8.        //Traitement pour mettre à jour les attributs.  
  9. var tousLesSelect = ligneClone.getElementsByTagName ("select" );
  10. //Recuperation du nombre de projet
  11. var nbProjet = document.getElementById("nbprojet" );
  12. var attri;
  13. //Mise à jour du nombre de projet
  14. nbProjet.value=parseInt(nbProjet.value)+1;
  15. //Mise à jour des attributs name
  16. for (var i = 0 ; i < tousLesSelect.length ; i++)
  17. {
  18.  //is_ignorable : hack pour Firefox à cause des espaces
  19.  if (is_ignorable (tousLesSelect[i]) == false && tousLesSelect[i].hasAttribute("name" ))
  20.  {
  21.   //attri = tousLesSelect[i].getAttribute("name" );
  22.   attri = tousLesSelect[i].name;
  23.   attri = attri.substring(0,attri.lastIndexOf("_" ));
  24.   //tousLesSelect[i].setAttribute("name", attri+"_"+nbProjet.value);
  25.   tousLesSelect[i].name = attri+"_"+nbProjet.value;
  26.  }
  27. }
  28. //Mise à jour de l'attribut id du tr cloné
  29. ligneClone.id = "ligne"+nbProjet.value;
  30. }


 
 
 
pierreC, curieux que tu ne recupere pas le node/noeud de ton formulaire. Tu l'appelles directement par document.frm. Je ne savais que l'on pouvait le faire avec un appendChild.  
 
 
Le plus furstrant dans tout ca, c'est que l'ajout fonctionne super bien, syntaxiquement au niveau html généré ca a l'air d'etre ok quand on inspecte les differents élements de la page (select, ligne, ...) avec firebug mais les données sont pas du tout envoyés :(

n°1659606
weed
Posté le 17-12-2007 à 22:03:09  profilanswer
 

any idea ?

n°1659631
gatsu35
Blablaté par Harko
Posté le 17-12-2007 à 22:51:27  profilanswer
 

avec firebug analyse la gueule de ton select dans le DOM

n°1660406
weed
Posté le 19-12-2007 à 00:05:11  profilanswer
 

gatsu35 a écrit :

avec firebug analyse la gueule de ton select dans le DOM


 
 
Firebug est mon principal outil de travail. Justement cela a la meme gueule que les autres généré directement par le serveur ...
 
Les points vérifiés  

  • ils sont bien entre la balise form
  • l'atteribut name est bien renommé (ici jour1_5_2)  pour qu'il soit unique sur la page


Code :
  1. <td>
  2. <select name="jour1_5_2" onchange="updateTotal(this);">
  3. <option selected="">0 </option>
  4. <option>0.5 </option>
  5. <option>1 </option>
  6. </select>
  7. </td>


 
 
j'etais bien content avec mon DOM, mais cela me sert malheuresement à rien. Comme je n'ai pas besoin de dupliquer à l'infini mais juste en double, je vais juste cacher la ligne ou sinon besoin. La ligne sera donc directement par le serveur est aura l'attribut visibility à hidden  ou non ....


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP][DOM] balises select non envoyé au serveur

 

Sujets relatifs
[PHP] Avis sur formulaire et session[PHP](AJAX) - Pb Caractères spéciaux (apostrophe) ..euh RESOLU en fait
[PHP] Limitation vote par IP[PHP] [ RESOLU ] Textarea et javascript \n ou \\n
PHP MYSQL Affichage resultats selon heure et heure de nuit[PHP] Erreur: Cannot use a scalar value as an array
[PHP] Variable non définie ?!Calculer la date d'il y a 30 jours en PHP
VBA 2007 et INET: serveur OLE introuvable... Au secours !Pb avec imbrications de requete select SQL
Plus de sujets relatifs à : [PHP][DOM] balises select non envoyé au serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR