Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1391 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU]stocker des valeurs en tableau de session ...?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU]stocker des valeurs en tableau de session ...?

n°1184033
miriam
Posté le 25-08-2005 à 11:17:20  profilanswer
 

bonjour,
 
j'ai posé une question hier incompréhensible, depuis j'ai testé pleins de trucs, et j'espere être plus claire aujourd'hui.
je voudrai envoyer des valeurs provenant d'un formulaire et les stocker en session sous forme d'un tableau.
 
dans mon formulaire , je peux selectionner une donnée, ex : nom et rentrer ses parametres, x, y, a, ensuite stocker ces parametres en session grace à une page validation.php. Puis retourner à mon formulaire, choisir une 2eme donnee ex : prenom et ses parametres, et les stocker dans une variable de session.
 
le tableau de donnees que je veux obtenir est sous cette forme :
$_SESSION[nom][x]
$_SESSION[nom][y]
$_SESSION[nom][a]
 
$_SESSION[prenom][x]
$_SESSION[prenom][y]
$_SESSION[prenom][a]
...
 
nom, prenom .. correspondant à mon <select name=champs>
 
voici un bout du formulaire:
 

Code :
  1. $req3 = "SELECT id_champ, n_champ FROM champs";
  2. $res3 = mysql_query($req3) or print($req3);
  3.    print("<select name='champs'>" );
  4.    
  5.     while($champs = mysql_fetch_array($res3)) {
  6.     print("<option value='".$champs['id_champ']."'" );
  7.     print(">".$champs['n_champ']." </option>" );
  8.     }
  9.     print("</select> " );
  10.   
  11. print(" x<input type='text' name='x' size='10'>" );
  12. print("y <input type='text' name='y' size='10'>" );
  13. print("a <input type='text' name='angle' size='10'>" );
  14. ...


 
ma page validation :
 

Code :
  1. $id_champ = $_POST['champs'];
  2. if($id_champ != $id){
  3. $_SESSION[$id_champ]['x'] = $_POST['x'];
  4. $_SESSION[$id_champ]['y'] = $_POST['y'];
  5. $_SESSION[$id_champ]['a'] = $_POST['angle'];
  6. $id= $id_champ;
  7. }
  8. print($_SESSION[$id_champ]['x']." x <br>" );
  9. print($id_champ." id_champ <br>" );
  10. print($id." id <br>" );
  11. ...
  12. header(location:formulaire.php


 
pour l'instant, quand je rentre les donnees une 2eme fois, il remplace l'id_champ que j'ai stocke la 1ere fois. Or, ce que je voudrai c'est qu'il me rajoute le nouveau champ selectionne avec ses coordonnees.
J'ai voulu mettre une variable $id pour qu'il vérifie à chaque fois si le nouveau id_champ est different de l'ancien, mais ça marche pas.
 
???
 
merci


Message édité par miriam le 25-08-2005 à 17:12:39
mood
Publicité
Posté le 25-08-2005 à 11:17:20  profilanswer
 

n°1184075
ddesre
Posté le 25-08-2005 à 11:51:27  profilanswer
 

Eh bien !! a première vue, il faut que tu récupère la longueur de ton tableau $_SESSION avec tableau.length() (il me semble  :heink: ). Et après tu fais tout simplement :
$_SESSION[tableau.length]['x'] = $_POST['x'];  
 
Ca donne
 
$tableau = $_SESSION['resultat'];  
//on repupere l'ancien tableau qui est stocké dans resultat.
$tableau[$tableau.length][nom] = $_POST['x'];  
$tableau[$tableau.length][prenom] = $_POST['x'];  
// on ajoute les valeurs.
$_SESSION['resultat'] = $tableau;
//on écrase le nouveau tableau sur l'ancien
 
tu aura donc une variable de session nommée 'resultat' que tu lira avec un foreach quand tu le souhaitera.


Message édité par ddesre le 25-08-2005 à 11:53:53
n°1184080
sielfried
Posté le 25-08-2005 à 11:54:11  profilanswer
 

miriam a écrit :


pour l'instant, quand je rentre les donnees une 2eme fois, il remplace l'id_champ que j'ai stocke la 1ere fois.


 
Même quand tu sélectionnes un autre "champ" dans la liste donc ? Ton truc a l'air d'être correct dans l'ensemble, je comprends pas bien ce qui cloche ni l'intérêt du test que tu fais.
 
Essaie de nous donner un exemple concret de ce que tu fais et de ce qui ne va pas.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184081
soju
One shot !
Posté le 25-08-2005 à 11:54:52  profilanswer
 

miriam a écrit :

J'ai voulu mettre une variable $id pour qu'il vérifie à chaque fois si le nouveau id_champ est different de l'ancien, mais ça marche pas.


ta variable $id n'est pas conservée entre les pages, donc...

n°1184083
soju
One shot !
Posté le 25-08-2005 à 11:56:38  profilanswer
 

ddesre a écrit :

Eh bien !! a première vue, il faut que tu récupère la longueur de ton tableau $_SESSION avec tableau.length() (il me semble  :heink: ). Et après tu fais tout simplement :
$_SESSION[tableau.length]['x'] = $_POST['x'];


heu un peu à coté de la plaque je crois  ;)  

n°1184132
miriam
Posté le 25-08-2005 à 12:27:39  profilanswer
 

Code :
  1. <?php
  2. session_start();
  3. include "connect.php";
  4. print_r($_SESSION);
  5. $action = 'ajouter';
  6. $etat = "";
  7. $req1 = "SELECT type, id_imp FROM imprimes";
  8. $res1 = mysql_query($req1) or print($req1);
  9. $req2 = "SELECT id_categ, categ FROM categories";
  10. $res2 = mysql_query($req2) or print($req2);
  11. $req3 = "SELECT id_champ, n_champ FROM champs";
  12. $res3 = mysql_query($req3) or print($req3);
  13. ?>
  14. <html>
  15. <head>
  16. <title>----------</title>
  17. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  18. </head>
  19. <body bgcolor="#FFFFFF">
  20. <form method="post" action="essai.php" enctype="multipart/form-data" >
  21.           <?
  22.     print("Imprim&eacute; :<br><select ".$etat." name='imprime'>" );
  23.    
  24.     while($imprimes = mysql_fetch_array($res1)) {
  25.     print("<option value='".$imprimes['id_imp']."'" );
  26.     if($action != 'ajouter')
  27.     {if($imprimes['id_imp'] == $donneesmodele['id_imp']){print("selected" );}
  28.     }
  29.     print(">".$imprimes['type']." </option>" );
  30.     }
  31.     print("</select><br>" );
  32.        
  33.      print("<p> Choisissez le mod&egrave;le :<br>" );
  34.  
  35.   print("<select ".$etat." name='categorie'>" );
  36.   while($categorie=mysql_fetch_array($res2)) {
  37.    print("<option value='".$categorie['id_categ']."'" );
  38.   if($action != 'ajouter')
  39.      {if($categorie['id_categ'] == $donneesmodele['id_categ']) print("selected" );
  40.    }
  41.     print(">".$categorie['categ']." </option>" );
  42.     }
  43.     print("</select> </p>" );
  44.    print("<select ".$etat." name='champs'>" );
  45.    
  46.     while($champs = mysql_fetch_array($res3)) {
  47.     print("<option value='".$champs['id_champ']."'" );
  48.     if($action != 'ajouter')
  49.     {if($champs['id_champ'] == $donneesmodele['id_champ']){print("selected" );}
  50.     }
  51.     print(">".$champs['n_champ']." </option>" );
  52.     }
  53.     print("</select> x " );
  54.   
  55. print("<input type='text' name='x' size='10'>" );
  56. print("y <input type='text' name='y' size='10'>" );
  57. print("a <input type='text' name='angle' size='10'>" );
  58. print("police <input type='text' name='police' size='10'>" );
  59. print("taille <input type='text' name='taille' size='10'>" );
  60. print("couleur <input type='text' name='couleur' size='10'>" );
  61.   ?><br>
  62.     <input type="submit" value="envoyer">
  63. </form>
  64. </body>
  65. </html>


 
la page qui valide :

Code :
  1. <?php
  2. session_start();
  3. include("connect.php" );
  4. $id_champ = $_POST['champs'];
  5. $_SESSION[$id_champ]['x'] = $_POST['x'];
  6. $_SESSION[$id_champ]['y'] = $_POST['y'];
  7. $_SESSION[$id_champ]['angle'] = $_POST['angle'];
  8. $_SESSION['id_categ'] = $_POST['categorie'];
  9. $_SESSION['id_imp'] = $_POST['imprime'];
  10. print_r($_SESSION);
  11. ?>


Message édité par miriam le 25-08-2005 à 16:02:43
n°1184146
sielfried
Posté le 25-08-2005 à 12:34:31  profilanswer
 

Comment tu veux qu'il t'affiche 6 lignes (ou 4, sans le print sur l'id) quand tu balances que 3 (ou 2) print ?
 
Je comprends pas trop, là.
 
Fait un print_r($_SESSION), t'auras sûrement les idées plus claires.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184207
miriam
Posté le 25-08-2005 à 14:01:54  profilanswer
 

Comment tu veux qu'il t'affiche 6 lignes (ou 4, sans le print sur l'id) quand tu balances que 3 (ou 2) print ?
 
oui, je me rendais bien compte qu'il ne pouvait pas, mais en fait je ne sais pas comment faire pour les afficher tous...
 
Fait un print_r($_SESSION), t'auras sûrement les idées plus claires.
 
lors de mon 1er enregistrement, il me met ça
Array ( [1] => Array ( [x] => 10 [y] => 10 [angle] => 10 ) )
 
je retourne a ma page form, je rentre les donnees pour le 2eme, et j'ai ça
 
Array ( [2] => Array ( [x] => 20 [y] => 20 [angle] => 20 ) )
 
est ce que ça veut dire qu'il a remplacé les 1eres données qui etaient en session ?

n°1184214
soju
One shot !
Posté le 25-08-2005 à 14:05:38  profilanswer
 

apparemment ta session ne fonctionne pas,
tu as bien mis un session_start au début de tes scripts ?

n°1184220
sielfried
Posté le 25-08-2005 à 14:08:37  profilanswer
 

Probablement ça, ouai.


Message édité par sielfried le 25-08-2005 à 14:08:48

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
mood
Publicité
Posté le 25-08-2005 à 14:08:37  profilanswer
 

n°1184316
miriam
Posté le 25-08-2005 à 15:30:51  profilanswer
 

ben oui, j'ai mis session_start() dans les 2 fichiers.
quand je fais un print_r($_SESSION) dans le formulaire , il m'affiche array() et l'autre toujours pareil

n°1184328
sielfried
Posté le 25-08-2005 à 15:51:08  profilanswer
 

Fait voir le code complet des fichiers (entre balises [cpp], c'est mieux).


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184350
miriam
Posté le 25-08-2005 à 16:05:10  profilanswer
 

le voilà


Message édité par miriam le 25-08-2005 à 16:08:38
n°1184353
miriam
Posté le 25-08-2005 à 16:07:50  profilanswer
 

Code :
  1. <?php 
  2. session_start();
  3. include "connect.php";
  4. print_r($_SESSION);
  5. $action = 'ajouter';
  6. $etat = "";
  7. $req1 = "SELECT type, id_imp FROM imprimes";
  8. $res1 = mysql_query($req1) or print($req1); 
  9. $req2 = "SELECT id_categ, categ FROM categories";
  10. $res2 = mysql_query($req2) or print($req2);
  11. $req3 = "SELECT id_champ, n_champ FROM champs";
  12. $res3 = mysql_query($req3) or print($req3); 
  13. ?>
  14. <html>
  15. <head>
  16. <title>----------</title>
  17. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  18. </head>
  19. <body bgcolor="#FFFFFF">
  20. <form method="post" action="essai.php" enctype="multipart/form-data" >
  21.           <? 
  22.               print("Imprim&eacute; :<br><select ".$etat." name='imprime'>" );
  23.              
  24.               while($imprimes = mysql_fetch_array($res1)) {
  25.               print("<option value='".$imprimes['id_imp']."'" );
  26.               if($action != 'ajouter')
  27.                  {if($imprimes['id_imp'] == $donneesmodele['id_imp']){print("selected" );}
  28.                     }
  29.               print(">".$imprimes['type']." </option>" );
  30.               }
  31.               print("</select><br>" );
  32.          
  33.        
  34.               print("<p> Choisissez le mod&egrave;le :<br>" );
  35.    
  36.             print("<select ".$etat." name='categorie'>" );
  37.             while($categorie=mysql_fetch_array($res2)) {
  38.              print("<option value='".$categorie['id_categ']."'" );
  39.             if($action != 'ajouter')
  40.                   {if($categorie['id_categ'] == $donneesmodele['id_categ']) print("selected" );
  41.                 }
  42.               print(">".$categorie['categ']." </option>" );
  43.               }
  44.               print("</select> </p>" );
  45.            
  46.              print("<select ".$etat." name='champs'>" );
  47.              
  48.               while($champs = mysql_fetch_array($res3)) {
  49.               print("<option value='".$champs['id_champ']."'" );
  50.               if($action != 'ajouter')
  51.                  {if($champs['id_champ'] == $donneesmodele['id_champ']){print("selected" );}
  52.                     }
  53.               print(">".$champs['n_champ']." </option>" );
  54.               }
  55.               print("</select> x " );
  56.          
  57. print("<input type='text' name='x' size='10'>" );
  58. print("y <input type='text' name='y' size='10'>" );
  59. print("a <input type='text' name='angle' size='10'>" );
  60. print("police <input type='text' name='police' size='10'>" );
  61. print("taille <input type='text' name='taille' size='10'>" );
  62. print("couleur <input type='text' name='couleur' size='10'>" );
  63.          ?><br>
  64.     <input type="submit" value="envoyer">
  65. </form>
  66. </body>
  67. </html>


 
la page qui valide :  

Code :
  1. <?php 
  2. session_start();
  3. include("connect.php" );
  4. $id_champ = $_POST['champs'];
  5. $_SESSION[$id_champ]['x'] = $_POST['x'];
  6. $_SESSION[$id_champ]['y'] = $_POST['y'];
  7. $_SESSION[$id_champ]['angle'] = $_POST['angle'];
  8. $_SESSION['id_categ'] = $_POST['categorie'];
  9. $_SESSION['id_imp'] = $_POST['imprime'];
  10. print_r($_SESSION);
  11. ?>


n°1184391
sielfried
Posté le 25-08-2005 à 16:28:07  profilanswer
 

J'ai testé rapidos chez moi avec des données bidon et ça fonctionne correctement. [:figti]


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184404
soju
One shot !
Posté le 25-08-2005 à 16:36:53  profilanswer
 

au début de tes scripts ajoute

Code :
  1. error_reporting(E_ALL);


il y a sûrement des erreurs/warnings qui s'afficheront
 

n°1184422
miriam
Posté le 25-08-2005 à 16:48:12  profilanswer
 

j'ai ajoute error_reporting(E_ALL); apres ma session_start, ça me donne rien de plus.
 
en fait j'ai refait un essai simple sans avoir à faire des requette dans ma base et ça fonctionne. C'est à partir du moment ou je fais la partie :

Code :
  1. while($champs = mysql_fetch_array($res3)) { 
  2.               print("<option value='".$champs['id_champ']."'" ); 
  3.               if($action != 'ajouter') 
  4.                  {if($champs['id_champ'] == $donneesmodele['id_champ']){print("selected" );} 
  5.                     } 
  6.               print(">".$champs['n_champ']." </option>" ); 
  7.               } 
  8.               print("</select> x " );


 
qu'il déconne  :( alors je continue à tester. merci de votre aide en tout cas.

n°1184429
sielfried
Posté le 25-08-2005 à 16:58:19  profilanswer
 

Je pense avoir compris. Les noms de tes variables de session correspondent à $id_champ qui lui-même correspond à des valeurs numériques (1, 2, 3). Donc ça implique des sessions qui s'appellent $_SESSION['1'][...], $_SESSION['2'][...] et qui sont incorrectes, car le nom d'une variable ne peut commencer par un chiffre.
 
Essaie de te débrouiller pour donner des noms de variable corrects aux attributs "value" de tes <option> (du <select> sur le champ), du genre 'champ1', 'champ2', etc.


Message édité par sielfried le 25-08-2005 à 16:59:45

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184432
miriam
Posté le 25-08-2005 à 17:01:05  profilanswer
 

j'ai trouvé, en fait quand je remplace le id_champ, par le n_champ, donc une chaine de caractere, ça marche
 
print("<option value='".$champs['id_champ']."'" );  
 
--> print("<option value='".$champs['n_champ']."'" );  
 
mais je comprends pas vraiment pourquoi  :??:

n°1184435
sielfried
Posté le 25-08-2005 à 17:04:00  profilanswer
 

Ben c'est ce que je viens d'expliquer. :)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1184444
miriam
Posté le 25-08-2005 à 17:11:34  profilanswer
 

ah, je savais pas tout ça, mais je suis contente que ça marche maintenant ... ouf, ça commençait à me :heink: :pt1cable:  
 
merci beaucoup !

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU]stocker des valeurs en tableau de session ...?

 

Sujets relatifs
[Résolu] Erreur detection media[resolu]Récupérer le code ascii
Erreurs chez Free [Résolu]Aligner verticalement un tableau dans un tableau en HTML....
[RESOLU]XML et flash -> je trouve pas l'erreur[resolu]récupération de données
[résolu] spinbutton qui fait n'importe quoi ....[VBS-> Résolu] Sélectionner une imprimante sous Excel
Hauteur de tableau centréVariable dans une variable... [Résolu]
Plus de sujets relatifs à : [RESOLU]stocker des valeurs en tableau de session ...?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR