Formulaire PHP : transfert de tableau
Résolu/Fermé
miklb
Messages postés
48
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
10 mai 2009
-
31 août 2005 à 12:03
bobjr72 - 3 déc. 2013 à 15:43
bobjr72 - 3 déc. 2013 à 15:43
A voir également:
- Formulaire PHP : transfert de tableau
- Easy php - Télécharger - Divers Web & Internet
- Formulaire de réclamation facebook - Guide
- Formulaire de remboursement free pdf ✓ - Forum Vos droits sur internet
- Récupérer compte hotmail sans formulaire ✓ - Forum Hotmail / Outlook.com
- Confirmer le nouvel envoi du formulaire err_cache_miss ✓ - Forum HTML
9 réponses
rdutein
Messages postés
1
Date d'inscription
lundi 23 janvier 2006
Statut
Membre
Dernière intervention
23 janvier 2006
27
23 janv. 2006 à 07:56
23 janv. 2006 à 07:56
Mais lol Strem .. comment poster innutilement et en plus en dévalorisant miklb.
Bref ...
Je vois que tout ca a été posté y a pas mal de temps mais pour tout ceux qui se pose la question:
Comment passer un tableau (Array) via un formulaire et comment le récupérer?
Voici l'astuce la plus simple a mon gout.
Utilisez les fonctions implode et explode
cf. code ci dessous:
Voila, on décompose notre tableau en une chaine de caractères avec la fonction implode (exp: tableau[truc][machin][chose] en tableau="truc|machin|chose"
Et a la reception de cette chaine tableau on la recompose en Array avec explode.
Jsuis peu etre pas trés clair mais il est 8h du mat et j'ai pas dormis.
++
Bref ...
Je vois que tout ca a été posté y a pas mal de temps mais pour tout ceux qui se pose la question:
Comment passer un tableau (Array) via un formulaire et comment le récupérer?
Voici l'astuce la plus simple a mon gout.
Utilisez les fonctions implode et explode
cf. code ci dessous:
# hidden pour envoyer le tableau <input name='tableau' type='hidden' value='",implode("|",$tableau),"'> ----------------------------------------------------------------- # reconstitution du tableau dans tableau_1 $tableau_1=explode("|",$tableau);
Voila, on décompose notre tableau en une chaine de caractères avec la fonction implode (exp: tableau[truc][machin][chose] en tableau="truc|machin|chose"
Et a la reception de cette chaine tableau on la recompose en Array avec explode.
Jsuis peu etre pas trés clair mais il est 8h du mat et j'ai pas dormis.
++
Encore mieux,
J'ai galeré un moment car je voulais transmettre un tableau du type :
$listeTableau[count($listeTableau)]=array('caisse' => $listeCaisses[$j]["nomCaisseRegionale"],
'contrat' => $listeContrats[$i]->getLibelleContrat(),
'fond' => $fondCellule,
'texte' => $texte);
l'astuce est de passer par les variables de session!
Pour le passer
session_start(); //déclaré en début de fichier
$_SESSION['listeTableau'] =$listeTableau;
<form action="pageRecevante.php" method="post" target="_blank" />
<input type="submit" value="Exporter tableau">
</form>
Pour le recevoir
session_start(); //déclaré en début de fichier
if (isset($_SESSION['listeTableau']))
$listeTableau= $_SESSION['listeTableau'];
//utilisation normale ensuite
for ($indice = 0 ; $indice < count($listeTableau) ; $indice++)
{
echo $listeTableau[$indice]["contrat"];
}
Facile ;)
J'ai galeré un moment car je voulais transmettre un tableau du type :
$listeTableau[count($listeTableau)]=array('caisse' => $listeCaisses[$j]["nomCaisseRegionale"],
'contrat' => $listeContrats[$i]->getLibelleContrat(),
'fond' => $fondCellule,
'texte' => $texte);
l'astuce est de passer par les variables de session!
Pour le passer
session_start(); //déclaré en début de fichier
$_SESSION['listeTableau'] =$listeTableau;
<form action="pageRecevante.php" method="post" target="_blank" />
<input type="submit" value="Exporter tableau">
</form>
Pour le recevoir
session_start(); //déclaré en début de fichier
if (isset($_SESSION['listeTableau']))
$listeTableau= $_SESSION['listeTableau'];
//utilisation normale ensuite
for ($indice = 0 ; $indice < count($listeTableau) ; $indice++)
{
echo $listeTableau[$indice]["contrat"];
}
Facile ;)
Bonjour,
Je confirme la syntaxe aussi subtile que puissante pour manipuler les formulaires dynamiques :
Exemple :
print ("<form enctype='application/x-www-form-urlencoded' action='panier.php' method='post'>\n");
print ("<table style='width:90%; margin:0; padding: 0; font-family:\"Microsoft Sans Serif\"; font-size:12px; text-align:left'>\n");
Imaginez une Boucle sur une requête SQL concernant des références articles et des quantités modifiables :
print ("<tr>\n");
print ("<td align='left''>$bart->ref</td>\n");
print ("<td align='right'><input type='text' value='$bart->qte' name='Qte[]' size='1' maxlenght='3'></td>\n");
print ("</tr>\n");
print ("</form></table>\n");
En récupération du Post :
if (isset($_POST['Qte']))
foreach ($_POST['Qte'] as $cle => $value)
print ("Qte no $cle = $value<br>\n");
C'est aussi simple que ça !!
Le PHP est le langage le plus puissant que je connaisse pour la manipulation des tableaux,
profitons de tout le potentiel offert par ce langage !
Merci
Je confirme la syntaxe aussi subtile que puissante pour manipuler les formulaires dynamiques :
Exemple :
print ("<form enctype='application/x-www-form-urlencoded' action='panier.php' method='post'>\n");
print ("<table style='width:90%; margin:0; padding: 0; font-family:\"Microsoft Sans Serif\"; font-size:12px; text-align:left'>\n");
Imaginez une Boucle sur une requête SQL concernant des références articles et des quantités modifiables :
print ("<tr>\n");
print ("<td align='left''>$bart->ref</td>\n");
print ("<td align='right'><input type='text' value='$bart->qte' name='Qte[]' size='1' maxlenght='3'></td>\n");
print ("</tr>\n");
print ("</form></table>\n");
En récupération du Post :
if (isset($_POST['Qte']))
foreach ($_POST['Qte'] as $cle => $value)
print ("Qte no $cle = $value<br>\n");
C'est aussi simple que ça !!
Le PHP est le langage le plus puissant que je connaisse pour la manipulation des tableaux,
profitons de tout le potentiel offert par ce langage !
Merci
je trouve vachement compliqué vos méthode ^^
moi j'utilise la fonction "serialize" ce qui met le array sous une autre forme :
-------------
<input type="hidden" name="aaa"
value="<?=serialize($tableau);?>" />
-------------
print_r(unserialize($_POST['aaa']));
-------------
puis avec unserialize je retransforme en array
et voilà :D
moi j'utilise la fonction "serialize" ce qui met le array sous une autre forme :
-------------
<input type="hidden" name="aaa"
value="<?=serialize($tableau);?>" />
-------------
print_r(unserialize($_POST['aaa']));
-------------
puis avec unserialize je retransforme en array
et voilà :D
salut a tous
juste une petite precision :
il vous faudra mettre value='<?=serialize($tableau);?>' /> cad utiliser des simples quotes et non des doubles sinon les valeurs de votre tableau ne seront pas toutes lues à cause des doubles-quotes que generent le serialize.
de meme quand vous allez vouloir reconstruire le tableau noubliez pas de mettre unserialize(stripslashes($_POST['aaa'])) afin denlever les antislash rajoutes par html.
voila jespere que ca pourra vous servir.
+++
juste une petite precision :
il vous faudra mettre value='<?=serialize($tableau);?>' /> cad utiliser des simples quotes et non des doubles sinon les valeurs de votre tableau ne seront pas toutes lues à cause des doubles-quotes que generent le serialize.
de meme quand vous allez vouloir reconstruire le tableau noubliez pas de mettre unserialize(stripslashes($_POST['aaa'])) afin denlever les antislash rajoutes par html.
voila jespere que ca pourra vous servir.
+++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
On peut faire passer ca comme ca il me semble
<input type="hidden" name="tableau[]" value="$tableau" />
<input type="hidden" name="tableau[]" value="$tableau" />
tontonbruno
Messages postés
6
Date d'inscription
vendredi 18 mars 2005
Statut
Membre
Dernière intervention
4 octobre 2021
1
1 sept. 2006 à 14:42
1 sept. 2006 à 14:42
... euuuhhh sorry ça ne marche pas, car on ne stocke pas en Hidden les valeurs modifiées du formulaire ... mais les précédentes valeurs.
C'est donc valable pour des données NON modifiables.
Par contre : solution ( trouvée sur le net ) :
On récupère les data comme suit :
Formulaire : on boucle sur la ligne suivante :
Voilà. `-)
C'est donc valable pour des données NON modifiables.
Par contre : solution ( trouvée sur le net ) :
On récupère les data comme suit :
for ($i=0;$i<$nbre_poste;$i++) { $t_par [$i] = $_GET['montablo'][$i]; }
Formulaire : on boucle sur la ligne suivante :
"<input type='text' name='montablo[]' value='" . $montablo [$i] . "'>";
Voilà. `-)
Salut à tous,
Petite question sur la fonction serialize. Lorsque je fais passer un tableau d'une page à une autre les doubles quotes se trouvant dans le tableau disparaissent.
Sur ma première page j'utilise cette commande:
et sur ma 2ème page je retrouve ceci:
alors que je devrai retrouver ceci comme sur ma première page:
Les doubles quotes entourant le nom des os disparaissent, est -ce que quelqu'un pourrait m'aider merci :)
Petite question sur la fonction serialize. Lorsque je fais passer un tableau d'une page à une autre les doubles quotes se trouvant dans le tableau disparaissent.
Sur ma première page j'utilise cette commande:
exec("sed -e 's/\$ii=array(0=>\"x\")/\$tab='\"'$serial'\"'/g' /var/www/testlocal.php > $path/local$i.php");
et sur ma 2ème page je retrouve ceci:
$tab='a:3:{i:0;s:6:centos;i:1;s:2:xp;i:2;s:6:debian;}';
alors que je devrai retrouver ceci comme sur ma première page:
$tab='a:3:{i:0;s:6:"centos";i:1;s:2:"xp";i:2;s:6:"debian";}';
Les doubles quotes entourant le nom des os disparaissent, est -ce que quelqu'un pourrait m'aider merci :)
StreM
Messages postés
515
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
28 février 2007
124
31 août 2005 à 15:16
31 août 2005 à 15:16
Sans aucun doute !
$tableau est, bizarrement, un tableau !
Donc différent d'une chaine de caractères. Tu dois récupérer tes valeurs par $tableau[0], $tableau[1], etc...
Si tu sais pas ça, je te conseille d'aller sur http://www.phpdebutant.org. C'est le B.A-BA.
$tableau est, bizarrement, un tableau !
Donc différent d'une chaine de caractères. Tu dois récupérer tes valeurs par $tableau[0], $tableau[1], etc...
Si tu sais pas ça, je te conseille d'aller sur http://www.phpdebutant.org. C'est le B.A-BA.
miklb
Messages postés
48
Date d'inscription
mardi 10 mai 2005
Statut
Membre
Dernière intervention
10 mai 2009
8
1 sept. 2005 à 16:07
1 sept. 2005 à 16:07
Bonjour,
Je pense que le temps perdu à prendre des gants pour la réponse a été plus que zappé ! C’est mon avis !
Cela dit, évidemment, je ne suis pas expert, mais j’ai qql connaissances.
Bref, j’ai repotassé tout ça hier soir et j’ai réussi. En fait mon tableau passe du script 1 au 2 puis doit revenir au 1.
Mais je maintiens (sauf erreur) que je ne peux transférer simplement tout un tableau par une seule ligne <INPUT TYPE=HIDDEN …>
Il faudrait faire une boucle <INPUT TYPE=HIDDEN name =tableau value=$tableau[‘$indice’]…> ?
Bon en tout cas ma solution a été de mettre mon tableau en variable de session et ça a été nickel.
Merci quand même !
Je pense que le temps perdu à prendre des gants pour la réponse a été plus que zappé ! C’est mon avis !
Cela dit, évidemment, je ne suis pas expert, mais j’ai qql connaissances.
Bref, j’ai repotassé tout ça hier soir et j’ai réussi. En fait mon tableau passe du script 1 au 2 puis doit revenir au 1.
Mais je maintiens (sauf erreur) que je ne peux transférer simplement tout un tableau par une seule ligne <INPUT TYPE=HIDDEN …>
Il faudrait faire une boucle <INPUT TYPE=HIDDEN name =tableau value=$tableau[‘$indice’]…> ?
Bon en tout cas ma solution a été de mettre mon tableau en variable de session et ça a été nickel.
Merci quand même !
Bonjour,
Je suis débutant et je n'arrive pas a faire fonctionner mon formulaire newsletter. Pouvez vous me donner un coup de main sur ce problème de premier choix.
Je ne reçois pas l' Email de confirmation
Pouvez-vous adapter <?php……?> avec <form>……</form>
Le lien de ma page: http://www.cijoint.fr/cjlink.php?file=cj200910/cijyw5NMrK.txt
<head>
<?php if($_POST['action'] == "formok")
{
$e_mail = $_POST['email'];
if($e_mail == ""|| $e_mail == "e-mail")
{
$txt = " votre e-mail";
}
else
{
$destinataire= "bwba@hotmail.fr";
$objet = "Demande d'inscription";
$headers = "From: bwba@hotmail.fr \n\r";
$headers.= "Content-Type: text/html; charset=utf-8";
$headers .= "MIME-Version: 1.0 ";
$msg = "Nous vous informons d'une demande d'inscription suivant : ". $e_mail ."";
$msg = nl2br($msg);
mail($destinataire, $objet, $msg, $headers);
$msg2= "
Nous avons bien pris en compte votre demande d'inscription ? la newsletter.
Pour vous d?sinscrire, contactez nous
";
mail($e_mail, $objet, $msg2, $headers);
$txt = "Vous avez un message";
}
}
?>
</head>
<style type="text/css">
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:60%;
margin:50px;
color:#666666;}
.fieldset {
width:300px;
border: 0px solid red;
}
.fieldset label {
text-align:right;
width:70px;
float:left;
padding:0.2em;
margin:0;
margin-top:0.3em;
}
.fieldset .nobr {display:none;} .fieldset .textfield {
margin:3px;
height:20px;
width:200px;
border:solid 1px #8caf10;
background: transparent url("http://") no-repeat;
}
.fieldset .textarea {
margin:3px;
height:165px;
width:200px;
border:solid 0 #fff;
}
.submit {
margin:3px;
height:20px;
border:solid 1px #8caf10;
width:80px;
font:1.1em Verdana, Arial, Helvetica, sans-serif;
color:#000000;
text-transform:uppercase;
background: transparent url("http://") no-repeat;
}
}
</style>
<body>
<form action="" method="post">
<fieldset class="fieldset"><br>
<span class="" style="direction: ltr; text-align: left;"><label
for="email"></label></span> <br class="nobr">
<input name="email" class="textfield" id="email"
type="text"> <span class=""
style="direction: ltr; text-align: left;"><br>
<span class="" style="direction: ltr; text-align: left;">
<br class="nobr">
<br>
<label for="submit"> </label><br
class="nobr">
<input name="submit" class="submit" id="submit"
value="envoyer" type="submit"></span></span></fieldset>
</form>
</body>
Je suis débutant et je n'arrive pas a faire fonctionner mon formulaire newsletter. Pouvez vous me donner un coup de main sur ce problème de premier choix.
Je ne reçois pas l' Email de confirmation
Pouvez-vous adapter <?php……?> avec <form>……</form>
Le lien de ma page: http://www.cijoint.fr/cjlink.php?file=cj200910/cijyw5NMrK.txt
<head>
<?php if($_POST['action'] == "formok")
{
$e_mail = $_POST['email'];
if($e_mail == ""|| $e_mail == "e-mail")
{
$txt = " votre e-mail";
}
else
{
$destinataire= "bwba@hotmail.fr";
$objet = "Demande d'inscription";
$headers = "From: bwba@hotmail.fr \n\r";
$headers.= "Content-Type: text/html; charset=utf-8";
$headers .= "MIME-Version: 1.0 ";
$msg = "Nous vous informons d'une demande d'inscription suivant : ". $e_mail ."";
$msg = nl2br($msg);
mail($destinataire, $objet, $msg, $headers);
$msg2= "
Nous avons bien pris en compte votre demande d'inscription ? la newsletter.
Pour vous d?sinscrire, contactez nous
";
mail($e_mail, $objet, $msg2, $headers);
$txt = "Vous avez un message";
}
}
?>
</head>
<style type="text/css">
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:60%;
margin:50px;
color:#666666;}
.fieldset {
width:300px;
border: 0px solid red;
}
.fieldset label {
text-align:right;
width:70px;
float:left;
padding:0.2em;
margin:0;
margin-top:0.3em;
}
.fieldset .nobr {display:none;} .fieldset .textfield {
margin:3px;
height:20px;
width:200px;
border:solid 1px #8caf10;
background: transparent url("http://") no-repeat;
}
.fieldset .textarea {
margin:3px;
height:165px;
width:200px;
border:solid 0 #fff;
}
.submit {
margin:3px;
height:20px;
border:solid 1px #8caf10;
width:80px;
font:1.1em Verdana, Arial, Helvetica, sans-serif;
color:#000000;
text-transform:uppercase;
background: transparent url("http://") no-repeat;
}
}
</style>
<body>
<form action="" method="post">
<fieldset class="fieldset"><br>
<span class="" style="direction: ltr; text-align: left;"><label
for="email"></label></span> <br class="nobr">
<input name="email" class="textfield" id="email"
type="text"> <span class=""
style="direction: ltr; text-align: left;"><br>
<span class="" style="direction: ltr; text-align: left;">
<br class="nobr">
<br>
<label for="submit"> </label><br
class="nobr">
<input name="submit" class="submit" id="submit"
value="envoyer" type="submit"></span></span></fieldset>
</form>
</body>
5 mai 2006 à 12:04
3 déc. 2013 à 15:43