是的,这是可能的。如果您希望查询无缝运行(即,无需按下提交按钮并刷新页面),那么您将需要使用 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 开发工具来查看数据的实际形成方式)并将其插入您想要的位置。那,以及我在上面可能犯的任何愚蠢的错误。
希望这可以帮助!