PHP从数据库填充下拉列表,然后单击按钮上的更新

时间:2014-12-05 20:53:30

标签: php sql

我无法从数据库填充下拉列表,然后在按钮点击时更新所选项目。我想要的是,当您在下拉列表中选择选项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>

1 个答案:

答案 0 :(得分:0)

PHP是一种服务器端语言。它在您请求页面时运行一次,在完成后它会为您提供页面。它不会运行,直到您执行另一个页面请求,而PHP无法执行此操作,因为这是客户端操作。

您正在寻找的是Javascript和Ajax。它们是客户端语言。我建议您使用Jquery,一旦掌握了它,它就非常容易使用。它使它比标准的javascript更糟糕。

如果您不想避免重新加载页面(提交 - >处理程序 - &gt;页面重新加载),我可以为您做出答案。也许


从评论中更新: 你想设置&#34;选择&#34;在页面加载时选择该选项的属性是否正确?例如选择下拉列表中的第二项而不是第一项。

您需要在选项标记上使用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>

在这种情况下,$ enemy是我的项目,它让我选择了打印,这使得该选项被选中。


在你的情况下,这就是它的本质。这有点难看。我想我修改了你的一些代码,但没有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>";
}

请注意,我可以更改选项名称或发送导致您过期的POST,或删除整个表格,因为您的数据未经过清理。