PHP Mysql查询 - 允许用户过滤结果

时间:2014-01-25 10:09:39

标签: javascript php mysql ruby-on-rails ajax

我有一个php和mysql的网页设置。我已经弄清楚如何运行从mysql中提取的查询并将结果打印在网页上的表格中。

现在我想允许用户一次过滤结果1列。没有需要输入,下拉菜单显示数据库中的选项会很好。例如。在我的下面的代码中,他们可以按名称,日期或状态进行过滤。最初,网页会显示所有结果。

一次过滤多个列会很不错,但不是必需的。理想情况下,我设想每个列的下拉列表,当用户选择该选项时,结果会更新。我也不想创建单独的网页,但如果我需要那么好。

我的问题是:我应该尽可能简单易用地完成这项工作? 我希望有一个开发工具,这使一个简单的任务。我应该只使用HTML get / post表单吗?还是Ajax?还是Javascript? RubyonRails?要么?关于我应该使用这些资源中的哪些功能的任何具体建议也会有所帮助,因为我不熟悉Javascript / Ajax / Ruby,但如果它具有一些良好的内置功能,我愿意深入研究它。

以下是我的代码示例。查询是过滤结果,因为我正在测试以确保我可以使用变量执行查询,但最初它应该只是从表中执行一个简单的select *。

    <?php 
    print "Filter Results by Name, Date or State";

    $connection = connectdb("mysql");

    $state = "Kentucky";    

    $querytext = sprintf("SELECT * FROM tablename
        WHERE state = '%s'
        ",
        mysql_real_escape_string($state));

    $queryresult = getqueryresult($querytext,$connection);

    $tableid = "mytablestyle";

    printqueryresult($tableid,$queryresult);

    //close connection
    mysql_close($connection);
    ?>

3 个答案:

答案 0 :(得分:2)

因为您要返回所有行,然后想要过滤表,所以必须使用Javascript。但是,如果您不了解JavaScript并需要快速解决方案,我建议您使用JQuery和插件,如下所示:http://www.picnet.com.au/picnet-table-filter.html

如果您查看演示,则会有一个列表下拉,就像您描述的那样。祝你好运!

答案 1 :(得分:0)

如果我理解正确,您希望当下拉列表的值发生变化时,它会根据所选值更新过滤后的数据吗?为此你想要使用javascript,onchange事件。当然,您可以使用vanilla javascript,但我(可能还有其他任何开发人员)更喜欢jQuery

我在jsFiddle提出了一个小例子:

$(function(){
    $("#my-select").change(function(){
        //$("form").submit();
        alert("submitting the form now!");
    });
});

<form>
    <select name="something" id="my-select">
            <option value="one">One</option>
            <option value="two">Two</option>
    </select>
</form>

答案 2 :(得分:0)

您有多种选择,每种选择都有各自的优缺点。

1将是带有get / post的常规html表单。如果您没有js知识,这将是最简单的设置,但每次更改都需要页面刷新

2将使用ajax在没有页面重新加载的情况下执行相同的操作。你的php几乎与解决方案一样。

3将在页面加载时将所有数据(select *)加载到js变量中,并根据需要使用js对其进行排序。这意味着您只进行一次数据库调用,但如果返回了大量数据则不适合

相关问题