Как исправить множественную форму с тем же именем?

#php #html #database #foreach

#php #HTML #База данных #foreach

Вопрос:

Я настраиваю новую службу форм для людей, и форма должна получать до 4 входных данных с одинаковым именем. Форма имеет 2 двойных ввода, один для денег, а другой для имени службы.

HTML

 <input name='budget[]' id='' placeholder='Product or Service' type='text' class='form-control'>
<input name='budget_price[]' id='currency' placeholder='Value' type='number' class='form-control'>

<input name='budget[]' id='' placeholder='Product or Service' type='text' class='form-control'>
<input name='budget_price[]' id='currency' placeholder='Value' type='number' class='form-control'>
  

Как я могу выполнить foreach, чтобы впоследствии вставить его в БД?

Комментарии:

1. вы бы зациклили один из массивов и использовали ключи из него для доступа к другим

Ответ №1:

Как указано в комментариях, вам нужно будет зациклить один массив и использовать key для доступа к записи из другого.

Попробуйте:

 <?php
$budget = $_POST['budget'];
$budgetPrice = $_POST['budget_price'];

foreach ($budget as $key => $entry) {
    $serviceName = $entry;
    $currency = $budgetPrice[$key];

    // insert $serviceName and $currency into DB
    // first iteration of loop is the first two inputs
}
  

Или, если вы хотите обойти другой путь (или не можете выбрать, к какому массиву обращаться), вы можете использовать цикл for :

 <?php
$budget = $_POST['budget'];
$budgetPrice = $_POST['budget_price'];

$totalBudget = count($budget);

for ($i = 0; $i < $totalBudget; $i  ) {
    $serviceName = $budget[$i];
    $currency = $budgetPrice[$i];

    // insert $serviceName and $currency into DB
    // first iteration of loop is the first two inputs
}
  

Я предположил, что логика отсутствия разрыва между числами элементов в каждом массиве (например. count($budget) == count($budgetPrice) возвращает true ) обрабатывается где-то заранее.

Согласно вашему последнему комментарию, вам нужно будет проверить, является ли переменная пустой перед вставкой, как таковой:

 <?php
if (!empty($serviceName)) {
    // insert $serviceName
}

if (!empty($currency)) {
    // insert $currency
}
  

Комментарии:

1. да, это работает, но … код добавляет пустые поля.. как я могу вставить только поле с текстом?