2011-04-26 30 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

相关问题