#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. да, это работает, но … код добавляет пустые поля.. как я могу вставить только поле с текстом?