Conserver les données d'un formulaire

Conserver les données d'un formulaire - PHP - Programmation

Marsh Posté le 13-02-2006 à 16:05:31    

Bonjour à tous,
 
J'ai un premier formulaire qui renvoie un nom et d'autres renseignements.
Si ce nom existe en double dans la base de données, un second formulaire demande de sélectionner la bonne personne.
 
Je récupère les renseignements du premier formulaire :

Code :
  1. if(isset($_POST["nom"]))
  2.      {
  3.        
  4.          $date   = $_POST["date"];
  5.          $nom    = $_POST["nom"];
  6.          $idPdt  = $_POST["pdt"];
  7.          $qte    = $_POST["qte"];
  8.          $mode   = "ajout";
  9.          idClient($nom, $idConnexion);
  10.      }


La fonction idClient se passe bien, elle récupère l'idClt et exécute correctement la fonction suivante (ajoute) s'il n'y a qu'un nom et elle affiche un second formulaire de choix en cas de doublons de noms.
 
Une fois le choix effectué et récupéré, la fonction ajoute est lancée, qui prend comme paramètres $date, etc du 1er formulaire mais ceux-ci ne sont plus en mémoire :( <= c'est ça le pb !
 
qu'est-ce qui m'échappe ?
 
merci d'avance

Reply

Marsh Posté le 13-02-2006 à 16:05:31   

Reply

Marsh Posté le 13-02-2006 à 16:12:34    

Ce qui t'échape, ca doit être le fait que les variables existantes au cours d'une demande de fichier au serveur n'existent plus à la demande suivante si on ne les renvois pas à nouveau. (seules exceptions : les variables dites de session et les variables donnant des informations sur le serveur)
En bref, il faut que tu remettes ces informations dans ton second formulaire (<input type=hidden> ) ou que tu stockes les valeurs dans la session.

Reply

Marsh Posté le 13-02-2006 à 16:17:26    

Salut !
 
Les POST ne sont gardés que pendant un seul changement de page (lors du submit de ton formulaire). Ce qui fait que, lors d'un nouveau changement de page, tu les perds.
 
Dans ton 2ème formulaire, il faut que tu ajoutes toutes tes variables à garder en <input type='hidden' name='nom' value='$nom' />.
 
Sinon, les SESSIONS, mais dans ce cas, ça ne semble pas nécessaire.
 
J'espère être à peu prêt clair.

Reply

Marsh Posté le 13-02-2006 à 16:41:19    

A vrai dire, je ne comprends pas.  
Mes variables $_POST, je les mets dans des $nom, donc elle sont stockées dans les $nom et plus dans $_POST.  
 
Mais bon ça fonctionne ... je vais tâcher de comprendre.
Merci
 
ps :j'ai édité, j'avais dit des bêtises.


Message édité par omsarath le 13-02-2006 à 16:50:48
Reply

Marsh Posté le 13-02-2006 à 17:25:18    

non, en gros, quand ton formulaire est validée :
tu récupères tes variables en $_POST (ou $_GET). Pour les réafficher, tu les réintègres dans ton 2è formulaire (où l'utilisateur doit resaisir un autre nom).
Donc, par rapport à ton code, ça devrait donner un truc comme ça :
 

Code :
  1. echo "<form method='POST' action='./validation.php'>\n\n" .
  2. "<input type='hidden' name='date' value='" . $date. "' />\n" .
  3. "<input type='hidden' name='pdt' value='" . $idPdt . "' />\n" .
  4. "<input type='hidden' name='qte' value='" . $qte . "' />\n" .
  5. "<input type='text' name='nom' size='20' />\n" .
  6. "<input type='submit' value='Transmettre un autre fichier' />\n\n" .
  7. "</form>\n\n";

Reply

Marsh Posté le 13-02-2006 à 17:34:08    

vi, vi, j'ai bien compris ça ... et ça fonctionne, merci encore :)
 
ce que je ne comprends pas, c'est pourquoi dans la mesure ou je récupère les valeurs des variables en $_POST et que je les enregistre dans des variables "normales" elles ne soient pas disponibles après ...
 
De toute façon, je débute complètement, il me manque sûrement des notions de base mais je comprendrai !!
 
a+
 

Reply

Marsh Posté le 13-02-2006 à 18:28:10    

Ca c'est tout simplement par ce que les "variables normales" (pour reprendre ton terme) n'ont comme duré de vie maximale que la durée de l'exécution du script et c'est des variables qui ne sont pas partagé avec les autres pages php ni avec les autres demande de la même page.
 
En fait, une variable existe :
- jusqu'a ce qu'elle subisse une destruction décidé par le programmeur ( unset($var); )
- jusqu'a la fin de l'exécution de la fonction dans laquelle on lui donne une valeur sauf si c'est une variable globale ( global $var; ) auquel cas elle vit jusqu'a sa destruction ou la fin du script
- jusqu'a la destruction de l'objet auquel elle appartient si c'est une variable déclaré dans une classe (programmation objet)
- jusqu'a la fin de l'exécution du script
 
EDIT : correction de francais. :D


Message édité par omega2 le 13-02-2006 à 18:46:03
Reply

Marsh Posté le 13-02-2006 à 18:31:00    

ben c'est comme a dit omega2, les varaibles ne sont que temporaires dans la page, pour les garder disponible, il n'y a que les variables dites de session et les variables donnant des informations sur le serveur

Reply

Marsh Posté le 13-02-2006 à 18:45:28    

ok !
Merci pour ces éclaircissements, j'avais déjà pu découvrir les variables globales, mais j'avais cru lire quelque part que les variables déclarées dans le script principal étaient globales d'où mon incompréhension.
 
Vais aller potasser ces variables, moi ... ça ira mieux après !
Merci à tous.

Reply

Marsh Posté le 13-02-2006 à 18:53:26    

C'est pas tout à fait ça. Les variables déclarés en dehors de toutes fonctions, de toutes classes et celles déclarés dans une fonction à l'aide du mot clé "global" sont des variables globales.
 
Pour les fichiers inclus à l'aide de "include('fichier.php')" ou "require('fichier.php')", pour savoir si c'est une "variable globale" ou non, il suffit de s'imaginer que le code qu'est dans le fichier est collé à la place de cette fonction (en pratique, c'est ce que fait l'exécuteur php) et de réfléchir comme ci dessus.
 
Par contre, il faut bien comprendre qu'une "variable globale" n'est qu'une "simple variable" qui existe en dehors des fonctions et dans une fonction de l'exécution de "global $var;" jusqu'a la fin de la fonction et que ca n'est pas par ce qu'elle est "globale" qu'elle sera partagé entre les différents scripts.

Reply

Marsh Posté le 13-02-2006 à 18:53:26   

Reply

Marsh Posté le 13-02-2006 à 19:43:33    

D'accord, je commence à mieux comprendre ...  
En fait, même en cas de fichier php unique, on ne garde en mémoire que les variables globales résultant de la dernière opération/fonction ou plutôt page ...  
... d'où l'intérêt des variables de sessions
 
Thx omega2.


Message édité par omsarath le 13-02-2006 à 20:13:04
Reply

Sujets relatifs:

Leave a Replay

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