passage en argument d'un tableau en POST

passage en argument d'un tableau en POST - PHP - Programmation

Marsh Posté le 17-05-2005 à 14:23:23    

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

Reply

Marsh Posté le 17-05-2005 à 14:23:23   

Reply

Marsh Posté le 17-05-2005 à 16:36:55    

une variable de session ne serait il pas plus simple ?

Reply

Marsh Posté le 17-05-2005 à 16:38:21    

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

Reply

Marsh Posté le 19-05-2005 à 10:57:20    

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
Reply

Marsh Posté le 19-05-2005 à 13:06:33    

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)...

Reply

Marsh Posté le 19-05-2005 à 13:14:11    

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>


Reply

Marsh Posté le 19-05-2005 à 14:40:40    

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

Reply

Marsh Posté le 19-05-2005 à 15:27:52    

Ce serait pas plutôt:
 

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


 
et
 

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


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

Reply

Marsh Posté le 19-05-2005 à 15:33:11    

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

Reply

Marsh Posté le 19-05-2005 à 16:29:56    

benamoubeach a écrit :

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


 
pareil pour moi

Reply

Marsh Posté le 19-05-2005 à 16:29:56   

Reply

Marsh Posté le 19-05-2005 à 18:30:34    

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

Reply

Marsh Posté le 20-05-2005 à 12:08:38    

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
Reply

Marsh Posté le 23-05-2005 à 12:34:22    

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
Reply

Marsh Posté le 23-05-2005 à 12:35:54    

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...

Reply

Marsh Posté le 23-05-2005 à 17:48:23    

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
Reply

Marsh Posté le 14-06-2005 à 10:14:02    

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);
 
 
 

Reply

Marsh Posté le 15-06-2005 à 09:00:26    

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

Reply

Marsh Posté le 20-03-2006 à 16:51:30    

a l'aide jy arrive pas !

Reply

Sujets relatifs:

Leave a Replay

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