passage en argument d'un tableau en POST - PHP - Programmation
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 ...
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 :
|
Or si c'est un tableau, il faut peut-être mettre des crochets quelque part??? Du style :
Code :
|
Bref ca marche pour les 2 premières pages (celle qui contient le tableau et celle d'après) mais pas plus
Si quelqu'un à une idée...
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)...
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 :
|
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()
Marsh Posté le 19-05-2005 à 15:27:52
Ce serait pas plutôt:
Code :
|
et
Code :
|
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
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
Marsh Posté le 19-05-2005 à 18:30:34
ah bon? ben je me suis peut-être trompé
Je vais revoir mon code... (car forcément ça ne marche toujours pas )
Marsh Posté le 20-05-2005 à 12:08:38
Bonjour à tous,
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 :
|
pour effectuer un traitement: lecture et affichage de toutes les valeurs
Puis je le 'serialize':
Code :
|
Troisième page je le récupère+deserialisation:
Code :
|
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 :
|
Ca me renvoie:
Code :
|
Mais moi je veux les elements du tableau
Si quelqu'un a un élément de réponse...Merci d'avance et bonne journée sous le soleil
Marsh Posté le 23-05-2005 à 12:34:22
regarde ton erreur
Code :
|
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 :
|
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 ...
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...
Marsh Posté le 23-05-2005 à 17:48:23
Merci pour tes explications benamoubeach! Je vais essayer ca tout de suite
Rufo: Personnellement je passe le tableau sérialisé grace à un champ input hidden:
Code :
|
que je recupère avec la variable $_POST.
EDIT: quelques minutes plus tard: ca marche !!!
Merci !
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);
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???
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