У меня есть форма записи часов работы над набором проектов. форма использует массив для идентификатора проекта, часов и поля примечаний, при этом строки форм представляют собой цикл по числу проектов. форма передает данные скрипту PHP для обработки. PHP-скрипт не видит значения в массиве ... это просто дает мне «Массив» в качестве вывода.Передача данных массива из html-формы в переменные массива php
Документация и другие примеры заставляют меня задаться вопросом, нужно ли мне сериализовать или неэтериализовать или что-то еще, чтобы заставить вещи работать правильно, но несколько попыток были безуспешными.
В форме:
<form action="input-hours-do.php" method="post">
<table>
<tr>
<td>Project</td>
<td>Hours</td>
<td>Notes</td>
</tr>
<?
// assign project IDs
$rhprID[0] = "ABT";
$rhprID[1] = "GHUR";
$rhprID[2] = "TRE";
$rhprID[3] = "WERT";
// loop on the projects
for ($i = 0; $i < 3; $i++)
{
?>
<!-- project id is not editable -->
<input type="hidden" name="rhprID[]" value="<? echo $rhprID[$i]; ?>" />
<tr>
<td>
<?php echo $rhprID[$i] ?>
</td>
<td>
<input type="text" name="rhHours[]" size="6" />
</td>
<td>
<input type="text" name="rhNotes[]" size="40" />
</td>
</tr>
<?
} // end of i for loop
?>
</table>
<input type="submit" name="tUpdate" size="8" value="Submit Hours" />
</form>
в сценарии действий (входные часа-do.php):
$rhprID = $_POST['rhprID'];
$rhHours = $_POST['rhHours'];
$rhNotes = $_POST['rhNotes'];
echo "count of prid is " . count($rhprID) . "</br>";
for ($k = 0; $k < count($rhprID); $k++)
{
echo " prID is: " . $rhprID[$k] . " hours are: " . $rhHours[$k] . " notes are: " . $rhNotes[$k];
}
?>
Выход из этого является:
Количество rhprid составляет 1
prID: Часы: примечания: A
Итак:
- это, кажется, думает массив только один элемент длиной
- это не добираясь до значений в массиве («A» является первой буквой «Массив», поэтому он просто использует строковую переменную, а не базовые значения данных).
Что мне нужно изменить, чтобы перейти к базовым значениям данных?
Код, который вы вставили здесь, работает (за исключением добавления 1 в цикл или лучшего использования 'f oreach'). Он отображает 3 элемента на выходе. Убедитесь, что у вас нет синтаксической ошибки где-то в другом месте. –
спасибо за ваш ввод .... У меня был какой-то предыдущий код, который применял обрезку к POST данных. Когда я взял этот код, все работало, как ожидалось. – steve