【问题标题】:Displaying database contents from drop down selection从下拉选择中显示数据库内容
【发布时间】:2013-02-19 22:29:54
【问题描述】:

在我的网站中,我有一个页面来显示推荐。我编写了这段代码来显示我在数据库中的所有推荐。

这是我目前的代码:

while ( $row = mysqli_fetch_array( $r, MYSQLI_ASSOC)) {
    $testimonial = $row['testimonial'];
    //echo $testimonial;
    $mytestimonial = nl2br($testimonial);
    $city               = $row['city_name'];
    $name               = $row['name'];
    $url                = $row['web_address'];
    $imageName      = $row['image_name'];
    $type               = $row['membership_type'];
} 

使用此代码,我可以将我的所有推荐信带到该页面。它很适合我。我的问题是现在我需要根据其类型过滤我的推荐。我的数据库中有 3 种不同类型的推荐信。 (导师,学院,学生)

我将使用一个选择框来过滤数据。从选择框中选择一个选项时,我需要根据所选类型显示推荐。

<div class="filter-box">    
    <div id="select_box">
        <form method="post" action="">          
            <div class="variation2">
                <label>Filter By</label>
                <select class="select">
                    <option>Tutor</option>
                    <option>Institute</option>
                    <option>Student</option>
                </select>
            </div>
        </form> 
    </div>  
</div>

谁能帮我找到一个方向?

谢谢

【问题讨论】:

  • 在查询中插入 where 子句。我也建议使用 Ajax。
  • 1.为您的选择框命名 2. 接受此值作为类型 3. 使用此类型变量在查询中进行过滤 -- “SELECT testimonial, city_name, name, web_address, image_name, member_type FROM testimonials INNER JOIN city ON city.city_id = testimonials.city_id where type = $type ORDER BY date_added DESC LIMIT $start, $display";"

标签: php jquery mysql ajax


【解决方案1】:

一旦用户选择了 3 个选项之一并显示您所需的推荐信,为什么不动态重新加载选择框(使用 AJAX)。我想这会解决您的问题。

【讨论】:

    【解决方案2】:

    所以你想然后根据他们的类型选择推荐

    $q = "SELECT testimonial, city_name, name, web_address, image_name, membership_type
            FROM testimonials 
            INNER JOIN city ON city.city_id = testimonials.city_id
            WHERE type = '$type'
            ORDER BY date_added DESC LIMIT $start, $display";
    

    现在你还想从用户那里获取类型

    <select name="type" class="select">
    

    通过 POST

    $type = $_POST['type'];
    

    更改示例时自动提交表单

    Javascript:

    <script type="text/javascript">
        function submitform(){
            document.frmType.submit();
        }
    </script>
    

    表格:

    <form name="frmType" method="post" action="">
        <select name="type" class="select" onchange="submitform()">
    

    更多例子可以在here找到

    【讨论】:

    • 在这种情况下,我无法在表单中使用提交按钮。没有按钮可以吗?
    • 为什么不能使用提交按钮? &lt;input type="submit" value="Submit"&gt;。是的,可以通过 javascript 或 Ajax
    • 我的页面无法显示提交按钮。这就是我寻找不同解决方案的原因。
    • 感谢您的回复。我可以知道我可以为此使用 jqery 吗?
    • 我对 JQuery 不太了解,但你可以看看this
    【解决方案3】:

    您有几个选择。第一个是ajax。 二是提交表单onchange或onsubmit:

    <select class="select" name="type" onchange="document.forms[0].submit();">
        <option value="Tutor">Tutor</option>
        <option value="Institute">Institute</option>
        <option value="Student">Student</option>
    </select>
    

    您的查询:

    $type = '';
    if(!empty($_POST) && isset($_POST[type])){
        $type = " WHERE testimonials.type = '".$_POST[type]."'";
    }
    $q = "SELECT testimonial, city_name, name, web_address, image_name, membership_type
            FROM testimonials 
            INNER JOIN city ON city.city_id = testimonials.city_id
            ".$type."
            ORDER BY date_added DESC LIMIT $start, $display";
    

    当然要检查表单是否已提交。

    【讨论】:

    • 我将使用您的代码。现在我有这个错误 - 第 92 行的脚本“C:\wamp\www\website\testimonials.php”中发生错误:未定义索引:类型
    • 我照你说的做了。现在没有任何错误但没有过滤发生
    • 当你选择类型时echo $q;会给你什么?
    • where 子句未显示在我的查询中。
    • 问题是一样的。我用你的代码更新了。但我将值更改为 - ` `
    【解决方案4】:

    为每个推荐 div 添加一个按名称命名的类

     <div class="student">testimonial goes here</div>
    

    现在使用 jquery 一次性隐藏/显示类别。

     $('.student').show();
    

    希望对你有帮助

    【讨论】:

    • 我不能用这个显示/隐藏功能。因为我需要重新查询我的查询。
    • 我的想法是在不浪费带宽的情况下在浏览器上进行过滤。 :)
    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    相关资源
    最近更新 更多