2011-11-25 92 views
1

我有一個代碼,它應該檢查結果是否等於8它需要顯示一些內容,如果不是,它需要顯示一些內容else,所有這些都發生在一個while循環。與`if`` else`和`while`混淆

while ($row_fpages2 = mysql_fetch_array($result_fanpage2)) 
{ 
    if ($row_fpages2['client'] != NULL) { 

     //GRAPHS 
    $sql = "SELECT likes, date FROM statistics_pages WHERE idnum = '".$idnum."' AND page_name = '".$row_fpages2['page_name']."' ORDER BY `statistics_pages`.`date` DESC LIMIT 8"; 
    $result2 = mysql_query($sql) or die(mysql_error()); 

    if ($result2) { 
     $data = array(); 

     while ($row = mysql_fetch_assoc($result2)) { 
      $data[] = $row["likes"]; 
     } 

    if ($result2 == 8) { 
    $c_data = count($data)-1; 
    $final = array(); 
    for ($i = 0; $i < $c_data; $i++) { 
    $final[] = getZeroResult($data[$i], $data[$i+1]); 
} 
    $data_string = join(",", $final); 

    $stats = '<img src="http://chart.apis.google.com/chart?chs=240x140&cht=ls&chd=t:0,0|'.$data_string.'&chg=20,20&chls=0.75,-1,-1|6,4,1&chm=o,FF9900,1,-1,7,-1|b,3399CC44,0,1,0"></img>'; 

    } else { 
     $stats = '<img src="images/stats_un.jpg"></img>'; 
    }; 



    } else { 
     print('MySQL query failed with error: ' . mysql_error()); 
    } 

echo '...'; 

的問題是,總是表示(== 8)第一輸出(即使它是不等於8)而不是else輸出。

然後,如果我有2個或更多的東西上面第一個是正確的,但第一個仍然顯示(== 8)

任何幫助?

+0

它可能有助於正確縮進一切,以便您可以清楚地看到塊。 –

+0

究竟是什麼必須等於8 ..行數? 因爲我不認爲你可以做到這一點 如果($ result2 == 8) $ result2持有資源ID –

回答

4

你做的這是不正確的情況如下:

$result2 = mysql_query($sql) or die(mysql_error()); 
... 
if ($result2 == 8) { 

mysql_query返回值是資源不是int。你在那裏試圖做什麼?

+0

謝謝,你幫助了我很多小提示。我只寫了'$ row_r2 = mysql_fetch_array($ result2);',然後用取出的數組var替換了'mysql_query'。謝謝。 – Ricardo

0

可能是你想使用的

if(strlen($result2) == 8){ 
       ... 
     } 

代替

if($result2 == 8){ 
       ... 
     } 

希望能解決你的問題。