У меня есть форма html, в которой используется PHP, а l oop для заполнения меню выбора из базы данных MYSQLi. Код ниже;
$query = "SELECT on_programme, last_name, first_name, middle_name, id FROM constant_client WHERE on_programme=1 ";
$result = mysqli_query($conn, $query);
echo '<p><label for="current_clients">Select Client by name: </label>
<select id="current_clients" name="current_clients">
<option> -- Select Client -- </option>';
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo '<option>'.ucwords($row['last_name']).', '.ucwords($row['first_name']).' '.ucwords($row['middle_name']).'</option>';
}
echo '</select>';
Вышеуказанное работает, форма заполняется необходимыми записями клиентов. Однако затем я хочу использовать эти данные для ссылки на отдельную страницу клиента, которую я пытался использовать с помощью
echo ' <a href="selected_client.php?id='.$row['id'].'" onClick="this.form.submit()">Go!</a>';
, что не сработало, поэтому я попытался установить действие формы на
action="selected_client.php?id='.$row['id'].'"
методом "GET", который также не сработал. Как вы можете видеть в запросе, я также выбираю «id» из таблицы, чтобы позже я мог вызвать эту часть массива, мне просто не нужно или не хочу повторять ее. При использовании метода действия формы переменная $ row ['id'] не устанавливается, а при использовании метода onClick я получаю ошибку «Попытка получить доступ к смещению массива при значении типа null».
Я полагаю что переменная должна быть установлена до того, как может произойти действие формы, но я не могу представить, как я смогу сделать это, не перемещая while l oop или, по крайней мере, не возвращая из него значение. Можно ли вызвать метод и действие формы при отправке, а не в верхней части формы? Будет ли это иметь какое-то значение?
Edit; в соответствии с просьбой, моя попытка использовать скрытый метод для формы
echo '<input type="submit" name="submit" value="Go!">
<input type="hidden" name="id" value="'.$row['id'].'">';
, который по-прежнему возвращает значение типа null error.
Edit # 2 - весь код встроенный.
$query = "SELECT on_programme, last_name, first_name, middle_name, id FROM constant_client WHERE on_programme=1 ";
$result = mysqli_query($conn, $query);
echo '<form action="selected_client.php" method="get">
<fieldset>';
echo '<p><label for="current_clients">Select Client by name: </label>
<select id="current_clients" name="current_clients">
<option> -- Select Client -- </option>';
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
echo '<option>'.ucwords($row['last_name']).', '.ucwords($row['first_name']).' '.ucwords($row['middle_name']).'</option>';
}
echo '</select>';
echo '<input type="submit" name="submit" value="Go!">
<input type="hidden" name="id" value="'.$row['id'].'">';
echo '</fieldset></form>';