[英]Rating system: Pulling in average rating
以下是我執行數據庫搜索並以這種格式返回結果的代碼:
- 研究所名稱1
評分:x / 5
- 研究所名稱2
評分:x / 5
碼:
search_results.php
<?php
//mysql_
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
if(mysqli_connect_errno())
{
die("Database connection failed: " .
mysqli_connect_error() .
" (" . mysqli_connect_errno() . ")");
}
$result = "";
//collect info from database
if(isset($_POST['search'])) {
$searchq = $_POST['search'];
$searchq = preg_replace("#[^0-9a-z]#i", "", $searchq);
//echo $searchq;
//SQL query
$query = "SELECT institute_id, name FROM institutes WHERE
category1 LIKE '%$searchq%' OR
category2 LIKE '%$searchq%' OR
category3 LIKE '%$searchq%' OR
category4 LIKE '%$searchq%'";
$result = mysqli_query($connection, $query);
// Test if there was a query failure
if(!$result){
die("Database query failed.");
}
$count = mysqli_num_rows($result);
if($count == 0)
{
$output = "There's no search result";
}
else {
while($row = mysqli_fetch_assoc($result))
{
$id = $row["institute_id"];
?>
<li>
<h3>
<a href="institute_profile_test.php?id=<?php echo $id; ?>"><?php echo $row["name"];?>
</a>
</h3>
</li>
<div class = "rating">Rating: x/5</div>
<?php
}
}
}
?>
我的數據庫中有一個評級和機構表,其表結構如下:
等級
研究所
如您所見,評級數據庫已經存儲了一些評級信息(如果需要,我將共享我編寫的用於注冊評級的代碼)
我接下來要做的是獲取每個機構的平均評分,並用每個單獨的平均值替換x。 我要在search_results.php中編寫哪些附加代碼來實現此目標? 我還想按機構的平均排名對機構名稱進行排序。
如果我理解正確,那么您要做的就是創建一個簡單的while循環,該循環遍歷為每個成功的“搜索”查詢所獲取的institute_id的所有實例。
while($row = mysqli_fetch_assoc($result)){
$id = $row["institute_id"];
$query2 = "SELECT rating FROM ratings WHERE institute_id ='$id'";
$result2 = mysqli_query($connection, $query2);
//average rating vars
$count = 0;
$sum = 0;
while($row2 = mysqli_fetch_assoc($result2)){
$count++;
$sum += $row2['rating'];
}
$average = $sum / $count;
//display average
.....
}
這樣應該可以顯示每個研究所的平均值,然后如果要根據DESCENDING或ASCENDING顯示它們,只需將每個平均值保存在數組中即可。 其余的取決於您,請嘗試將平均結果保存在JSON數組中,並將每個結果與其機構ID計數器部分配對。
例:
$average = array('institute_x' => 'average')
*請確保將“ institute_x”替換為id,並將“平均值”替換為平均值...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.