[PHP&JAVASCRIPT] Probleme pour recuperer les variables d'un formulaire

Probleme pour recuperer les variables d'un formulaire [PHP&JAVASCRIPT] - PHP - Programmation

Marsh Posté le 07-02-2006 à 21:21:24    

Bonsoir à tous,
j'ai un petit soucis avec l'un de mes formulaires. Je m'explique :
J'avais besoin de creer un formulaire dynamique, c'est a dire que j'ai une suite de listbox et le choix fait par l'utilisateur doit influer sur les listbox suivante, j'ai donc fais une petite fonction en javascript qui permet de modifier les attributs value de la listbox suivant, elle fonctionne tres bien, mais malheur ! lorsque je récupère le contenu de la variable POST en php, j'ai un champ vide !
Je m'en remet à vous si quelqu'un à une solution, une autre piste à explorer je suis tout ouie :)
 

Code :
  1. // Récupeation des variables post
  2.   if (isset($_POST['part2_race']))
  3.     $part2['race']    = $_POST['part2_race'];
  4.   else     $part2['race']    = ""; 
  5.   if (isset($_POST['part2_peau']))
  6.     $part2['peau']   = $_POST['part2_peau'];
  7.   else     $part2['peau']   = "";


 

Code :
  1. function Choix(formulaire)
  2. {
  3. i = formulaire.part2_race.selectedIndex;
  4. if (i == 0)
  5.   {
  6.   for (i=0;i<3;i++)
  7.     {
  8.     formulaire.part2_peau.options[i].text="";
  9.     }
  10.   return;
  11.   }
  12. switch (i)
  13.   {
  14.   case 1 : var txt = new Array ('2786','2787','2813','1157','2101','2401','1892','1900','996'); break;
  15.   case 2 : var txt = new Array ('256','555','56','356','556','256','455','355','155'); break;
  16.   case 3 : var txt = new Array ('1635','1622','1215','1623','1621','2118','1632','1627','1205'); break;
  17.   case 4 : var txt = new Array ('1890','848','1887','847','842','852','1881','1880','1889'); break;
  18.   case 5 : var txt = new Array ('1321','2222','1334','2121','2119','1329','690','1330','296'); break;
  19.   case 6 : var txt = new Array ('1810','2413','2108','2107','2309','2307','1052','2310','1819'); break;
  20.   case 7 : var txt = new Array ('1868','1805','1832','1048','1843','1142','1833','1143','1043'); break;
  21.   case 8 : var txt = new Array ('1720','1512','242','1126','144','343','1723','1503','1126'); break;
  22.   case 9 : var txt = new Array ('2006','2209','868','1425','1412','1431','1439','2128','667'); break;
  23.   }
  24. formulaire.part2_peau.options[0].text="Couleur de peau";
  25. for (i=0;i<9;i++)
  26. {
  27.   formulaire.part2_peau.value[i+1]=txt[i];
  28.   formulaire.part2_peau.options[i+1].text=txt[i];
  29. }
  30. }


 

Reply

Marsh Posté le 07-02-2006 à 21:21:24   

Reply

Marsh Posté le 07-02-2006 à 21:51:12    

Code :
  1. function Choix(formulaire)
  2. {
  3. i = formulaire.part2_race.selectedIndex;
  4. if (i == 0)
  5.   {
  6.   for (i=0;i<3;i++)
  7.     {
  8.     formulaire.part2_peau.options[i].text="";
  9.     }
  10.   return;
  11.   }
  12. switch (i)
  13.   {
  14.   case 1 : var txt = new Array ('2786','2787','2813','1157','2101','2401','1892','1900','996'); break;
  15.   case 2 : var txt = new Array ('256','555','56','356','556','256','455','355','155'); break;
  16.   case 3 : var txt = new Array ('1635','1622','1215','1623','1621','2118','1632','1627','1205'); break;
  17.   case 4 : var txt = new Array ('1890','848','1887','847','842','852','1881','1880','1889'); break;
  18.   case 5 : var txt = new Array ('1321','2222','1334','2121','2119','1329','690','1330','296'); break;
  19.   case 6 : var txt = new Array ('1810','2413','2108','2107','2309','2307','1052','2310','1819'); break;
  20.   case 7 : var txt = new Array ('1868','1805','1832','1048','1843','1142','1833','1143','1043'); break;
  21.   case 8 : var txt = new Array ('1720','1512','242','1126','144','343','1723','1503','1126'); break;
  22.   case 9 : var txt = new Array ('2006','2209','868','1425','1412','1431','1439','2128','667'); break;
  23.   }
  24. formulaire.part2_peau.options[0].text="Couleur de peau";
  25. for (i=0;i<9;i++)
  26. {
  27.   formulaire.part2_peau.options[i+1].value=txt[i];
  28.   formulaire.part2_peau.options[i+1].text=txt[i];
  29. }
  30. }


 
Je pense que l'erreur viens de la ligne 28
J'aimerais bien que tu nous montre le code html complet, perso j'ai du en refaire un vite fait mais j'étais obligé de mettre des "document.getElementById('part_peau')" en definissant l'id du select à 'part_peau' à la place de tous les "formulaire.part2_peau"


Message édité par Ricco le 07-02-2006 à 21:53:15

---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 07-02-2006 à 21:54:48    

Code :
  1. <tr>
  2.       <td><img src="images/info.gif"  onMouseOver="return overlib('<p></p>',WIDTH, 430 ,CENTER)" onMouseOut="return nd();" href="javascript:void(0);" style="cursor:help"> Race du personnage : </td><td>
  3.   <select name="part2_race" class="champ" onChange='Choix(this.form)'>
  4.     <option value="-1" selected>Choix Race</option>
  5.    <option value="Campare">Campare</option>
  6.    <option value="Coltenne">Coltenne</option>
  7.    <option value="Fleire">Fleire</option>
  8.    <option value="Habrude">Habrude</option>
  9.    <option value="Ketcha">Ketcha</option>
  10.    <option value="Osmate">Osmate</option>
  11.    <option value="Spina">Spina</option>
  12.    <option value="Teonal">Teonal</option>
  13.    <option value="Zaure">Zaure</option>
  14.   </select>
  15.    </td>
  16.     </tr>
  17.  <tr>
  18.       <td>Couleur de peau du personnage : </td><td>
  19.   <select name="part2_peau" class="champ">
  20.    <option value="2786" selected>2786</option>
  21.    <option value="2787">2787</option>
  22.    <option value="2813">2813</option>
  23.    <option value="1157">1157</option>
  24.    <option value="2101">2101</option>
  25.    <option value="2401">2401</option>
  26.    <option value="1892">1892</option>
  27.    <option value="1900">1900</option>
  28.    <option value="996">996</option>
  29.   </select>
  30.    </td>
  31.     </tr>
  32.  <tr>
  33.       <td>Couleur de poils du personnage : </td><td>
  34.   <select name="part2_poil" class="champ">
  35.    <option value="2786" selected>2786</option>
  36.    <option value="2787">2787</option>
  37.    <option value="2813">2813</option>
  38.    <option value="1157">1157</option>
  39.    <option value="2101">2101</option>
  40.    <option value="2401">2401</option>
  41.    <option value="1892">1892</option>
  42.    <option value="1900">1900</option>
  43.    <option value="996">996</option>
  44.   </select>
  45.    </td>
  46.     </tr>


 
Merci pour ta réponse tout d'abord,
voici l'extrait du formulaire correspondant ;)

Reply

Marsh Posté le 07-02-2006 à 22:20:43    

Ah ok, ça fonctionne alors :D
 
Par contre, à la ligne 26, faut que je mettre for (i=0;i<8;i++) sinon ça me met une erreur lors de l'accès de formulaire.part2_peau.options[9]    


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 07-02-2006 à 22:34:24    

ca fonctionne .??
Pq mes variables sont vides alors  :pfff:  :pt1cable:

Reply

Marsh Posté le 07-02-2006 à 23:05:58    

Enfin ça marche ... y'a plus d'erreur et les champs values sont biens changés, contrairement à avant :D
 
J'ai pas envie de lancer php mais à priori ça devrait tourner. Ca donne quoi un print_r( $_POST ) ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 07-02-2006 à 23:19:30    

Code :
  1. Array ( [part2_nom] => personnage de test [part2_sexe] => M [part2_race] => Coltenne [part2_peau] => 2813 [part2_poil] => 996) < CREATION DU PERSONNAGE ACCEPTEE >


 
Le probleme est qu'il ne prend pas la value changée par le js mais bien la value par défaut qui est dans le .html ...
Donc soit je me suis planté qqpart, soit je ne comprends vraiment plus rien :D
(il aurait du mettre 555 et pas 2813)
 

Reply

Marsh Posté le 07-02-2006 à 23:27:20    

Et comment t'envoie le formulaire ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 07-02-2006 à 23:40:02    

Code :
  1. <form action="inscription2.php?action=partie2fin" method="post" id="partie2fin">


Je l'envoie en post sur une partie de mon script d'inscription qui se charge de lire le tableau POST, de le copier dans une variable locale, de passer celle ci a la moulinette pour enlever les saletées (injection, code malicieux) avant de balancer le tout dans MYSQL par une requete.
Tout fonctionne parfaitement, les autres variables sont ok, juste le javascript qui ne passe pas.

Reply

Marsh Posté le 08-02-2006 à 08:54:00    

personne ne sait ?
je suis sensé rendre mon projet aujourd'hui et c'est le seul bug qu'il me reste :s

Reply

Marsh Posté le 08-02-2006 à 08:54:00   

Reply

Marsh Posté le 08-02-2006 à 11:20:26    

Juste pour savoir, tes "select" ils sont bien dans le formulaire?
Et t'as bien choisit la couleur dans le navigateur avant de le valider?

Reply

Marsh Posté le 08-02-2006 à 16:10:20    

oué oué ... je suis pas un novice en plus mis à part en javascript :p
Toutes les autres variables passent bien donc ca doit vraiment venir du js ...
Je sèche total ^^


Message édité par l3eleg le 08-02-2006 à 17:42:35
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed