PHP从数据库填充下拉列表,然后单击按钮更新
我无法从数据库填充下拉列表,然后单击按钮更新所选项目。我想要的是,当你在下拉列表中选择选项B时,它会在点击提交按钮时更新该选项 我可以让下拉框很好地填充,但当单击按钮时,它不会正确更新。我一边学习,任何指点都将不胜感激PHP从数据库填充下拉列表,然后单击按钮更新,php,sql,Php,Sql,我无法从数据库填充下拉列表,然后单击按钮更新所选项目。我想要的是,当你在下拉列表中选择选项B时,它会在点击提交按钮时更新该选项 我可以让下拉框很好地填充,但当单击按钮时,它不会正确更新。我一边学习,任何指点都将不胜感激 <form id='filter' name='filter' method='post' action=''> <?php $getIssuedVouchers2 = "SELECT * FR
<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。它们是客户端语言。我建议你使用它,一旦你掌握了窍门,它就很容易使用了。与标准javascript相比,它的糟糕程度要小得多
如果您不想避免页面重新加载(提交->处理程序->页面重新加载),我可以为您准备一个答案。也许吧
根据您的评论更新:
您想设置“selected”属性,使该选项在页面加载时处于选中状态,对吗?e、 g.选择下拉列表中的第二项,而不是第一项
您需要在选项标签上使用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>
突击队员
在本例中,$FOUNY是我的项目,它使我打印出所选内容,从而使该选项被选中
在你的情况下,就是这样。有点难看。我想我修复了你的一些代码,但是没有DB后端我无法测试
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>";
}
while($ivSelectRow=mysql\u fetch\u数组($issuedVouchersResult2)){
$selected=false;
如果(isset($_POST['Submit'])){
$selected=($_POST['vouchId']=$ivSelectRow['vouchId']);
}
回显“$ivSelectRow['vouchId']”;
}
请注意,我可能会更改选项名称或发送一篇帖子,这将导致您的值过期,或者由于您的数据未经过消毒而删除整个表。(1)在您的选择查询之前,将if(isset($\u POST['Submit'])
/更新
查询放在选择之前,以便在选择之前进行更新,(2)您希望使用$\u POST['SelectName']
,以及(3)在查询中使用时清理$\u POST['SelectName']
以防止sql注入您应该真正使用PDO,而不是将字符串连接到sql。我可以发送一个定制的POST请求,数据vouchId设置为105';下表voucherscodes;(或类似)并且您的整个表将立即被删除。请注意-它应该是..
而不是
。因此,如果我将更新查询中的“$ivSelectRow['vouchId']”部分更改为数据库中的一个值并单击按钮,它将很好地更新该值。我想让它做的是在下拉菜单中选择vouchId并更新该id。用我如何选择选择的示例更新了我的答案。您的选择标准与我的不同。请再更新一次。希望能有帮助。我觉得我不知道自己在做什么。此外,对你认为有助于你前进的评论/问题进行投票,因为如果你不这样做,人们就不太可能提供帮助。