2011-11-28 77 views
1

這是我的代碼,我希望它只做前6個數組項。此外,我將如何編寫6個第一個數組項後的所有內容循環?雖然循環 - 可能只有6個循環?

while ($servdescarrayrow = mysql_fetch_array("servdescarray")) { 

    ECHO "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
} 
+0

你也可以提供你的查詢嗎? – jsalonen

+0

在另一個註釋中,請注意,您將數組'$ servdescarrayrow'串聯爲一個字符串,並將'mysql_fetch_array()'傳遞給一個字符串而不是資源。我想這是爲了簡化而編輯出來的? – Wiseguy

回答

6

嘗試爲您的第一個請求如下:

$count = 0; 
while($servdescarrayrow = mysql_fetch_array("servdescarray")) { 
    $count++; 
    echo "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
    if($count == 6){ 
    break; 
    } 
} 

然後,你可以對第2部分做了如下:

$count = 0; 
while($servdescarrayrow = mysql_fetch_array("servdescarray")) { 
    $count++; 
    if($count > 6){ 
    echo "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
    } 
} 

或者(更好的)是使用LIMIT你SQL查詢

+5

不要以爲你需要一個字符串...數字有什麼問題? – Macmade

+0

@Macmade已更新 – ManseUK

+0

我的壞...那些日子之一:( – MrJ

4

要只有前6行,最好的方法是使用LIMIT以這種方式在你的sql語句中。

SELECT * 
FROM table 
WHERE condition 
LIMIT 6 

如果你想有一個循環,打印前6行,然後另一個循環,將打印剩餘行使用由nickb提供的解決方案。

2
for($i = 0; $i < 6; $i++) 
{ 
    $servdescarrayrow = mysql_fetch_array("servdescarray"); 
    ECHO "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
} 

要獲得剩下的條目(因爲結果集將記住它離開的地方):

while ($servdescarrayrow = mysql_fetch_array("servdescarray")) { 

    ECHO "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
} 
0

添加單個環路的方法。爲了保持簡單和易讀,我們使用一個計數變量$rowNum來確定在循環中要做什麼。

$rowNum = 0; 
    while ($servdescarrayrow = mysql_fetch_array("servdescarray")) { 
     $rowNum++; 

     if($rowNum<=6) 
     { 
      ECHO "<fieldset>Services: ".$servdescarrayrow."</fieldset>"; 
     } 
     else 
     { 
      // Code for other items 
     } 
    } 
1
SELECT * 
FROM table 
WHERE condition 
OFFSET 6 

此查詢將獲得後的第6 我假設你使用MySQL的一切。