[Résolu] variable garde sa valeur d'une page à une autre ? possible ?

variable garde sa valeur d'une page à une autre ? possible ? [Résolu] - PHP - Programmation

Marsh Posté le 23-07-2004 à 14:37:27    

Voilà, je débarque un peu dans le PHP (2-3 jours), j'ai fait un peu de C++ il y a qques mois, mais là j'ai un boulot à faire en PHP. Le principe est le suivant dans les grandes lignes :  
 
A partir d'une page écrite en html, je dois populariser une base de donnée SQL : 1ère étape
 
Ensuite, je dois pouvoir récupérer les données enregistrées, en gros faire des requêtes SQL.  
 
J'utilise le PHP intégré à l'HTML pour traiter les champs "input", traiter les variables et envoyer mes requêtes à mon SQL server.
 
Déjà résolu pas mal de petits problèmes, le suivant est :  
 
 - Je voudrais remplir un tableau, mais l'utilisateur ne sait pas combien d'entrées il aura à mettre... J'ai donc créé un champ d'entrée sur une page indépendante. L'utilisateur rempli le champ, clique sur le bouton et php entre la valeur du champ ds un tableau. la page se recharge car le form fait appel à cette meme page et l utilisateur peut à nouveau remplir le champ et l'envoyer ds la cellule suivante de mon tableau. Pour changer de cellule, me faut un compteur ($j). initialisé à zero lors de la premiere arrivée sur la page (si la fonction isset() renvoie false-->la variable $_POST[blabla] n'a pas encore été attribuée. ensuite il devrait rajouter 1 à ce compteur car la isset($POST[blabla]) renvoie thrue. tout semble marcher correctement mis à part qu'à chaque "reload" de la feuille, $j est re-créé et perd donc sa valeur. J'avais pensé fixer cette valeur en l'initialisant ailleurs, mais comment garantir que cette page ne sera pas elle même reloaded... Je pensais envoyer la valeur à une autre page, avant le reload, et la récupérer juste après... Est ce possible ??? y a t il un autre moyen magique, est ce que je cherche trop loin ??? Toute aide sera la bienvenue.
 
Voilà le code pour cette page (db_table_used_add.php) :
 
<html>
  <head>
  </head>
  <body>
    <?php
     include 'functions.php';  
     if (isset($_POST[db]))
       {
         $j++;
       }  
     else
       {
         $j=0;
       }  
    ?>
   
    <form method=post action=db_table_used_add.php>  
    <input type="text" name="db" size="134"><br>
    <input type="submit" value="Add"><br>
     
    <?php
      for ($i=0; $i<$j; $i++)
        {
          $tab[$i]=$_POST[db];
        }    
     
    ?>
  </body>
 
</html>


Message édité par dawei38 le 26-07-2004 à 11:44:53
Reply

Marsh Posté le 23-07-2004 à 14:37:27   

Reply

Marsh Posté le 23-07-2004 à 14:44:20    

<form method=post action=db_table_used_add.php?j=<?php echo $j; ?>>
tu peux tester $j dans ta page d'arrivée, elle aura la valeur envoyée... (que te page d'arrivé soit celle d'appel comme ici, ou une autre)


Message édité par Xav_ le 23-07-2004 à 14:45:21

---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 23-07-2004 à 14:56:11    

J'essaie ça de suite, merci bcp !

Reply

Marsh Posté le 23-07-2004 à 16:03:56    

Voilà j'ai réessayé en mettant des echo pour connaître la valeur de i et j à chaque moment. J'ai tooujours le même problème:
   - Au premier chargement de la page, le formulaire n'ayant jamais été utilisé, $_POST[db] n'est pas assigné et isset($_POST[db]) doit bien renvoyer false et donc mise à 0 de j passage dans le false de la condition if()---> affichage de $j = 0 lors du débugage $j est bien initialisé à 0 si form n'a jamais été utilisé :OK !!
 
  - je rempli le champ, clique sur submit, le form est envoyé, $_POST[db] est initialisé et je recharge la meme page en espérant que $i garde sa valeur : 0 pour pouvoir être incrémentée. Comme j'ai déjà utilisé le form isset($_POST[db]) vaut 1 et je passe dans la partie thrue du if() qui doit m'incrémenter mon $j. J'y passe bien, car je l'affiche pour débugger, mais la valeur de $j avant l'incrémentation (devrait être 0) est "vide", je suppose donc "non initialisée". Après l'incrémentation, passe à 1, je suppose que $i non initialisé à été considéré comme à 0.
 
 --> coup suivant, j'espère passer dans la partie thrue du if (ça c'est ok) et donc incrémenter mon $j qui vaut 1, mais à nouveau, il vaut "vide", donc entre chaque reload, il ne garde tjs pas sa valeur...
 
voilà le code:  
 
<html>
  <head>
  </head>
  <body>
    <?php
       
      if (isset($_POST[db]))
        {
          echo "isset thrue";echo "<br />\n";
          echo "$ j avant ++ : ";
          echo $j;echo "<br />\n";
          $j++;
          echo "$ j après ++ : ";
          echo $j;echo "<br />\n";
        }  
      else
        {
          echo "isset false";echo "<br />\n";
          $j=0;
          echo "$ j : ";
          echo $j;echo "<br />\n";
        }  
       
      for ($i=0; $i<$j; $i++)
        {
          $tab[$i]=$_POST[db];
          echo "$ tab[i] : ";
          echo $tab[i];echo "<br />\n";
          echo "$ i : ";
          echo $i;echo "<br />\n";
          echo "$ j : ";
          echo $j;echo "<br />\n";
        }    
    ?>
    <form method=post action=db_table_used_add.php?j=<?php echo $j; ?>>  
    <input type="text" name="db" size="134"><br>
    <input type="submit" value="Add"><br>
  </body>
</html>
 
 
J'ai aussi essayé dans la déclaration du form de mettre un $ avant le j...
 
<form method=post action=db_table_used_add.php?$j=<?php echo $j; ?>>  
 
Merci du coup de patte !!!
 
Bonne journée !

Reply

Marsh Posté le 23-07-2004 à 16:25:21    

si tu envoye ton formulaire comme ca, tu récupère la valeur de j dans $_GET['j']

Reply

Marsh Posté le 23-07-2004 à 16:39:13    

mathix a écrit :

si tu envoye ton formulaire comme ca, tu récupère la valeur de j dans $_GET['j']


 :pfff:  
 
<form method=post action=db_table_used_add.php?$j=<?php echo $j; ?>>  
 


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 23-07-2004 à 16:42:42    

J'essaie... merci !

Reply

Marsh Posté le 23-07-2004 à 17:11:52    

JagStang a écrit :

:pfff:  
 
<form method=post action=db_table_used_add.php?$j=<?php echo $j; ?>>


la variable "db" est passé par "post" mais la variable "j" est passée par "get"


---------------
mathix@jabber.org
Reply

Marsh Posté le 23-07-2004 à 17:15:10    

super. aucune utilité. c'est codé à la joce [:joce]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 25-07-2004 à 02:05:27    

le mieux est de mettre da,s le formulaire un champ "hidden" qui s'appelle "j" et qui sera alors passé en POST. C'ets plus propre :o

Reply

Marsh Posté le 25-07-2004 à 02:05:27   

Reply

Marsh Posté le 25-07-2004 à 13:50:34    

Lex a écrit :

le mieux est de mettre da,s le formulaire un champ "hidden" qui s'appelle "j" et qui sera alors passé en POST. C'ets plus propre :o


C'est clair je vois pas pourquoi vous vous prenez la tête, dans le formulaire tu met un :
 
<input type=hidden name=j value="<? echo $j ?>">
 
et le tour est joué

Reply

Marsh Posté le 25-07-2004 à 14:08:57    

et mettez des quotes, marre du code de porc :o

Reply

Marsh Posté le 25-07-2004 à 23:13:16    

merci bcp à tous, ça marche !!

Reply

Sujets relatifs:

Leave a Replay

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