我发现很难理解我遇到的这个问题的逻辑。
目前,我有一个搜索.html页面,提交时转到结果.php。然后有一些代码在 mysql 中搜索输入到搜索页面中的任何内容。
现在,我将如何在同一页面上进行搜索和结果?如何从搜索页面返回变量?例如,在我使用之前;
$search_term = $_POST['name'];
如果"name"变量在同一页面上,我将如何获取它?
编辑:第二期
我有你们许多人回答的代码工作,非常感谢!我现在来到了我的第二个问题。我有两个输入,一个用于搜索查询的文本框,然后是一个用于搜索主题的下拉框。
然后用户按提交并搜索数据库,这一切都可以正常工作。我现在想创建另一个下拉框,以便用户可以在他们认为合适的事情中对提供的结果进行排序,例如价格从高到低等。
我已经完成了HTML代码,但是您可以想象,当我按下提交其重新加载页面的第二个消息时,由于它不知道用户之前搜索了什么,因此退出php并充当新页面加载。
网址: http://helios.hud.ac.uk/u0862025/db/test.php
玩弄它,按提交以提升数据库中的所有产品。
您可以在一个文件中制作整个内容。这是粗糙且完全不完整的,但像这样的东西——
<?php
$results = array();
$term = "";
if(isset($_POST['name']))
{
$term = $_POST['name'];
$order_by = "";
if(isset($_POST['order'])
{
switch($_POST['order'])
{
case "price-high-low":
$order_by = "ORDER BY `price` DESC";
break;
case "name":
$order_by = "ORDER BY `name` ASC";
break;
default:
$order_by = "ORDER BY `id` DESC";
break;
}
}
$sql = "SELECT * FROM `your_table` WHERE `name` LIKE '%". sanitized($_POST['name']) ."%' $order_by";
//run query and assign the results to a variable, like $results
}
?>
<form action="" method="post">
<input type="text" name="name" value="<?php echo $term; ?>"><br>
<?php if(!empty($results)): ?>
<select name="order">
<option value="price-high-low">Price: High to Low</option>
<option value="name">Name</option>
</select>
<?php endif; ?>
<input type="submit" value="submit">
</form>
<?php if(!empty($results)): ?>
Results for term: <?php echo $term; ?><br>
<?php foreach($results AS $res): ?>
<?php echo $res['name']; ?><br>
<?php endforeach; ?>
<?php endif; ?>
当然,这是非常粗糙的,并且假设了很多事情。就像你的结果是一个数组,一方面。您的结果具有称为名称等的键。
但正如你所问的,这一切都在一页上,这是基本思想。
请随时提出任何问题,我可能会根据需要进行更新。
**更新 1 **我更新了此示例以考虑仅在产生结果后显示的下拉列表。它将使用添加的订单参数重新提交表单。此示例不考虑分页,并假设您有一个清理输入的清理函数。显然,您应该使用mysqli或PDO,因为它们都将为此提供解决方案。不要依赖像mysql_real_escape_string这样的mysql_函数。所有mysql_均已弃用,不应再使用。
完全相同的方式。唯一的区别是您必须检查表单是否已提交
if (!empty($_POST)) {
// do your search here
// and show the results
}
显然,表单操作必须指向站点本身。最好将其留空:
<form method="POST" action="">
您可以使用 Ajax 调用从 mysql 进行查询并在同一页面上显示结果。一个很好的例子是 http://www.w3schools.com/php/php_ajax_database.asp
尝试在同一页面中制作表单和 php 代码。为您的提交按钮指定一个"名称"。假设我们有搜索.php:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="name" />
<input type="submit" value="submit" name="search_button" />
</form>
<?php
if(isset($_POST['search_button'])) {
$search_term = $_POST['name'];
//DB query here
//echo the result you get from query
}
?>