2011-11-28 57 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的一切。