0

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

    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>';
4

1 回答 1

1

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

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

你可以用一个按钮做同样的事情。只需坚持$.get()按钮的onclick事件而不是选择元素的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

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

<!-- 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 开发工具来查看数据的实际形成方式)并将其插入您想要的位置。那,以及我在上面可能犯的任何愚蠢的错误。

希望这可以帮助!

于 2012-09-06T12:43:59.197 回答