2011-02-18 268 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