PB : Transfert de variable de formulaire vers une autre page

PB : Transfert de variable de formulaire vers une autre page - PHP - Programmation

Marsh Posté le 05-02-2008 à 11:18:58    

Bonjour,  
 
Voici mon problème :
 
J'ai créée une fiche d'intervention dans laquelle s'affiche automatiquement les infos client dans un premier temps,  
puis la saisie d'un formulaire dans lequel on doit remplir les champs correspondants à l'intervention.
Suite à celà, un bouton "Valider" qui va enregistrer les données dans la BDD.
Jusque là, tout est OK.
 
Le soucis vient quand je créé un second formulaire sur la même page avec un bouton "Apperçu avant Impression" qui va afficher sur une autre page (print.php) la version imprimable du formulaire avec le transfert de variable du premier formulaire.  
Or les variables du 2nd formulaire ne sont pas transférées vers print.php, sachant que je n'utilise pas de base de donnée pour cette manip.
 
J'ai procédé de la façon suivante :
 
"fiche_interv.php"

Code :
  1. <form name="formintv" method="post" action="insererIntv.php" onSubmit="return(verif_intv(formintv));">
  2. <?php include("6-InfoSoc.php" )
  3.          include("7-NoIntv.php" ); ?>
  4. <input name="NoIntv" type="hidden" value="<?php echo $NoIntv ?>" >
  5. <?php $IntvDate = date('d/m/Y');
  6. echo $IntvDate; ?>
  7. <input name="IntvDate" type="hidden" value="<?php echo $IntvDate ?>" >
  8. <input name="IntvDateEdit" type="text" id="IntvDateEdit" size="12" maxlength="10">
  9. <input name="IntvHDeb" type="text" size="2" maxlength="2">heures
  10. <input name="IntvMinDeb" type="text" size="2" maxlength="2">
  11. <input name="IntvHFin" type="text" size="2" maxlength="2">heures
  12. <input name="IntvMinFin" type="text" size="2" maxlength="2">
  13. <input name="IntvObjet" type="text" size="60" maxlength="50">
  14. <textarea name="IntvObsv" cols=90 rows=10 wrap="soft" id="IntvObsv"></textarea>
  15. <input name="IntvMatInst" type="text" size="100" maxlength="85">
  16. <input name="submit" type="submit" value="Valider l'intervention">
  17. <?php
  18. //TRANSFERT DES VALEURS DU FORMULAIRE DANS LES VARIABLES CORRESPONDANTES POUR ENSUITE TRANSFERER CES VARIABLES DANS LE 2ND FORMULAIRE QUI LES ENVERRA VERS "print.php" .
  19.    //réccupérer la variable date du jour ou date modifiée :
  20.       if ($_POST['IntvDateEdit'] == '') {
  21.       $IntvDate = $_POST['IntvDate'];
  22.       }
  23.       else {
  24.       $IntvDate = $_POST['IntvDateEdit'];
  25.       }
  26.       //transférer les variables avant de les envoyer vers une autre page :
  27.       $IntvHDeb = $_POST['IntvHDeb']."h".$_POST['IntvMinDeb'];
  28.       $IntvHFin = $_POST['IntvHFin']."h".$_POST['IntvMinFin'];
  29.       $IntvObjet = $_POST['IntvObjet'];
  30.       $IntvObsv = $_POST['IntvObsv'];
  31.       $IntvMatInst = $_POST['IntvMatInst'];
  32. ?>
  33.   
  34. </form>
  35. //FORMULAIRE D'ENVOI VERS "print.php" :
  36. <form action=<?php echo "print.php?NoIntv=$NoIntv&IntvDate=$IntvDate&IntvHDeb=$IntvHDeb&IntvHFin=$IntvHFin&IntvObjet=$IntvObjet&IntvObsv=$IntvObsv&IntvMatInst=$IntvMatInst"; ?> method="post" target="_blank">
  37. <input type="hidden" name="NomSoc" value="<?php echo $NomSoc; ?>"/> 
  38. <input type="submit" name="print" value="Aperçu avant impression">
  39. </form>


 
"print.php" (affichage des variables récupérées dans le lien du formulaire) :

Code :
  1. <?php
  2.   //Afficher les infos de l'intervention :
  3.   echo "<table width='95%' align='right' border='0' cellspacing='0' cellpadding='2' class='infoBox'>";
  4.   echo "<tr><td width='15%' valign='top' class='infoBox'>N°intervention :</td>";
  5.   echo "<td>".$NoIntv."</td></tr>";
  6.   echo "<tr><td width='15%' valign='top' class='infoBox'>Date :</td>";
  7.   echo "<td>".$IntvDate."</td></tr>";
  8.   echo "<tr><td class='infoBox'>Heure de début :</td>";
  9.   echo "<td>".$IntvHDeb."</td></tr>";
  10.   echo "<tr><td class='infoBox'>Heure de fin :</td>";
  11.   echo "<td>".$IntvHFin."</td></tr>";
  12.   echo "<tr><td class='infoBox'>Objet :</td>";
  13.   echo "<td>".$IntvObjet."</td></tr>";
  14.   echo "<tr><td class='infoBox'>Observation :</td>";
  15.   echo "<td>".$IntvObsv."</td></tr>";
  16.   echo "<tr><td class='infoBox'>Matériel installé en plus :</td>";
  17.   echo "<td>".$IntvMatInst."</td></tr></table>";
  18. ?>


 
PROBLEME : Les variables ne s'affichent pas hormis le N° d'intervention qui est déjà une variable dans fiche_interv.php.
 
Bon c'est un peu long mais j'ai essayé de condenser le code et d'aller à l'essentiel ! ;)  
 
Dans tout les cas je vous remercie d'avance pour votre aide, en espérant avoir été assez clair dans mes propos...
J'espère ainsi recevoir vos lumières sur ce problème...
A+


---------------
http://suruguecreation.free.fr - Conception multimédia 3D
Reply

Marsh Posté le 05-02-2008 à 11:18:58   

Reply

Marsh Posté le 05-02-2008 à 11:37:50    

euh, et qu'est-ce qui t'étonne? :??:


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

Marsh Posté le 05-02-2008 à 14:32:46    

Le problème est que je n'arrive pas à faire afficher les variables dans print.php. :/
 
Pourtant, je pense avoir effectué logiquement les manip suivantes :
 
- Transfert des noms de champs du 1er formulaire dans des variables avec $_POST['nomchamps']
- Transfert des variables utilisées dans le 2nd formulaire, à la suite du lien "print.php?noIntv=$noIntv&...", vers "print.php".
- Affichage en php des variables dans print.php avec des "echo".
 
Où est l'erreur ? :??:  
 
Merci d'avance pour votre aide.


---------------
http://suruguecreation.free.fr - Conception multimédia 3D
Reply

Marsh Posté le 05-02-2008 à 16:12:26    

Si j'ai bien compris tu fais :
 
page1 ---[POST]---> page2 ---[GET]---> page3
 
Donc dans ta 3ème page il faut que tu utilises $_GET['NoIntv'] à la place de $NoIntv.


---------------
Directeur Technique (CTO)
Reply

Marsh Posté le 06-02-2008 à 11:43:16    

Non en réalité il n'y a que 2 pages :
 
page1/formulaire1 ---[POST]--->page1/formulaire2 ---"print.php?NoIntv=$NoIntv&..."---> page2 (affichage des variables)
 
 
Mais je me suis rendu compte d'une chose, c'est que ce n'est pas faisable, dans la mesure où les champs saisis dans le formulaire1 ne sont pas transférés vers le formulaire2 puisque la page n'est pas rafraîchie !
 
En réalité, seule les variables qui s'affichent automatiquement avec la page seront transférées : infos clients et NoIntv.
 
cependant, il y aurait une solution avec du javascript, mais je préfère éviter, étant donné qu'il est parfois mal interprêté par certains navigateurs...


---------------
http://suruguecreation.free.fr - Conception multimédia 3D
Reply

Marsh Posté le 06-02-2008 à 11:56:12    

Pourquoi ne pas faire un seul formulaire avec un bouton "valider" et un bouton "prévisualiser" et réagir différemment en fonction du bouton cliqué?
Vu que le nom du bouton cliqué (associé au texte du bouton) est envoyé avec le reste du formulaire on peut savoir facilement si l'utilisateur a cliqué sur tel ou tel bouton et même s'il a envoyé le formulaire sans cliquer sur un bouton (en appuyant par exemple sur la touche "entrée" du clavier)

Reply

Marsh Posté le 06-02-2008 à 12:02:49    

Omega2 : Juste pour ma culture, tu fais comment dans ce cas précis, tu donnes le même nom aux deux boutons avec des valeurs différentes :

Code :
  1. <input name="bouton" type="submit" value="Valider l'intervention">
  2. <input name="bouton" type="submit" value="Apercu avant impression">


et tu récupères la valeur du bouton via le code : $_POST['bouton'] ?


Message édité par babasss le 06-02-2008 à 12:03:42

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 06-02-2008 à 12:15:29    

Je donnes toujours des noms différents aux boutons : le texte n'est pas fiable puisqu'on peut très bien vouloir le modifier au bout de x temps pour corriger une faute d'orthographe, utiliser un terme différent ou même pour traduire une partie du site.

Reply

Marsh Posté le 06-02-2008 à 16:15:08    

J'ai effectivement essayé cette option omega, mais que faut-il mettre comme lien dans le <form action=""> ?
 
Le lien du bouton 1 ou celui du bouton 2 ?  :??:


---------------
http://suruguecreation.free.fr - Conception multimédia 3D
Reply

Marsh Posté le 06-02-2008 à 16:23:58    

Il faut que tes deux boutons renvoient vers la même page. A toi ensuite dans ta page de réorienter ton script suivant le bouton cliqué.


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 06-02-2008 à 16:23:58   

Reply

Marsh Posté le 07-02-2008 à 09:18:02    

Ok merci babass pour l'info ! ;)

Reply

Sujets relatifs:

Leave a Replay

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