Est-il possible d'obtenir plusieurs entrées du même nom à publier et d'y accéder depuis PHP? L'idée est la suivante: j'ai un formulaire qui permet la saisie d'un nombre indéfini d'adresses physiques avec d'autres informations. Si je donnais simplement à chacun de ces champs le même nom dans plusieurs entrées et soumettais ces données par courrier, PHP pourrait-il y accéder?
Disons, par exemple, que j'ai cinq entrées sur une page nommée "xyz" et que je veux y accéder en utilisant PHP. Puis-je faire quelque chose comme:
$_POST['xyz'][0]
Si tel est le cas, cela me faciliterait la vie dix fois, car je pourrais envoyer une quantité indéfinie d'informations via un formulaire et les faire traiter par le serveur simplement en parcourant le tableau d'éléments avec le nom "xyz".
address[0][street]
address[0][city]
address[0][zip]
,address[1][street]
address[1][city]
address[1][zip]
... Vous pouvez les lire avec$_POST['address'][0]['city']
, par exemple[]
, par exemple[0]
. Cela rend le HTML plus difficile à générer, mais les données ne sont pas plus difficiles à lire côté PHPDans votre html, vous pouvez passer dans un tableau pour le nom ie
De cette façon, php recevra un tableau d'adresses.
la source
La réponse d'Eric est correcte, mais le problème est que les champs ne sont pas regroupés. Imaginez que vous ayez plusieurs rues et villes qui vont ensemble:
Le résultat serait
Pour les regrouper par adresse, je recommanderais plutôt d'utiliser ce qu'Eric a également mentionné dans la section commentaires:
Le résultat serait
la source
Pour quiconque trouve cela, il convient de noter que vous pouvez définir la valeur de clé dans le nom d'entrée. Grâce à la réponse dans les champs de formulaire POST avec le même attribut de nom, vous pouvez également interagir des chaînes ou des entiers sans guillemets.
Les réponses supposent que cela ne vous dérange pas que la valeur de clé revienne pour PHP, mais vous pouvez définir
name=[yourval]
(string ou int) qui vous permet ensuite de faire référence à un enregistrement existant.la source
Ça peut être:
la source