PHP / HTML动态页面/搜索

时间:2013-01-24 01:36:31

标签: php html css

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

目前,我有一个提交的search.html页面转到Results.php。然后有一些代码在mysql中搜索输入搜索页面的内容。

现在,我如何在同一页面上进行搜索和结果?我如何从搜索页面返回变量?例如在我使用之前;

$search_term = $_POST['name'];

如果'name'变量在同一页面上,我将如何得到它?

编辑:第二期

我的代码工作很多人都回答了,非常感谢你!我现在遇到了第二个问题。我有两个输入文本框用于搜索查询,然后是一个用于搜索主题的下拉框。

然后用户然后按下提交并搜索数据库,这一切都正常。我现在想要创建另一个下拉框,以便用户可以在他们认为适合的事项中对提供的结果进行排序,例如价格从高到低等。

我已经完成了HTML代码,但是你可以想象,第二个我按下提交重新加载页面,因为它不知道用户以前搜索过什么它退出了php并且好像它是一个新页面负荷。

网址:http://helios.hud.ac.uk/u0862025/db/test.php

使用它,按提交以解除数据库中的所有产品。

4 个答案:

答案 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
}
?>