选择下拉列表时可以运行DB更新功能

时间:2012-09-06 12:41:30

标签: php html forms

我想知道从下拉列表中选择项目时是否可以运行更新查询。用户做出选择,然后调用函数来更新数据库中的特定字段。这将通过选择框来存储选项来实现。感谢。

    echo '<td>';
    echo '<select name="order_status[]" onChange = "update()">';
    echo '<option value = "1" class ="pending">Pending</option>';
    echo '<option value = "2" class = "approved">Approved</option>';
    echo '<option value = "3" class ="disapproved">Disapproved</option>';
    echo '</select>';
    echo '</td>';
    echo '</tr>';

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。如果您希望无缝地运行查询(即,没有按下提交按钮并刷新页面),那么您将需要使用Ajax将请求异步发送到PHP脚本。

编辑:最简单的方法就是在$.get()事件中使用jQuery的onchange功能。这样,每次有人选择一个选项时,jQuery都会使用该选项的值将请求发送到PHP脚本。 PHP脚本将运行,并将新数据返回给您的jQuery,然后jQuery将使用其DOM功能将该数据插入您的页面。

你可以用一个按钮做同样的事情。只需在按钮的$.get()事件中粘贴onclick,而不是在select元素的onchange事件中。

jQuery网站的文档将为您提供相关的代码示例。

编辑2:好的,这是一个非常简单的例子。

首先,让我们考虑一下您希望在后端发生的实际过程。简单来说,您希望从用户输入中获取id并使用它在查询中运行。非常直接(使用PDO进行数据库工作):

// in a real app, you'd need to sanitize and validate the incoming id
$id = $_GET['id'];

$stmt = $dbh->prepare("SELECT * FROM table_name WHERE id = :id");
$stmt->bindParam(":id", $id);
$stmt->execute();

$row = $stmt->fetch(PDO::FETCH_ASSOC);

echo json_encode($row); // makes it jQuery friendly

好的,所以后端非常简单。现在,对于字体结束,魔术发生的地方。以下是我使用select元素和button的方法,以便将id传递回PHP脚本,然后处理结果:

<!-- Your HTML up to where the select and button are on your page -->

<select id="id" name="id">
    <option value="1">Something</option>
    <option value="2">Something Else</option>
    <option value="3">Yet Another Thing</option>
</select>

<button id="btn" />

<!-- In your jQuery -->

$("#btn").click(function() {
    $.get("path/to/your/back/end/script.php", { "id" : $("#id").value }, function(data) {
        /* the data will be the json_encode($row) that was echoed from the PHP script.
         * so, you'll need to drill into it, take the data you want, and use 
         * jQuery's/JavaScript's DOM manipulation tools to insert the data on your 
         * page
         */
    }) // close $.get()
}); // close .click()

这些都没有经过测试,而且它被认为是不完整的,但这应该足以开始了。真的,你需要弄清楚的是如何钻取到返回的数据(它是一个JSON对象,所以它不应该太糟糕......使用浏览器的Web开发工具来查看数据的实际形成方式)并将其插入您想要的位置。那,以及我上面可能犯的任何愚蠢的错误。

希望这有帮助!