我想知道从下拉列表中选择项目时是否可以运行更新查询。用户做出选择,然后调用函数来更新数据库中的特定字段。这将通过选择框来存储选项来实现。感谢。
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>';
答案 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开发工具来查看数据的实际形成方式)并将其插入您想要的位置。那,以及我上面可能犯的任何愚蠢的错误。
希望这有帮助!