Pb pour récupérer une valeur suite a un POST

Pb pour récupérer une valeur suite a un POST - PHP - Programmation

Marsh Posté le 27-08-2006 à 18:46:18    

Bonjour,
 
Sur mon site, j'ai une procédure de 4 pages dans lesquelles je fais remplir des infos à un user.
La 5ème page doit afficher une récap de toutes les saisies ...
 
Dans la 4ème page, j'ai deux listes déroulantes qui sont mises à jour par un script Javascript.
 
Lorsque je POST ma 4ème page pour afficher la récap ... j'ai une erreur qui me dit que les valeurs du select n'existent pas.
 
PAGE 4 (avant recap)

Code :
  1. <html>
  2. <head>
  3.    <script language=javascript>script qui aliment mon SELECT</script>
  4. </head
  5. <body>
  6.    <form name=toto>
  7.       <select name=select1>
  8.          <OPTION >--------------------------------------------------</OPTION>
  9.          <OPTION >--------------------------------------------------</OPTION>
  10.          <OPTION >--------------------------------------------------</OPTION>
  11.       </select>
  12.       <select name=select2>
  13.          <OPTION >--------------------------------------------------</OPTION>
  14.          <OPTION >--------------------------------------------------</OPTION>
  15.          <OPTION >--------------------------------------------------</OPTION>
  16.       </select>
  17.    </form
  18. </body>
  19. </html

PAGE 5 (recap)

Code :
  1. <html>
  2. <head></head
  3. <body>
  4. <?
  5. Print $_POST['select1']."<br>";
  6. Print $_POST['select2']."<br>";
  7. ?>
  8. </body>
  9. </html


 
Mon erreur : UNDEFINED INDEX select1 in ...
j'ai deux fois cette erreur : une fois pour select1 et une autre fois pour select2
 
Avez vous des idées ... ai-je été clair ???
 
Merci à vous

Reply

Marsh Posté le 27-08-2006 à 18:46:18   

Reply

Marsh Posté le 27-08-2006 à 18:49:10    

si c'est un copier-coller : mets des guillemets autour des nom des <select>, as tu bien précisé method="post" dans <form> ?

Reply

Marsh Posté le 27-08-2006 à 18:50:43    

dans la balise de ton form page 4...
 
rajoute "" method="post" action="page5.php" ""
 
ligne 18, ton form n'est pas fermé... euh moi j'utiliserai les echo au lieu des print mais c'est personnel sinon les <option></option> pourquoi ne pas les mettre en minuscule, c'est la norme, jaimais compris pourquoi, enfin...
 
Ah ui et la balise d'ouverture php, mets <?php au lieu de <? idem, question de normes...

Reply

Marsh Posté le 27-08-2006 à 18:51:14    

axelazerty a écrit :

si c'est un copier-coller : mets des guillemets autour des nom des <select>, as tu bien précisé method="post" dans <form> ?


 
Merci de ta réponse,
 
ce n'est asp un copier coller ... j'ai écrit rapido a la main pour faire plus court que de coller la page entière.
 
Pour répondreà ta question : oui j'ai précisé POST.
 
merci

Reply

Marsh Posté le 27-08-2006 à 18:53:37    

fais un print_r(array_keys($_POST)) pour voir les noms des éléments du formulaire qui ont été postés.
ou carrément print_r($_POST)

Message cité 1 fois
Message édité par axelazerty le 27-08-2006 à 18:54:03
Reply

Marsh Posté le 27-08-2006 à 18:53:47    

ha, c'est pas un copier collé simplifié... alors... euh, on peut voir le code?

Reply

Marsh Posté le 27-08-2006 à 18:54:30    

http://www.pastebin.com si c'est trop gros comme code

Reply

Marsh Posté le 27-08-2006 à 19:01:13    

axelazerty a écrit :

fais un print_r(array_keys($_POST)) pour voir les noms des éléments du formulaire qui ont été postés.
ou carrément print_r($_POST)


je récupère ça :
 
print_r(array_keys($_POST))  donne :
Array ( [0] => zlService [1] => zlModel [2] => media [3] => CRE_DATPRO_JJ [4] => CRE_DATPRO_MM [5] => CRE_DATPRO_AAAA [6] => CRE_DATLIM_JJ [7] => CRE_DATLIM_MM [8] => CRE_DATLIM_AAAA [9] => ACT_TRT [10] => comment1 )  
 
print_r($_POST) donne :
Array ( [zlService] => 2 [zlModel] => 5 [media] => TYPMED002 [CRE_DATPRO_JJ] => 27 [CRE_DATPRO_MM] => 08 [CRE_DATPRO_AAAA] => 2006 [CRE_DATLIM_JJ] => 27 [CRE_DATLIM_MM] => 08 [CRE_DATLIM_AAAA] => 2006 [ACT_TRT] => N [comment1] => Saisissez votre commentaire ici. )

Reply

Marsh Posté le 27-08-2006 à 19:03:13    

les noms affichés te disent quelque chose ? normalement ce sont les noms de élements du formulaire. select1 et 2 n'y sont pas, donc il y a un problème dans ton formulaire.

Reply

Marsh Posté le 27-08-2006 à 19:07:08    

axelazerty a écrit :

les noms affichés te disent quelque chose ? normalement ce sont les noms de élements du formulaire. select1 et 2 n'y sont pas, donc il y a un problème dans ton formulaire.


 
le script que j'ai donné : je l'ai tappé vite fait ...
 
En fait je retrouve bien entre autre z1service et z1model (qui sont le nom des select de ma page)...
 
le message d'erreur :  
 
Notice: Undefined index: suite_a in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 23
Notice: Undefined index: piece in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 24
Notice: Undefined index: emetteur in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 25
Notice: Undefined index: destinataire in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 26
Notice: Undefined index: z1Service in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 35
Notice: Undefined index: z1Model in E:\Websites\BTP74\Creation\Cre-crea4-avancement_CHECK.php on line 36

Reply

Marsh Posté le 27-08-2006 à 19:07:08   

Reply

Marsh Posté le 27-08-2006 à 19:10:25    

hal777 a écrit :

je récupère ça :
 
je comprend pas trop ce qui est écrit dans la trace ....
print_r($_POST) donne :
Array ( [zlService] => 2 [zlModel] => 5 [media] => TYPMED002 [CRE_DATPRO_JJ] => 27 [CRE_DATPRO_MM] => 08 [CRE_DATPRO_AAAA] => 2006 [CRE_DATLIM_JJ] => 27 [CRE_DATLIM_MM] => 08 [CRE_DATLIM_AAAA] => 2006 [ACT_TRT] => N [comment1] => Saisissez votre commentaire ici. )


 
cela veut t'il dire que :
zlService = 2
zlModel  = 5  
...
??????

Reply

Marsh Posté le 27-08-2006 à 19:11:54    

z1service ou zlservice ? on dirait un l minuscule dans le résultat du print_r() et un 1 dans les Notice.
 
Ensuite il faudrait le code précis de ton formulaire.

Reply

Marsh Posté le 27-08-2006 à 19:14:36    

oui, c'est bien ça.le champ zlService a été rempli par la valeur 2, zlModel par 5, etc...
 
Lis la doc de PHP sur les variables $_POST et la recommandation W3C sur le HTML 4.01 et les formulaires, j'ai l'impression que tu n'as pas saisi le principe.

Reply

Marsh Posté le 27-08-2006 à 22:45:40    

Bon,
 
pour ceux qui veulent voir le vrai code
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <script language='javascript'>
  4. function Choixservice(choix)
  5. {
  6.    var z1Service;
  7.    id_service = document.frmDemo1.zlService.selectedIndex;
  8.    document.frmDemo1.nom_service2.value = choix.options[id_service].text;
  9. }
  10. function ModifierListe(id_model)
  11. {
  12.   lg = document.frmDemo1.zlModel.length;
  13.   // On vide la liste
  14.   for (i = lg - 1; i >= 0; i--)
  15.   { document.frmDemo1.zlModel.options[i] = null; }
  16.   id_service = document.frmDemo1.zlService.selectedIndex;
  17. <?
  18. // On récupère la listes des code type opération (INTEGRATION CREANCE, REGLEMENT, CREATION FRAIS)
  19. //   $sql = "SELECT TOP_CLE, TOP_LIB FROM ".$schema_mysql.".code_type_operation";
  20.    $resultat = mysqli_query($connect_mysql, $cat_procedure);
  21.    $max_lignes = 0;
  22.    $option_max = '';
  23. while ($enr = mysqli_fetch_array($resultat))
  24. {
  25. $sql  = "".$cat_actions." WHERE rtrim(CACT_CPRO)=\"".$enr['CPRO_REF1']."\" order by CACT_ORD asc";
  26. $resultat2 = mysqli_query($connect_mysql, $sql);
  27. $nb_resultat2 = mysqli_num_rows($resultat2);
  28. echo "\n";
  29. echo "  if (document.frmDemo1.zlService.options[id_service].value == \"".$enr['CPRO_REF1']."\" )\n   {\n";
  30. echo "    document.frmDemo1.zlModel.length = \"".(mysqli_num_rows($resultat2))."\";\n";
  31. $cpt = 0;
  32. while ($enr2 = mysqli_fetch_array($resultat2))
  33.   {
  34.   echo "    document.frmDemo1.zlModel.options[".$cpt."].value = \"".$enr2['CACT_REF1']."\" ;\n";
  35.   echo "    document.frmDemo1.zlModel.options[".$cpt."].text  = \"".$enr2['CACT_LIB']."\";\n";
  36.   $cpt++;
  37.   if ($cpt > $max_lignes) $max_lignes = $cpt;
  38.   if (strlen($enr2['CACT_LIB']) > strlen($option_max)) $option_max = $enr2['CACT_LIB'];
  39.    }
  40. echo "   }\n";
  41. }
  42. ?>
  43. }
  44. </script>
  45. </script>
  46. </HEAD>
  47. <BODY>
  48. <?
  49. echo "<SELECT NAME=\"zlService\" onChange=\"ModifierListe(-1),Choixservice(this)\" size=\"5\">\n";
  50. while ($enr = mysqli_fetch_array($resultat))
  51. {
  52. $cpt++;
  53. echo "<OPTION VALUE=\"".$enr['CPRO_REF1']."\"";
  54. if ( $resultatmin[0] == $enr['CPRO_ORD'] ) { echo " SELECTED";}
  55. echo ">".htmlspecialchars($enr['CPRO_LIB'])."</OPTION>\n";
  56. }
  57. echo " </SELECT>\n";
  58. echo "<SELECT NAME=\"zlModel\" size=\"5\">\n"; //onChange=\"AllerA('doc',this,0)\"
  59. for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  60. echo " <OPTION >".ereg_replace(".", "--", $option_max)."</OPTION>\n";
  61. echo " </SELECT>\n";
  62. if (!isset($zlModel)) $zlModel = -1;
  63. // On lance une première fois la javascript pour supprimer les caractères ------- via le eReg_replace
  64. echo "<SCRIPT LANGUAGE=\"JavaScript\">;ModifierListe(".$zlModel." );</SCRIPT>\n";
  65. if (isset($zlService) && $zlService != "" )
  66. {
  67. $sql = "".$cat_procedure." Where CPRO_REF1=\"".$zlService."\"";
  68. $resultat = @mysqli_query($connect_mysql, $sql);
  69. $enr = @mysqli_fetch_array($resultat);
  70. echo "Service = $zlService [$enr[0]]<BR><br><br>\n";
  71. }
  72. if (isset($zlModel) && $zlModel != "" && $zlModel != -1)
  73. {
  74. $sql  = "".$cat_actions." WHERE CACT_CPRO=\"".$zlModel."\"";
  75. $resultat = @mysqli_query($connect_mysql, $sql);
  76. $enr = @mysqli_fetch_array($resultat);
  77. echo "Model = $zlModel [$enr[0]]<br>\n";
  78. }
  79. <button onClick="ajouter_action();">Ajouter action</button>
  80. ?>
  81. </BODY>
  82. </HTML>


 
Voilou,
 
j'ai toujours le même probleme et je me demande pourquoi lorsque je "print" ceci: print_r($_POST);
  => et bien je trouve que z1Service vaut 1 ....  :pt1cable:

Reply

Marsh Posté le 28-08-2006 à 15:56:25    

DSL j'ai posté depuis le PC d'un pote ...
 
Je recommence avec mon compte :
 
Bon,
 
pour ceux qui veulent voir le vrai code
 

Code :
  1. <HTML>
  2. <HEAD>
  3. <script language='javascript'>
  4. function Choixservice(choix)
  5. {
  6.    var z1Service;
  7.    id_service = document.frmDemo1.zlService.selectedIndex;
  8.    document.frmDemo1.nom_service2.value = choix.options[id_service].text;
  9. }
  10. function ModifierListe(id_model)
  11. {
  12.   lg = document.frmDemo1.zlModel.length;
  13.   // On vide la liste
  14.   for (i = lg - 1; i >= 0; i--)
  15.   { document.frmDemo1.zlModel.options[i] = null; }
  16.   id_service = document.frmDemo1.zlService.selectedIndex;
  17. <?
  18. // On récupère la listes des code type opération (INTEGRATION CREANCE, REGLEMENT, CREATION FRAIS)
  19. //   $sql = "SELECT TOP_CLE, TOP_LIB FROM ".$schema_mysql.".code_type_operation";
  20.    $resultat = mysqli_query($connect_mysql, $cat_procedure);
  21.    $max_lignes = 0;
  22.    $option_max = '';
  23. while ($enr = mysqli_fetch_array($resultat))
  24. {
  25. $sql  = "".$cat_actions." WHERE rtrim(CACT_CPRO)=\"".$enr['CPRO_REF1']."\" order by CACT_ORD asc";
  26. $resultat2 = mysqli_query($connect_mysql, $sql);
  27. $nb_resultat2 = mysqli_num_rows($resultat2);
  28. echo "\n";
  29. echo "  if (document.frmDemo1.zlService.options[id_service].value == \"".$enr['CPRO_REF1']."\" )\n   {\n";
  30. echo "    document.frmDemo1.zlModel.length = \"".(mysqli_num_rows($resultat2))."\";\n";
  31. $cpt = 0;
  32. while ($enr2 = mysqli_fetch_array($resultat2))
  33.   {
  34.   echo "    document.frmDemo1.zlModel.options[".$cpt."].value = \"".$enr2['CACT_REF1']."\" ;\n";
  35.   echo "    document.frmDemo1.zlModel.options[".$cpt."].text  = \"".$enr2['CACT_LIB']."\";\n";
  36.   $cpt++;
  37.   if ($cpt > $max_lignes) $max_lignes = $cpt;
  38.   if (strlen($enr2['CACT_LIB']) > strlen($option_max)) $option_max = $enr2['CACT_LIB'];
  39.    }
  40. echo "   }\n";
  41. }
  42. ?>
  43. }
  44. </script>
  45. </script>
  46. </HEAD>
  47. <BODY>
  48. <?
  49. echo "<SELECT NAME=\"zlService\" onChange=\"ModifierListe(-1),Choixservice(this)\" size=\"5\">\n";
  50. while ($enr = mysqli_fetch_array($resultat))
  51. {
  52. $cpt++;
  53. echo "<OPTION VALUE=\"".$enr['CPRO_REF1']."\"";
  54. if ( $resultatmin[0] == $enr['CPRO_ORD'] ) { echo " SELECTED";}
  55. echo ">".htmlspecialchars($enr['CPRO_LIB'])."</OPTION>\n";
  56. }
  57. echo " </SELECT>\n";
  58. echo "<SELECT NAME=\"zlModel\" size=\"5\">\n"; //onChange=\"AllerA('doc',this,0)\"
  59. for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  60. echo " <OPTION >".ereg_replace(".", "--", $option_max)."</OPTION>\n";
  61. echo " </SELECT>\n";
  62. if (!isset($zlModel)) $zlModel = -1;
  63. // On lance une première fois la javascript pour supprimer les caractères ------- via le eReg_replace
  64. echo "<SCRIPT LANGUAGE=\"JavaScript\">;ModifierListe(".$zlModel." );</SCRIPT>\n";
  65. if (isset($zlService) && $zlService != "" )
  66. {
  67. $sql = "".$cat_procedure." Where CPRO_REF1=\"".$zlService."\"";
  68. $resultat = @mysqli_query($connect_mysql, $sql);
  69. $enr = @mysqli_fetch_array($resultat);
  70. echo "Service = $zlService [$enr[0]]<BR><br><br>\n";
  71. }
  72. if (isset($zlModel) && $zlModel != "" && $zlModel != -1)
  73. {
  74. $sql  = "".$cat_actions." WHERE CACT_CPRO=\"".$zlModel."\"";
  75. $resultat = @mysqli_query($connect_mysql, $sql);
  76. $enr = @mysqli_fetch_array($resultat);
  77. echo "Model = $zlModel [$enr[0]]<br>\n";
  78. }
  79. <button onClick="ajouter_action();">Ajouter action</button>
  80. ?>
  81. </BODY>
  82. </HTML>


 
Voilou,
 
j'ai toujours le même probleme et je me demande pourquoi lorsque je "print" ceci: print_r($_POST);
  => et bien je trouve que z1Service vaut 1 ....  :pt1cable:

Reply

Marsh Posté le 28-08-2006 à 18:31:15    

plop les moules !


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 28-08-2006 à 18:39:38    

[:haha]

Reply

Sujets relatifs:

Leave a Replay

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