2011-09-08 36 views
0

此代码效果很好,但我在如何订购时遗失了。在点数后对结果进行排序PHP

输出示例:

撞击3是Mozilla Firefox
撞击2谷歌浏览器
撞击4的Internet Explorer
撞击2 Apple Safari中
命中1歌剧

$result = mysql_query("SELECT * FROM WEB_STATS WHERE real_user NOT LIKE 'Bot'"); 
$duplicates = array(); 
while($row = mysql_fetch_array($result)) { 
    $results = $row['user_browser']; 

if (!array_key_exists($results, $duplicates)) { 
    $browsersLive[] = $results; 
    $duplicates[$results] = 1; ## mark that we've already output this records 
    } 
    } 

foreach($browsersLive as $browserswive){ 
    $query = "SELECT COUNT(*) FROM WEB_STATS WHERE user_browser = '$browserswive'"; 
    $result = mysql_query($query) or die("Sorry, didn't work" . mysql_error()); 
    $browser_count = mysql_result($result, 0); 

    if($browserswive == "Mozilla Firefox"){ 
    echo '<img alt="FireFox" height="32" src="images/fox-icons.png" width="32">Hits '.$browser_count.' '.$browserswive.'<br>'; 
} 
    elseif($browserswive == "Internet Explorer"){ 
    echo '<img alt="Internet Explore" height="32" src="images/ie-icons.png" width="31">Hits '.$browser_count.' '.$browserswive.'<br>'; 
} 
    elseif($browserswive == "Google Chrome"){ 
    echo '<img alt="Google Chrome" height="32" src="images/chrome-icons.png" width="32">Hits '.$browser_count.' '.$browserswive.'<br>'; 
} 
    elseif($browserswive == "Apple Safari"){ 
    echo '<img alt="Apple Safari" height="32" src="images/safari-icons.png" width="32">Hits '.$browser_count.' '.$browserswive.'<br>'; 
} 
    elseif($browserswive == "Opera"){ 
    echo '<img alt="Opera " height="33" src="images/opera-icons.png" width="33">Hits '.$browser_count.' '.$browserswive.'<br>'; 
} 
} 
+0

什么你怎么想看看它命令?输出示例是多列还是单个字符串? – Sparky

+0

我希望这些匹配按降序运行。上面的示例输出是现在的显示方式。 – MHowey

回答

1

欢迎调整SQL到

SELECT user_browser, COUNT(*) as hits 
FROM WEB_STATS 
WHERE real_user!='Bot'  <-- replace the NOT LIKE 'Bot' 
GROUP BY user_browser 
ORDER BY hits DESC; 

,你只需要查询一次,然后遍历结果

+0

感谢您的“real_user!='Bot'”,但我没有**命中**来排序。如果我做了,我不需要数数。除非我错过了什么 – MHowey

+0

再次更新SQL – ajreal

0

尝试订购类似:

  • SUBSTRING_INDEX(COLNAME,2) - > HITS 2歌剧===> HITS 2
  • SUBSTRING(,INSTR(””,COLNAME)) - > HITS 2 ==> 2
  • CAST(AS签名) - >转换为2〜数

全部放在一起

ORDER BY CAST(substring(substring_index(colName,2),INSTR(' ',colName)) AS SIGNED) 

这应该做你正在寻找...