Я создаю веб-форму, которая потенциально имеет несколько входов с одинаковыми именами элементов формы. Мне нужно получить результаты формы и вывести их по одному.
т. name="supplier[]"
и name="listPrice[]"
могут иметь несколько результатов, и мне нужно, чтобы результаты каждого массива возвращались по порядку:
Поставщик: [0], Прайс-лист: [0]
Поставщик: [1], Прайс-лист: [1]
и т. д.
У меня есть счетчик, который также сохраняется в виде массива для предоставления контекста для каждого «сгруппированного» результата, и цикл foreach в настоящее время обеспечивает правильный вывод для счетчика, но ничего больше. Возможно, мои ограниченные знания PHP / массива или просто слишком долго на это смотрели, заставили меня полностью упустить лучшее решение.
Структура формы выглядит следующим образом:
<h4>Request #` + counter + `</h4>
<input type="hidden" name="codeId[]" class="code-id" value="` + counter + `">
<select class="custom-select supplier-select" name="supplier[]" id="supplier` + counter +`">
<option selected value>Default</option>
<option value="One">Supplier One</option>
<option value="Two">Supplier Two</option>
<option value="Three">Supplier Three</option>
</select>
<input type="text" placeholder="" class="form-control list-price" name="listPrice[]" aria-label="List Price" required>
jQuery захватывает результат и сохраняет его в нескольких массивах, а затем переходит к process.php
:
var formValues = {
codeId : $('.code-id'),
supplier : $('.supplier-select'),
listPrice : $('.list-price')
};
$.each(formValues, function(key, value) {
var data = value.map(function() {
return $(this).val();
}).get();
for (var i = 0; i < data.length; i++) {
formData.append(key + '[]', data[i]);
console.log(key + " " + data);
}
});
Затем моя попытка перебрать каждый из них в PHP, и я должен сохранить как одну строку для передачи в мой почтовый код:
if(is_array($codeId)) {
foreach ($supplier as $key => $value) {
$suppliers .= $value;
}
foreach ($listPrice as $key => $value) {
$listPrices .= $value;
}
foreach ($codeId as $key => $value) {
$string .= "Request #" . $codeId[$key] . "<br />";
$string .= $suppliers . "<br />";
$string .= $listPrices . "<br />";
}
} else {
$string = 'Failed';
}
Отправка формы как эта -
Поставщик: [выбрать] один, цена по прейскуранту: [вход] 3423
Поставщик: [выберите] Два, Список Цена: [вход] 466
Появляется ниже, я знаю, что я близко, но просто не знаю, как лучше это сделать!
Request #1
OneTwo
3423466
Request #2
OneTwo
3423466
Что мне не хватает? Или как это можно сделать лучше? Любая помощь приветствуется.