2011-02-18 174 views
-1

我想要生成前10個標籤,我認爲它非常簡單。PHP/SQL腳本不能正常工作

//generate 10 top tags 
$tagSQL = mysql_fetch_array(mysql_query("SELECT * FROM tags")); 
$topArray = array(); 
foreach($tagSQL as $poland) 
{ 
    if($poland["tagID"] == 1) 
    { 
     $topArray[0] = $topArray[1] + 1; 
    } 
    if($poland["tagID"] == 2) 
    { 
     $topArray[1] = $topArray[2] + 1; 
    } 
    if($poland["tagID"] == 3) 
    { 
     $topArray[2] = $topArray[3] + 1; 
    } 
    if($poland["tagID"] == 4) 
    { 
     $topArray[3] = $topArray[4] + 1; 
    } 
} 
function printTopTags() 
{ 
    $n = 0; 
    foreach($topArray as $buddha) 
    { 
     $n = $n + 1; 
     if(sizeOf($topArray) > $n) 
     { 
      $hersheyBar = " "; 
     } 
     else 
     { 
      $hersheyBar = ""; 
     } 
     $finalFinalEndArray = mysql_fetch_array(mysql_query("SELECT tagName FROM tags WHERE tagID = '$buddha'"); 
     foreach($finalFinalEndArray as $waterBottle) 
     { 
      echo $waterBottle . $hersheyBar; 
     } 
    } 
} 

我遇到的唯一問題是,它認爲我在某個地方的代碼有語法錯誤,但無論哪條線路我省略了語法錯誤停留。

此外,有沒有一種更簡單的方法來做我的if語句爲10個不同的陣列點,而不是四個?

回答

5

您在本聲明的末尾缺少「)」

應該

$finalFinalEndArray = mysql_fetch_array(mysql_query("SELECT tagName FROM tags WHERE tagID = '$buddha'")); 
+0

也是,看着模式,你可以只使用$ topArray [($波蘭[「標籤識別「] - 1)] = $ topArray [$ poland [」tagID「]] + 1; – optimistAk 2011-02-18 02:01:30

2

的假設性陳述應該能夠被概括爲

$topArray[($poland["tagID"] - 1)] = $topArray[$poland["tagID"]] + 1; 

根本沒有if-then語句。

我沒有看到任何語法錯誤。這個腳本還有更多嗎?

編輯:現在看到的錯誤,這條線

$finalFinalEndArray = mysql_fetch_array(mysql_query("SELECT tagName FROM tags WHERE tagID = '$buddha'"); 

應該

$finalFinalEndArray = mysql_fetch_array(mysql_query("SELECT tagName FROM tags WHERE tagID = '$buddha'")); 

注意額外的)

3

optimystique是正確的關於語法錯誤。

關於你的第二個問題,shmeeps的方法適用於這個例子,但是如果你碰巧遇到另一種情況,你需要將一個變量與多個不同的值進行比較,那麼你可以使用一個switch statement而不是一堆的ifs。例如(從上面的鏈接PHP手冊):

<?php 
if ($i == 0) { 
    echo "i equals 0"; 
} elseif ($i == 1) { 
    echo "i equals 1"; 
} elseif ($i == 2) { 
    echo "i equals 2"; 
} 
?> 

是一樣的:

<?php 
switch ($i) { 
    case 0: 
     echo "i equals 0"; 
     break; 
    case 1: 
     echo "i equals 1"; 
     break; 
    case 2: 
     echo "i equals 2"; 
     break; 
} 
?> 
+0

這絕對是一種更好的方法,特別是如果你不僅僅是每個案例的一行代碼。 +1 – shmeeps 2011-02-18 02:05:45