[PHP] résolu - impossible de recupérer les $_POST

résolu - impossible de recupérer les $_POST [PHP] - PHP - Programmation

Marsh Posté le 21-03-2008 à 10:52:57    

Salut
 
J'affiche un formulaire, avec des textarea, et je veux recupérer des infos par la suite :  
 

Code :
  1. <? echo "
  2.     <form name='frm' method='post' action='".$_SERVER['PHP_SELF']."'>
  3.     <input type='checkbox' name='chk1' value='1' OnClick='fncEnable(1)'> N° de licence <input type='text' name='txt1' value='".$txt1."' DISABLED>
  4.         Date (YYYY-MM-DD) <input type='text' name='datestart' value='".$datestart."' > <input type='text' name='dateend' value='".$dateend."' ><br>
  5.     <input type='checkbox' name='chk2' value='1' OnClick='fncEnable(2)'> N° de process <input type='text' name='txt2' value='".$txt2."' DISABLED><br>
  6.     <input type='checkbox' name='chk3' value='1' OnClick='fncEnable(3)'> N° de session <input type='text' name='txt3' value='".$txt3."' DISABLED><br>
  7.     <input type='submit'  value='Go !'>
  8.     </form>
  9.       ";
  10. echo "<pre>".print_r($_REQUEST, 1)."</pre>";
  11. echo "<pre>"; print_r($_POST); echo "</pre>";
  12. ?>


 
Avec l'addon firefox "Live HTTP Headers", je vois bien que le POST contient les données, mais la page web n'affiche rien dans le print_r($_REQUEST, 1)
 
Vous auriez une idée d'ou peut provenir le pb ?

Message cité 1 fois
Message édité par Burps le 21-03-2008 à 16:06:06
Reply

Marsh Posté le 21-03-2008 à 10:52:57   

Reply

Marsh Posté le 21-03-2008 à 10:55:38    

Burps a écrit :

la page web n'affiche rien dans le print_r($_REQUEST, 1)

 

Vous auriez une idée d'ou peut provenir le pb ?

 

oui, du ",1".[:dawa]

 

http://fr2.php.net/manual/en/function.print-r.php

 
Citation :

return

 

   If you would like to capture the output of print_r(), use the return parameter. If this parameter is set to TRUE, print_r() will return its output, instead of printing it (which it does by default).


Message édité par skeye le 21-03-2008 à 10:56:10

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 21-03-2008 à 11:12:07    

OK, j'avoue, j'avais copié-collé sans vérifier ce que ca faisait...
 
Ceci dit, il m'affiche bien ce qui est dans $_GET, et le [PHPSESSID], mais mes données du formulaire pas du tout...

Reply

Marsh Posté le 21-03-2008 à 14:25:28    

OK, des details, je coris que je vois d'ou vient le probleme
 
j'ai en realité une seule page php, avec des frames (c mâââlllll, je sais...)
- si la page eest appeleé avec un GET vide, alors on crée un frameset
- si $_GET['frame'] == top, alors on crée le formulaire
- si $_GET['frame'] == main, alors on affiche un resultat
 

Code :
  1. if (!strcmp($frame, "" )) {
  2.     echo "
  3.       <frameset rows='300,*'>
  4.         <frame src='".$_SERVER['PHP_SELF']."?frame=top' name='top' marginwidth='10' marginheight='10' noresize>
  5.         <frame src='".$_SERVER['PHP_SELF']."?frame=main' name='main' marginwidth='10' marginheight='10' noresize>
  6.       </frameset>
  7.     ";
  8.   }
  9.   if (!strcmp($frame,"top" )) {
  10.   echo "<body>";
  11.   echo "
  12.     <form name='frm' method='post' action='".$_SERVER['PHP_SELF']."'>
  13.     <input type='checkbox' name='chk1' value='1' OnClick='fncEnable(1)'> N° de licence <input type='text' name='txt1' value='".$txt1."' DISABLED>
  14.     <input type='checkbox' name='chk2' value='1' OnClick='fncEnable(2)'> N° de process <input type='text' name='txt2' value='".$txt2."' DISABLED><br>
  15.     <input type='submit'  value='Go !'>
  16.     </form>
  17.       ";
  18.   echo "</body>";
  19.   }
  20.   if (!strcmp($frame,"main" )) {
  21.   echo "<body>";
  22.   echo "<pre>"; print_r($_POST); echo "</pre>";
  23.   echo "txt1 = ".$_POST['txt1']."<br>";
  24.   echo "txt2 = ".$_POST['txt2']."<br>";
  25.   echo "</body>";
  26.   }


 
J'ai un doute sur l'origine du pb :  
 
Lorsqu'on clique sur le bouton "Go !", il appelle la page elle-meme, et envoie les données dans le $_POST. (jusque la, tout va bien)
- ensuite, il load donc la page 'PHP_SELF' (donc lui-meme), a priori sans le $_GET['frame'] --> donc il va recharger le frameset
--> est-ce a ce moment-la qu'il perd le $_POST ?
 
J'ai essayé de passer dans le formulaire <form name='frm' method='post' action='".$_SERVER['PHP_SELF']."?".$_GET['frame']."'>, donc rajouter le frame
--> meme resultat....
 
Est-ce que qqu'un qurait une idée ?

Reply

Marsh Posté le 21-03-2008 à 14:43:31    

commence par faitre un print_r($_POST) a la ligne 1...  

Reply

Marsh Posté le 21-03-2008 à 15:03:18    

en fait, je peux pas vraiment le faire a la ligne 1, ou bien on n'aura pas le frameset : ca vient du fait que pour un frameset, tu ne peux pas le mettre entre les <body></body> (j'y ai perdu une demi-journée....).
 
Ceci dit, pour le test, j'ai fait :  afficher la page comme elle est actuellement, PUIS ajouter le print_r($_POST) a la ligne 1, et envoyer le formulaire
--> effectivement, j'obtiens mon $_POST rempli
 
 
Donc, je pense a voir bien localisé le pb dans mon post precedent.
la solution serait donc de pouvoir propager le $_POST  : est-ce possible ?


Message édité par Burps le 21-03-2008 à 15:04:23
Reply

Marsh Posté le 21-03-2008 à 15:10:31    

oui abandonne les frames... utilise des includes (surtout en php)

Reply

Marsh Posté le 21-03-2008 à 15:43:59    

Bon, OK, t'as gagné :) (et puis je savais que les frames c'etait mal, on me l'avait dit... maintenant je le sais par experience :)
 
Ets-ce que tu pourrais par contre me donner la structure pour commencer proprement stp ?
Je vois pas trop comment organiser mon code avec ces includes desormais...
 
Merci d'avance

Reply

Marsh Posté le 21-03-2008 à 15:49:50    

ba tout le contenue de chaque frame, sont dans des fichiers séparés.
(par ex la frame du haut peut etre un truc du genre:

Code :
  1. <body>
  2. <div> Mon entete </div>
  3. </body>


 
tu le mets dans entete.php par ex. en elevant le </body>
 
et ensuite sur ta page principale  
au lieu de mettre des <frame> tu met  

Code :
  1. <? include('entete.php'); ?>


 
et ensuuite ton code classique

Reply

Marsh Posté le 21-03-2008 à 16:05:40    

Merci, je pense que je vais pouvoir clore ce sujet :)

Reply

Sujets relatifs:

Leave a Replay

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