связывание полей формы HTML - PullRequest
1 голос
/ 04 апреля 2011

Как связать несколько input элементов в форме, чтобы сервер знал, что два значения связаны?

Предположим, у нас есть отдельные поля для имени и фамилии, для нескольких человек на одной странице:

<input name="firstNames" value="John">
<input name="lastNames" value="Smith">
...
<input name="firstNames" value="Jane">
<input name="lastNames" value="Doe">

При размещении этого сообщения на сервере в итоге появляются следующие данные:

firstNames = ["John", "Jane"]
lastNames = ["Smith", "Doe"]

Таким образом, мы можем определить соответствующие имена по индексу:

person = firstNames[i] + lastNames[i]

Есть ли лучший способ, чем полагаться на заказ? (Это даже надежно?)

1 Ответ

0 голосов
/ 04 апреля 2011

РЕДАКТИРОВАТЬ : Это зависит от языка

При дальнейшем поиске некоторые языки (ASP) позволяют получать данные в виде строки CSV. Поэтому вам нужно добавить дополнительный контекст к вашему вопросу. Тем не менее, метод массива по-прежнему работает на всех языках.

Вы не можете полагаться на заказ в PHP. Если два элемента формы HTML имеют одинаковое имя, последний переопределяет все остальное (по крайней мере, в PHP).

Просто используйте массивы.

<input name="firstNames[0]" value="John">
<input name="lastNames[0]" value="Smith">
...
<input name="firstNames[99]" value="Jane">
<input name="lastNames[99]" value="Doe">

Вы также можете использовать пустые [] пустые скобки.

EDIT

Скопируйте и вставьте код ниже, чтобы увидеть поведение в PHP.

Избиратели: мне бы очень хотелось узнать, где это будет , а не (на другом языке)

<html>
<head>
</head>
<body>
    <form action='test.php' method='post'>
        <input name="firstNames" value="John">
        <input name="lastNames" value="Smith">
        <input name="firstNames" value="Jane">
        <input name="lastNames" value="Doe">
        <input type='submit' value='Go'>
    </form>
</body>

</html>

<?php
if (!empty($_POST)) {
    var_dump($_POST);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...