У меня возникли проблемы с заполнением выпадающего списка из базы данных, а затем обновление выбранного элемента нажатием кнопки. То, что я пытаюсь сделать, заключается в том, что, когда вы выбираете вариант B в раскрывающемся списке, он обновит эту опцию при нажатии кнопки отправки.
Я могу получить раскрывающийся список, чтобы заполнить все, но при нажатии кнопки он не будет обновляться правильно. Я учусь, когда я иду, любые указатели будут оценены.
<form id='filter' name='filter' method='post' action=''>
<?php
$getIssuedVouchers2 = "SELECT * FROM vouchercodes WHERE status = 'Active'";
$issuedVouchersResult2 = mysql_query($getIssuedVouchers);
?>
<select>
<?php
while ($ivSelectRow = mysql_fetch_array($issuedVouchersResult2)) {
echo "<option name='updatestatus'>" . $ivSelectRow['vouchId'] . "</option>";
}
?>
</select>
<INPUT TYPE="Submit" VALUE="Update the Record" NAME="Submit" />
<?php
if(isset($_POST['Submit'])) { //if the submit button is clicked
$updatingQuery = "UPDATE vouchercodes SET status='Expired' WHERE vouchId = '".$ivSelectRow['vouchId']."' ";
mysql_query($updatingQuery) or die("Cannot update");//update or error
}
?>
</form>
PHP - это серверный язык. Он запускается один раз, когда вы запрашиваете страницу, и после этого она служит для вас. Он не запускается, пока вы не выполните другой запрос страницы, который PHP не может сделать, потому что это действие на стороне клиента.
Вы ищете Javascript и Ajax. Это клиентские языки. Я бы рекомендовал использовать Jquery для этого, он довольно прост в использовании, как только вы его повесите. Это делает его намного менее ужасным, чем стандартный javascript.
Если вы не хотите избежать перезагрузки страницы (submit → обработчик → перезагрузка страницы), я могу приготовить для вас ответ. Может быть.
Обновление из вашего комментария: вы хотите установить атрибут "selected", который делает этот параметр выбранным для загрузки страницы, правильно? например, выберите второй элемент в раскрывающемся списке, а не первый.
Вы должны использовать selected
атрибут в своем теге параметров. Это делает его выбранным. Вот пример, который я использую на одном из моих сайтов.
<select data-wavenum='<?=$i;?>' id="enemy<?=$i;?>" name="enemy<?=$i;?>" class="enemylist">
<option value="assaulttrooper" <?=($enemy == 'assaulttrooper') ? "selected" : ""?>>Assault Trooper</option>
Это печатает что-то вроде:
<option value="assaulttrooper" selected>Assault Trooper</option>
В этом случае, $ враг - это мой элемент, который заставляет меня печатать выбранный вариант, который позволяет выбрать этот параметр.
В вашем случае это то, что было бы. Это отвратительно. Я думаю, что я исправил некоторые из вашего кода, но без бэкэнда БД я не могу проверить.
while ($ivSelectRow = mysql_fetch_array($issuedVouchersResult2)) {
$selected = false;
if (isset($_POST['Submit'])) {
$selected = ($_POST['vouchId'] == $ivSelectRow['vouchId']);
}
echo "<option name=".$ivSelectRow['vouchId']." ".($selected) ? "selected" : "".">" . $ivSelectRow['vouchId'] . "</option>";
}
Имейте в виду, что я могу изменить имя параметра или отправить POST, который приведет к истечению срока действия или удалению всей таблицы, поскольку ваши данные не подвергаются дезинфекции.
if(isset($_POST['Submit']))
/UPDATE
перед запросомSELECT
чтобы обновить его перед выбором, (2) вы хотите использовать$_POST['SelectName']
, AND ( 3) очистить ваш$_POST['SelectName']
при использовании в запросе, чтобы предотвратить внедрение SQL