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

  FORUM HardWare.fr
  Programmation
  PHP

  passage en argument d'un tableau en POST

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

passage en argument d'un tableau en POST

n°1086654
faboubou
Posté le 17-05-2005 à 14:23:23  profilanswer
 

Bonjour,
 
Voilà je vous explique ma situation. Je suis en train de creer un script en utilisant un tableau. Pour des questions de surcharge mysql, je suis obligé de faire un traitement avec un element du tableau, puis recharger le script avec du javascript, faire le meme traitement avec l'element suivant etc... jusqu'au dernier element du tableau.
En fait ma question est de savoir comment passer ce tableau en argument en post avec un document.href javascript??? Car en get c'est du style document.href("blabla.php?arg1=val&...." ); mais en PoST c'est comment?  
Merci pour votre aide et j'espere avoir et eassez clair ce qui m'etonnerai lol

mood
Publicité
Posté le 17-05-2005 à 14:23:23  profilanswer
 

n°1086856
tomtom41
It's not a bug, it's a feature
Posté le 17-05-2005 à 16:36:55  profilanswer
 

une variable de session ne serait il pas plus simple ?

n°1086858
denzz
huhuuuuu ! (désolé )
Posté le 17-05-2005 à 16:38:21  profilanswer
 

pour passer en post des variables que tu calcules, il faut les mettre dans des champ de formulaire cachés ...

n°1088873
Nymerion
Posté le 19-05-2005 à 10:57:20  profilanswer
 

Pour moi ca marche en utilisant le classique :
$tableau=$_POST['nomdutableaudelapagedavant']
 
Mais

Citation :

les mettre dans des champs de formulaire cachés


 
Oui je le pense aussi mais je ne parviens pas à passer la valeur du tableau!!!
Car c'est un champ de ce type:

Code :
  1. <input type="hidden" name="tableau" value="montableau">


 
Or si c'est un tableau, il faut peut-être mettre des crochets quelque part??? Du style :

Code :
  1. <input type="hidden" name="tableau" value="montableau[]">


 
Bref ca marche pour les 2 premières pages (celle qui contient le tableau et celle d'après) mais pas plus :fou:  
 
Si quelqu'un à une idée...


Message édité par Nymerion le 19-05-2005 à 11:03:30
n°1089041
rufo
Pas me confondre avec Lycos!
Posté le 19-05-2005 à 13:06:33  profilanswer
 

si les valeurs de ton tableau sont des nombres ou des valeurs qui s'y prêtent, tu peux essayer de les concaténer dans une chaîne de caractère qui sera stockée dans une input de type hidden. Pour séparer les valeurs, tu utilise un (ou plusieurs) caractère servant de séparateur (le # par ex)...

n°1089050
robbyone
Non pas !
Posté le 19-05-2005 à 13:14:11  profilanswer
 

Tu peux utiliser un input par valeur de ton tableau
ou un select multiple avec toutes les options définies seleted par défaut.

Code :
  1. <select multiple='multiple' name='tableau[]'>
  2.     <option selected value='test'>test</option>
  3.     </select>


n°1089185
benamoubea​ch
tivuplai
Posté le 19-05-2005 à 14:40:40  profilanswer
 

sinon tu peux le mettre dans un champ hidden avec comme value
 
serialize($_POST['tntableau'])
et sur la page de traitement
 
unserialize()

n°1089277
Nymerion
Posté le 19-05-2005 à 15:27:52  profilanswer
 

Ce serait pas plutôt:
 

Code :
  1. <input type="hidden" name="tableau" value=serialize(tableau[])>


 
et
 

Code :
  1. unserialize($_POST['tableau'])


 
 :??:  :??:  :??:

n°1089288
benamoubea​ch
tivuplai
Posté le 19-05-2005 à 15:33:11  profilanswer
 

bah en fait j'avais compris que le 1er tableau venait aussi d'un formulaire lol

n°1089476
rufo
Pas me confondre avec Lycos!
Posté le 19-05-2005 à 16:29:56  profilanswer
 

benamoubeach a écrit :

bah en fait j'avais compris que le 1er tableau venait aussi d'un formulaire lol


 
pareil pour moi

mood
Publicité
Posté le 19-05-2005 à 16:29:56  profilanswer
 

n°1089745
Nymerion
Posté le 19-05-2005 à 18:30:34  profilanswer
 

ah bon? ben je me suis peut-être trompé :spamafote:
 
Je vais revoir mon code... (car forcément ça ne marche toujours pas  :pt1cable: )

n°1090536
Nymerion
Posté le 20-05-2005 à 12:08:38  profilanswer
 

Bonjour à tous, :hello:  
 
Je reviens sur mon problème de tableau (j'avoue que j'empiète un peu sur le post originel...)
Ma première page contient un tableau rempli dynamiquement : $choix[numero];
 
La page suivante le récupère:

Code :
  1. $tableau=$_POST['choix'];

pour effectuer un traitement: lecture et affichage de toutes les valeurs
Puis je le 'serialize':

Code :
  1. $tableau=serialize($_POST['choix']);


Troisième page je le récupère+deserialisation:

Code :
  1. $tableau[]=unserialize($_POST['tableau']);


 
Là il reconnait que c'est bien un Array. Mais lorsque je le passe en paramètre à une fonction qui doit traiter tous les elements: ben problème:

Code :
  1. echo"<br>Voici les premiers elements du tableau: ".$tableau[0].$tableau[1].$tableau[2];

Ca me renvoie:

Code :
  1. Voici les premiers elements du tableau: Array
  2. Notice: Undefined offset: 1 in d:\..\da_form_4_insert.php on line 63
  3. Notice: Undefined offset: 2 in d:\..\da_form_4_insert.php on line 63


Mais moi je veux les elements du tableau :'( :cry:
 
Si quelqu'un a un élément de réponse...Merci d'avance et bonne journée sous le soleil :sol:


Message édité par Nymerion le 20-05-2005 à 12:09:45
n°1093252
benamoubea​ch
tivuplai
Posté le 23-05-2005 à 12:34:22  profilanswer
 

regarde ton erreur  

Code :
  1. * Voici les premiers elements du tableau: Array
  2.     * Notice: Undefined offset: 1 in d:\..\da_form_4_insert.php on line 63
  3.     * Notice: Undefined offset: 2 in d:\..\da_form_4_insert.php on line 63


 
Le tableau que tu as unserialize tu l'as mis dans la premiere case du tableau $tableau avec $tableau[]
 
 
 
 
 
tu dois faire $tableau = unserialize($_POST['tableau']);
à la place de $tableau[] = unserialize($_POST['tableau']);
 
cependant, je te conseille :
$tableau = urlencode(serialize($_POST['choix']));
 
puis $tableau = unserialize(urldecode($_POST['tableau']));
 
Pourquoi me diras-tu ?
 
regarde
 
disons que tu fais :
 

Code :
  1. <input type="hidden" name="tableau" value="<?php echo serialize($_POST['choix']); ?>" />


 
tu auras des erreurs car ton tableau serialisé contiendras des guillemets , ce qui n'attribuera pas la bonne valeur a $_POST['tableau']
 
urlencode va empecher cela ...


Message édité par benamoubeach le 23-05-2005 à 12:39:24
n°1093256
rufo
Pas me confondre avec Lycos!
Posté le 23-05-2005 à 12:35:54  profilanswer
 

ben, comment tu le passes ton tableau sérializé d'une page php à une autre??? Je te rappelle qu'entre 2 pages php, toutes les variables PHP sont détruitent. Donc, quand t'as t'on tableau de valeurs, tu le sérializes et tu le stockes soit dans une variable session (mais dans ce cas, je vois pas l'intérêt d'avoir sérializé), soit tu le stockes dans un champ caché de ton formulaire qui sera posté à la page php suivante...

n°1093833
Nymerion
Posté le 23-05-2005 à 17:48:23  profilanswer
 

Merci pour tes explications benamoubeach! Je vais essayer ca tout de suite  :jap:  
 
Rufo: Personnellement je passe le tableau sérialisé grace à un champ input hidden:

Code :
  1. <input type="hidden" name="tableau" value='.$tableau.'>';

que je recupère avec la variable $_POST.
 
EDIT: quelques minutes plus tard: ca marche !!! :love:  :pt1cable:  :sol:  
 
Merci ! :hello:


Message édité par Nymerion le 23-05-2005 à 18:03:13
n°1119160
zenabN
Posté le 14-06-2005 à 10:14:02  profilanswer
 

Bonjour
J ai la meme erreur :  
code : Notice: Undefined offset: 1 in c:\program files\easyphp1-7\www\tdiwer\upload_file2.php on line 64
 
Notice: Undefined offset: 2 in c:\program files\easyphp1-7\www\tdiwer\upload_file2.php on line 64 ....
 
Mais je ne renvoi pas mon tableau par POST, je lis un fichiers csv et j insere les champs dans ma base.
 
Voici un bout de code, si vous voulez bien m eclaircir....
 
$fd = fopen ("Fichiers/{$f1_name}", "r" );
  $i=0;
  $line = fgets($fd,4096);
  while (!feof ($fd))  
  {
   $line = fgets($fd,4096);
   $tab_customer = split(";",$line);  
   
   //insertion dans la table
   $sql = " insert into users (code_user,type_user,code_pays,nom_user,email_user,password_user,";
   $sql .= " date_creation,heure_creation,date_acces,heure_acces,code_donneur_client) ";
   $sql .= " values ( ";
   
   for ($i=0; $i<6; $i++)
   {
    $sql .= " '" . addslashes($tab_customer[$i]) . "', ";
   }
   for ($i=6; $i<7; $i++)
   {
    $sql .= " '" . date("Y-m-d" ). "', ";
   }
   for ($i=7; $i<8; $i++)
   {
    $sql .= " '" . date("H:i:s" ). "', ";
   }
   for ($i=8; $i<9; $i++)
   {
    $sql .= " '" . date("Y-m-d" ). "', ";
   }
   for ($i=9; $i<10; $i++)
   {
    $sql .= " '" . date("H:i:s" ). "', ";
   }
   $sql .= " '" . addslashes($tab_customer[11]) . "')";
   //alert_message($tab_customer[2]);
   mysql_query( $sql ) or die ("Requête invalide" );
   $i++;
   }// fin while
 fclose ($fd);
 
 
 

n°1120293
rufo
Pas me confondre avec Lycos!
Posté le 15-06-2005 à 09:00:26  profilanswer
 

pourquoi y'a un i++ à la fin du while alors que le i est utilisé et incrémenté dans les boucles for???

n°1328908
Profil sup​primé
Posté le 20-03-2006 à 16:51:30  answer
 

a l'aide jy arrive pas !


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

  passage en argument d'un tableau en POST

 

Sujets relatifs
Bordure tableau bug sous Firefox mais pas sous IE.Reinitialisation d'un tableau dynamique
Passage de pointeur de structurepassage php4 à php5... les session ?_?
[C] charger un fichier texte en tableau[ C++ ] Passer par adresse un vecteur à 2 dimensions + malloc
[C] Décaler un début de tableau - défendable ou pas ?Representation xml d'un tableau a double entree
Tableau constant VB6Proc*C et taille maximum d'un tableau
Plus de sujets relatifs à : passage en argument d'un tableau en POST


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