我想實現的目標:我正在嘗試創建一個篩選器,學生可以按級別,性別或主題篩選我的網站上的導師。爲此,我創建了一些複選框,如果提交爲「開」或檢查查詢,則會找到滿足該條件的導師。我使用了一個while循環來檢查哪些複選框已被檢查。從MySQL返回的結果相同 - 我知道爲什麼,但不知道解決方案
發生了什麼事:查詢返回正確的結果,但說一個導師教數學和英語,然後他將返回結果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";
}
* PSA:*'mysql_ *'函數[在PHP 5.5中不推薦](http://php.net/manual/en/faq.databases.php#faq.databases.mysql.deprecated)。不建議您編寫新的代碼,因爲這會阻止您將來升級。相反,請使用[MySQLi](http://php.net/manual/en/book.mysqli.php)或[PDO](http://php.net/manual/en/book.pdo.php)和[是一個更好的PHP開發人員](http://jason.pureconcepts.net/2012/08/better-php-developer/)。 –
試過一組???? – Sebastien
@ user2631669看到這樣刪除了評論。你的數據庫結構看起來有點奇怪,如果添加了新的主題,你需要改變結構。 –