我想要实现的目标:我正在尝试创建一个过滤器,学生可以使用它来按级别、性别或主题过滤我网站上的导师。为此,我创建了复选框,当提交为“ON”或选中时,运行查询以查找满足该标准的导师。我使用了一个while循环来检查哪些复选框已被选中。
发生了什么:查询返回正确的结果,但说一位导师教数学和英语,那么他将被返回到结果 div 两次。这是因为导师完成了这两个查询并返回了两次。
我不知道如何解决这个问题,所以提前感谢,我会感谢所有帮助,下面是 HTML 和 PHP 编码的相关部分。
<form action="" method="get" >
Name:
<input type="text" name="tutor_name"><br>
Level:
<input type="checkbox" name="check[]" value="gcse">GCSE
<input type="checkbox" name="check[]" value="a_level">A Level<br>
Gender:
<input type="checkbox" name="check[]" value="male">Male
<input type="checkbox" name="check[]" value="female">Female<br>
Subject:
<input type="checkbox" name="check[]" value="maths">Maths
<input type="checkbox" name="check[]" value="science">Science
<input type="checkbox" name="check[]" value="english">English<br>
<input type="submit" value="Go!">
<?php
if(!empty($_GET['check'])){
foreach($_GET['check'] as $check) {
$check = mysql_query("SELECT `tutor_id` FROM `tutors` WHERE $check=1");
while($row = mysql_fetch_array($check)){
$tutor_data = tutor_data($row['tutor_id'], 'first_name','image','rating','bio','last_name');
echo "<br><h3> " . $tutor_data['first_name'];
echo " " . $tutor_data['last_name'];
echo "</h3><br>" . $tutor_data['bio'];
echo "<br>Rating: " . $tutor_data['rating']. "<br><br>";
}
}
$number= mysql_num_rows($check);
echo "<b>$number</b> results";
}