#php #html #mysql
Вопрос:
У меня есть текстовые поля и групповые av-переключатели, подобные этому
<div class="col">
<input type="text" name="deliveryCompany[]" class="form-control">
</div>
<div class="col">
<input type="text" name="deliveryContactPerson[]" class="form-control">
</div>
<!-- Delivery method -->
<fieldset class="form-group border p-2">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="deliveryMethod[]" value="Bid">
<label class="form-check-label" for="deliveryMethod1">Bid</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="deliveryMethod[]" value="Mail">
<label class="form-check-label" for="deliveryMethod2">Mail</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="deliveryMethod[]" value="retrieved">
<label class="form-check-label" for="deliveryMethod3">retrieved</label>
</div>
Затем у меня есть кнопка, связанная с функцией jQuery, которая дублирует приведенный выше HTML-код, чтобы пользователь мог добавить больше адресов.
Я сохраняю его в базе данных вот так (у меня есть полосатый код)
public function addDeliveryAddress()
{
for($i = 0; $i < count($_POST["deliveryContactPerson"]); $i ) {
'INSERT INTO address.....;
$deliveryParamValue = array(
"Delivery",
$_POST["deliveryContactPerson"][$i],
$_POST["deliveryCompany"][$i],
$_POST["deliveryMethod"][$i],
);
}
}
У меня есть один адрес, все в порядке.
Если я добавлю два или более адресов, я получу контактное лицо и компанию в базе данных, но ничего не получу от переключателя.
Должен ли я разместить несколько переключателей с одним и тем же name
и получить больше, чем первый?
Думаю, мне нужно опубликовать deliveryMethod[]
сообщение по-другому, но как?
Комментарии:
1. Вы отладили и проверили, что
$_POST["deliveryMethod"]
на самом деле содержится при отправке формы?2. Есть ли что-то еще в вашей форме? Потому что, если вы просто скопируете точный код из вопроса, страница будет рассматривать все это как один большой переключатель (поскольку все они имеют одно и то же имя).
3. Я публикую имя в виде массива, таким образом, у меня может быть то же имя, но я также публикую остальное в виде массива, и я думаю, что в этом проблема.
4. Частично. Но, как говорит El_vanja, если вы не дадите своим копиям переключателей новые имена, вы даже не сможете выбрать отдельные параметры для каждого набора. Демо: jsfiddle.net/054m62z9 — попробуйте выбрать значение в первом наборе кнопок, а затем выберите значение во втором наборе, и посмотрите, что произойдет с вашим первым выбором. Это происходит потому, что все они имеют одно и то же имя. Поэтому проблема возникает еще до того, как вы ее подадите. Если, конечно, ваш код JavaScript не делает что-то, чтобы изменить эти имена, когда он копирует HTML?