2010-02-24 73 views
0

我爲我的網站做了一個php/ajax/mysql/json腳本,顯示所有標籤。MySQL計數包括到jSon對象

如果我獲取頁面ID,它會顯示該頁面的所有標籤。 但是!在我的主頁中,我想顯示所有標籤,從所有頁面上都有一個計數器。

例如,如果我標記4頁用

"**ilovestackoverflow**" 

我想在我的主頁,看看

"**ilovestackoverflow (4)**" 

我知道我可以指望與MySQL COUNT線(),但unfortunatlety我不能在這種情況下使用它,但是我嘗試了很多方法:(

(函數sqlnez($ value)是我的stripslashes腳本)

php的:

$server = mysql_connect($host, $user, $password); 
$connection = mysql_select_db($database, $server); 
//if got pageID 
if(isset($_GET['id'])) { 
    $query = mysql_query("SELECT * FROM tags WHERE id=".sqlnez($_GET['id']).""); 
    $json = "({ tags:["; 
    for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) { 
    $row = mysql_fetch_assoc($query); 
    $json .= "{tag:'" . $row["tag"] . "'}"; 
     if ($x < mysql_num_rows($query) -1) 
     $json .= ","; 
     else 
     $json .= "]})"; 
    } 
} 
//this is the part what needs help 
//if got nothing 
else { 
    $query = mysql_query("SELECT * FROM tags GROUP BY tag"); 
    $json = "({ tags:["; 
    for ($x = 0, $numrows = mysql_num_rows($query); $x < $numrows; $x++) { 
    $row = mysql_fetch_assoc($query); 
    $json .= "{tag:'" . $row["tag"] . "',counter:'" . I WANT THE COUNTER HERE . "'}"; 
    if ($x < mysql_num_rows($query) -1) 
     $json .= ","; 
    else 
     $json .= "]})"; 
    } 
} 

$response = $_GET["callback"] . $json; 
echo utf8_encode($response); 
mysql_close($server); 

感謝您的幫助和時間:)

+0

將來,您應該嘗試縮進代碼。這對每個人都好。 – 2010-02-24 12:00:31

回答

1

您的sql請求應爲SELECT tag, COUNT (*) as count FROM tags GROUP BY tag,然後用$row['count']替換I WANT THE COUNTER HERE

+0

警告:mysql_num_rows():提供的參數不是第39行中的/home/.../tagcloud.php中的有效MySQL結果資源 這就是$ query = mysql_query(「SELECT tag,COUNT(*)as count FROM標籤GROUP BY標籤「);線。 :( – 2010-02-24 11:17:34

+0

@Zoltan Repas你必須經常檢查mysql_query()的返回值:它可以返回一個結果集......或者不需要,參見手冊瞭解更多信息。 – 2010-02-24 12:01:45

0

,而不是由手寫JSON(這是一個非常糟糕的想法,無論是什麼),你應該使用json_encode