PHP/HTML 动态页面/搜索


PHP/HTML dynamic page/search

我发现很难理解我遇到的这个问题的逻辑。

目前,我有一个搜索.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
}
?>