2011-04-26 64 views
0

我有一個SQL數據庫的網站名稱/鏈接/關鍵字。然後我查詢PHP數據庫,並顯示匹配關鍵字作爲名稱和鏈接的結果。可能對數據庫結果的顯示進行排名?

我想實施某種排名系統。理想情況下,它將是一個可點擊的五星級系統(如netflix排名系統,如果您熟悉),它將數據庫中的每個排名作爲新值保存。

澄清..如果我最初搜索'狗'和3個網站返回,默認情況下,他們將按照他們的數據庫ID列出。我希望能夠點擊一個明星,並將其作爲下一個搜索顯示的新決定因素。因此,如果db_id#1具有(3)5星評級,和(1)4星評級,db_id#2具有(8)5星評級,和(1)3星評級,和db id#3有(6)五星評級,結果將是id#2,id#3,id#1。

我不確定這是否可能。如果是這樣,也許有人可以聯繫我一些很好的閱讀。

如果有(半)易解決方案,這裏是我當前從數據庫查詢的輸出結果。

<?php 
// query database 
$query = mysql_query("SELECT * FROM `database` WHERE `keys` LIKE '%$q%'");    
// display query results 
while($row = mysql_fetch_array($query)) 
{ 
echo "<b>".$row['name']."</b>"; 
echo "<br/>"; 
echo '<a href="' . $row['weblink'] . '">' . $row['weblink'] . '</a>'; 
} 
mysql_close($con) 
?> 

回答

0

,如果你不感興趣的票數你可以考慮做一個點爲基礎的評價體系,而不是在飛行中計算評級。這意味着你只需要將一個INT列添加到結果表(如果必須的話,可以使用關係表)。

1星= 1分,5星= 5分,或者你認爲合適。您也可以通過添加「This does not help」按鈕或類似的東西來減去點數。

當用戶選擇評分時,您只需將這些分數添加到當前評分和UPDATE條目中即可。當然,當你查詢數據庫的結果時,添加ORDER BY rating DESC

有很多腳本,只有search google爲「星級評分php」或「5星評級php」,甚至search Stack Overflow。我不想支持任何特定的,但他們都以相同的方式工作。

編輯:請注意,這只是排名的結果更高或更低,但基於它止跌回升的搜索參數。這將會(很多)更復雜,我在回答時沒有想到它,但希望這有助於GL,GL!

+0

謝謝。我在這裏找到了一個好的。 http://webtint.net/tutorials/5-star-rating-system-in-php-mysql-and-jquery/ 這正是我需要的情況。 – 2011-04-26 18:55:33

1

這其實很簡單,我會做的就是保存當前的排名以及投票數。

然後,你可以簡單地通過評價這個順序表:ORDER BY rating DESC

當一些臨危一個新的等級,你加一票的數量,計算新的等級,像這樣:

$new_rating = (($current_rating * $current_votes) + $new_vote)/($current_votes + 1);

例如:

一個項具有一個額定電流爲4 10票,有人給出的評級1.

$new_rating = ((4 * 10) + 1)/(11);

而新的評級是:3.72

+0

這就是我所說的流媒體平均值。因爲你的計算是一次只知道價值的平均值。 – pintxo 2011-04-26 08:13:53

+0

這並不重要,如果要計算三個值的平均值:1,2和3,則可以這樣做:(1 + 2 + 3)/ 3 = 2.如果要添加另一個值(4 ),你可以這樣做:(1 + 2 + 3 + 4)/ 4 = 2.5。或者:(6 + 4)/ 4 = 2.5 – Kokos 2011-04-26 08:23:35

+0

我剛給這個東西一個名字,你完全正確。別擔心。 – pintxo 2011-04-26 08:37:39

相關問題