您可以将整个内容放在一个文件中。这是粗略且完全不完整的,但是像这样-
<?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_ 函数,如 mysql_real_escape_string。所有 mysql_ 都已弃用,不应再使用。