2012-11-25 86 views
0

我試圖從一個表中的MySQL數據庫顯示圖像,三行到一行。我能夠做到這一點,但問題是我的原始代碼有它,所以如果你的MySQL表中只有一行,它會每行運行三次代碼,並留下兩個空的<td>(並留下一個空一個,如果你有兩排)。我試圖運行一個循環,表示如果剩餘的行少於三行,請多次運行循環並退出。我一遍又一遍地查看了這段代碼,並將它交給了自己,但似乎無法找到問題所在。我得到的錯誤是無限地運行循環。我目前有兩行,因此它所做的是每<tr>運行循環兩次,但永遠。儘管循環語法錯誤(無限循環)

我認爲添加3到$ rowcounter會停止循環。 $ rowcounter從0開始,循環遍歷。 3被添加到$ rowcounter(使其爲3),這會使其大於$ num_rows_temp(這將是兩個,因爲只有兩行),並且循環將不會執行。同樣,問題必須在第一個while循環中,因爲它會無限地在我的表中生成新的行......是否有$ rowcounter不會添加3的原因?

(另外,請忽略fetch_arrays下的變量聲明。這些將要使用的功能,一旦我得到的循環工作。他們現在看起來輕浮,雖然...)

有人可以幫我弄清楚我在這裏有什麼問題?非常感謝。

<?php 
$rowcounter=0; 

if($num_rows_temp==0){ 
echo "No pictures yet!"; 
} 
else{ 
//BEGIN JOB POSTING        
    while($rowcounter<=$num_rows_temp){ 
     $remaining=$num_rows_temp-$rowcounter; 
     $counter=1; 
     echo "<tr>"; 
     //IF THE REMAINING AMOUNT OF ROWS IS LESS THAN THREE, RUN THE WHILE LOOP 
     //FOR THE AMOUNT OF REMAINING ROWS 
     if ($remaining>0 && $remaining<3){ 
      while($counter<=$remaining){ 
       $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM); 
       $id = $row_temp[0]; 
       $location = $row_temp[1]; 
       $name = $row_temp[2]; 
       $email = $row_temp[3]; 
       echo "<td> 
       <a href='".$location."'> 
       <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" /> 
       </a> 
       </td>"; 
       $counter++; 
      } //END WHILE 
      } //END IF 
      else{ 
       while($counter<=3){ 
        $row_temp = mysqli_fetch_array($result_temp, MYSQL_NUM); 
        $id = $row_temp[0]; 
        $location = $row_temp[1]; 
        $name = $row_temp[2]; 
        $email = $row_temp[3]; 
        echo "<td> 
        <a href='".$location."'> 
        <img class=\"g-thumbnail\" src='".$location."' width=\"200\" height=\"200\" /> 
        </a> 
        </td>"; 
        $counter++; 
       } //END WHILE 
      } //END ELSE 
      echo "</tr>"; 
      $rowcounter+3; 
     } //END WHILE 
    } //END ELSE 
?> 
+1

您不是*將* 3添加到那裏的rowcounter,您將它設置爲3.嘗試執行「$ rowcounter + = 3;」代替。 – FreudianSlip

+0

@FreudianSlip不會將它設置爲3。 '$ rowcounter + 3;'什麼都不做。 –

回答

2

您的$rowcounter+3;沒有增加$rowcounter。更改TO-

$rowcounter +=3; 

由於是,如果你echo'ing

echo $rowcounter+3; // would echo 3 each time 

你也設置$counter while循環內

while($rowcounter<=$num_rows_temp){ 
    $remaining=$num_rows_temp-$rowcounter; 
    $counter=1; 

所以,即使你增加$rowcounter+3;只會工作它在做

$counter++; 

一旦它再次啓動while()循環,它將被重新設置爲1。您需要在while()之前申報。