2013-03-05 134 views
3

在我的网站上,我有一个页面可以显示评价。我编写了这段代码来显示我的所有来自数据库的证明。从下拉菜单中选择显示数据库内容

这是我到目前为止的代码:

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> 

任何人都可以让我在这里的方向去吗?

谢谢

+0

插入'where'在查询子句。另外我会建议使用Ajax。 – Ravi 2013-03-05 13:41:24

+0

1.给你的选择框命名2.接受这个值作为类型3.使用这个类型变量来过滤查询 - “SELECT testimonial,city_name,name,web_address,image_name,membership_type FROM testimonials INNER JOIN city ON city.city_id = testimonials.city_id其中type = $ type ORDER BY date_added DESC LIMIT $ start,$ display“;” – 2013-03-05 13:41:42

回答

0

为什么不能动态重新加载选择框(使用AJAX)一旦用户选定的3个选项之一,并显示您的testimonial.I猜测,这将帮助您解决问题。

0

所以,你想,然后根据自己的类型选择推荐

$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"> 

获得类型与邮政

$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

+0

在这种情况下,我无法使用提交按钮添加到我的表单中。 ? – TNK 2013-03-05 13:46:01

+0

为什么你不能使用提交按钮?'输入类型=“提交”值=“提交”>'是的,这是可能的,通过javascript或Ajax – UnholyRanger 2013-03-05 13:47:20

+0

我的页面无法显示提交按钮。这就是为什么我正在寻找不同的解决方案。 – TNK 2013-03-05 13:50:45

0

你有几个选项。第一个是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"; 

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

+0

我正在使用你的代码。现在我有这个错误 - 第92行脚本'C:\ wamp \ www \ website \ testimonials.php'发生错误: 未定义索引:类型 – TNK 2013-03-05 14:09:43

+0

这只是一个通知。检查我的更新。 – SeanWM 2013-03-05 18:17:09

+0

我照你说的去做了。现在没有任何错误,但没有过滤发生 – TNK 2013-03-05 18:25:23

0

由名称添加一个类每一个告别赛的div

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

现在使用jQuery来隐藏/在一个截图显示的类别。

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

我希望它能帮助

+0

我无法使用显示/隐藏功能与此有关。因为我需要重新查询我的查询。 – TNK 2013-03-13 12:00:37

+0

我的想法是在不浪费带宽的情况下在浏览器上执行过滤部分。 :) – astroanu 2013-03-14 06:35:13

相关问题