Comment obtenir le formulaire de saisie de tableau en tableau PHP
J'ai un formulaire comme celui-ci, qui est affiché à contacts.php et l'utilisateur peut ajouter dynamiquement des plus avec jquery.
<input type="text" name="name[]" />
<input type="text" name="email[]" />
<input type="text" name="name[]" />
<input type="text" name="email[]" />
<input type="text" name="name[]" />
<input type="text" name="email[]" />
Si je l'echo en php avec le code ci-dessous
$name = $_POST['name'];
$email = $_POST['account'];
foreach( $name as $v ) {
print $v;
}
foreach( $email as $v ) {
print $v;
}
Je vais obtenir quelque chose comme ceci:
name1name2name3email1email2email3
comment puis-je obtenir ces tableaux dans quelque chose comme le code ci-dessous
function show_Names($n, $m)
{
return("The name is $n and email is $m, thank you");
}
$a = array("name1", "name2", "name3");
$b = array("email1", "email2", "email3");
$c = array_map("show_Names", $a, $b);
print_r($c);
donc ma sortie ressemble à ceci:
Le nom est nom1 et le courrier électronique est email1, je vous remercie
Le nom est nom2 et le courrier électronique est email2, je vous remercie
Le nom est nom3 et le courrier électronique est email3, je vous remercie
merci pour toute aide ou des conseils
Vous devez vous connecter pour publier un commentaire.
Ils sont déjà dans des matrices:
$name
est un tableau, comme c'est$email
Donc tout ce que vous devez faire est d'ajouter un peu de traitement pour attaquer les deux tableaux:
Pour gérer plus d'intrants, de simplement étendre le modèle:
$emails[1]
correspond à l'utilisateur nommé$name[1]
? Je pense que j'ai couru dans des problèmes avec ce, dans le passé, mais j'ai peut-être tort. Merciforeach
utilise un tableau de valeurs, de faire$name = $_POST['name'];
laisserait comme une chaîne de caractères, donc le système va briser dès que vous essayez de la traverser comme un tableau plutôt qu'une chaîne, vouliez-vous dire$name[] = $_POST['name'];
au lieu de cela? (Désolé, il est tardive, juste plutôt trompeur, quand j'ai vu cela...)$_POST['name']
est une chaîne de caractères. Dans le cas que votre page a plusieurs<input>
éléments ayant la même valeur pour le nom, qui n'est pas le cas. Lorsque cela se produit, PHP va charger le$_POST
variable comme un tableau. Il est vrai que ce code peut ne pas fonctionner comme souhaité dans le cas où il n'est qu'un élément d'entrée. Si vous êtes en train de faire quelque chose avec un générées dynamiquement forme que peut avoir un nombre quelconque d'entrées, vous pourriez avoir à ajouter de traitement pour les cas d'avoir zéro ou un, entrées, contrairement à beaucoup, mais qui est en dehors de la portée de cette question/réponse.E. g. en nommant les champs comme
(ce qui est également possible lors de l'ajout d'éléments via javascript)
Le correspondant script php qui pourrait ressembler à
Je sais que c'est un peu tard maintenant, mais vous pourriez faire quelque chose comme ceci:
Le test avec:
Moi ce produit:
Que si vous avez de la gamme de balises html fieldsets?
J'ai ajouté un champ caché pour compter le nombre de balises html fieldsets.
L'utilisateur peut ajouter ou supprimer des champs et de l'enregistrer.
Je suis tombé sur ce problème. 3 entrées: terrain de[], champ2[], champ3[]
Vous pouvez accéder à chacun de ces champs de manière dynamique. Car chaque champ sera un tableau, les champs seront tous partagent la même clé du tableau. Par exemple, compte tenu des données d'entrée:
Bob et son e-mail et le sexe vont partager la même clé. Avec cela à l'esprit, vous pouvez accéder aux données dans une boucle for comme ceci:
Ce écailles ainsi. Tout ce que vous devez faire est d'ajouter à votre tableau de vars chaque fois que vous avez besoin de nouveaux champs à ajouter.
Cependant, VolkerK du est la meilleure solution pour éviter de manquer de couple entre l'e-mail et nom d'utilisateur. Donc, vous avez à générer un code HTML avec PHP comme ceci:
Variation $total_data pour répondre à vos besoins. Pour le montrer, juste comme ça:
En supposant que les données ont été envoyées à l'aide de la méthode POST.
Néanmoins, vous pouvez utiliser le code ci-dessous que,
C'est facile:
À l'aide de cette méthode devrait fonctionner: