#php
#php
Вопрос:
Я новичок в PHP, и мне интересно, как я могу достичь следующего результата.
У меня есть HTML-форма для загрузки нескольких файлов (только PDF), в которой указано до 5 файлов. И для каждого файла у него есть тег select для выбора другого пользователя (извлекается из базы данных) и другой тег select для разных месяцев. В идеале, это не сложно, если пользователь выбирает файл один за другим, не пропуская ни одного файла посередине.
<input type=file name=pdf[] />
<select name=user[]>
<option value=a>user a</option>
<option value=b>user b</option>
<option value=c>user c</option>
</select>
<select name=month[]>
<option value=jan> jan </option>
.
.
. so on
</select>
Пример:
File1.pdf --- UserA --- Jan
File2.pdf --- UserB --- Feb
Not choose ---
File4.pdf --- UserA --- Mar
Not choose ---
Когда я нажимаю submit
, данные содержат здесь несколько массивов, один из $_POST
, другой из $_FILES
, итак, как я могу реконструировать и объединить эти массивы в новый массив и удалить те, которые пусты.
Нравится :
Array(
[0]=> Array(user=>userA, month=>Jan, filename=>File1.pdf, type=>application/pdf, size=>1234456)
[1]=> Array(user=>userB, month=>Feb, filename=>File2.pdf, type=>application/pdf, size=>1234456)
[2]=> Array(user=>userA, month=>Mar, filename=>File4.pdf, type=>application/pdf, size=>1234456)
)
Заранее спасибо!
Ответ №1:
Просто дайте вашим полям лучшие имена:
result[0][user]
, result[0][month]
, result[0][pdf]
result[1][user]
, result[1][month]
, result[1][pdf]
Затем просто рекомбинируйте файлы в результат:
$results = $_POST['result'];
foreach ($results as $i => amp;$result) {
if (isset($_FILES['result'][$i]['pdf']) amp;amp; is_array($_FILES['result'][$i]['pdf'])) {
$result = array_merge($result, $_FILES['result'][$i]['pdf']);
}
}
Комментарии:
1. привет, спасибо за быстрый ответ. Я меняюсь как urs, однако у меня возникла проблема со 2-м аргументом, который не является массивом: (
2. @jasper Смотрите обновление. Вероятно, вам придется дополнительно настроить это в соответствии с вашими потребностями, но я надеюсь, вы поняли идею.