我发现我很难理解我遇到的这个问题的逻辑。
目前,我有一个提交的search.html页面转到Results.php。然后有一些代码在mysql中搜索输入搜索页面的内容。
现在,我如何在同一页面上进行搜索和结果?我如何从搜索页面返回变量?例如在我使用之前;
$search_term = $_POST['name'];
如果'name'变量在同一页面上,我将如何得到它?
编辑:第二期
我的代码工作很多人都回答了,非常感谢你!我现在遇到了第二个问题。我有两个输入文本框用于搜索查询,然后是一个用于搜索主题的下拉框。
然后用户然后按下提交并搜索数据库,这一切都正常。我现在想要创建另一个下拉框,以便用户可以在他们认为适合的事项中对提供的结果进行排序,例如价格从高到低等。
我已经完成了HTML代码,但是你可以想象,第二个我按下提交重新加载页面,因为它不知道用户以前搜索过什么它退出了php并且好像它是一个新页面负荷。
网址:http://helios.hud.ac.uk/u0862025/db/test.php
使用它,按提交以解除数据库中的所有产品。
答案 0 :(得分:2)
你可以把整件事放在一个文件里。这很粗糙,完全不完整,但是这样的事情 -
<?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; ?>
当然,这是非常粗糙的,并假设很多东西。就像你的结果是一个阵列一样。你的结果有一个名为name的密钥
但正如你所问,这一切都在一页上,这是基本的想法。
随时提出任何问题,我可以根据需要更新。
**更新1 ** 我更新了这个示例,以考虑仅在结果出现后显示的下拉列表。它将使用添加的订单参数重新提交表单。此示例不考虑分页,并假设您具有清理输入的清理函数。显然你应该使用mysqli或PDO,因为他们都会为此提供解决方案。不要依赖mysql_real_escape_string之类的mysql_函数。所有mysql_都已弃用,不应再使用了。
答案 1 :(得分:1)
完全相同的方式。唯一的区别是您必须检查表单是否已提交
if (!empty($_POST)) {
// do your search here
// and show the results
}
显然,表单操作必须指向网站本身。把它留空是最好的做法:
<form method="POST" action="">
答案 2 :(得分:1)
您可以使用Ajax调用从mysql进行查询并在同一页面上显示结果。一个很好的例子是http://www.w3schools.com/php/php_ajax_database.asp
答案 3 :(得分:1)
尝试在同一页面中制作表单和php代码。将提交按钮设为“名称”。 假设我们有 search.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
}
?>