В то время как петля - возможно иметь только 6 петель? - PullRequest
1 голос
/ 29 ноября 2011

Это мой код, я бы хотел, чтобы он делал только первые 6 элементов массива.Кроме того, как бы я написал цикл для всего ПОСЛЕ 6 первых элементов массива?

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

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

Ответы [ 5 ]

6 голосов
/ 29 ноября 2011

Попробуйте следующее для вашего первого запроса:

$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

4 голосов
/ 29 ноября 2011

Чтобы иметь только первые 6 строк, лучше всего использовать LIMIT в вашем выражении sql следующим образом.

SELECT *
FROM table
WHERE condition
LIMIT 6

Если вы хотите иметь цикл, который печатаетпервые 6 строк, а затем еще один цикл, который будет печатать оставшиеся строки, используют решение, предоставленное nickb .

2 голосов
/ 29 ноября 2011
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>";
}
1 голос
/ 29 ноября 2011
SELECT * 
FROM table 
WHERE condition 
OFFSET 6 

этот запрос получит все после первых 6. Я предполагаю, что вы используете mysql.

0 голосов
/ 29 ноября 2011

Добавление однопетлевого подхода. Для простоты и удобства чтения используйте переменную count $rowNum, чтобы определить, что делать в цикле.

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

        if($rowNum<=6)
        {
             ECHO "<fieldset>Services: ".$servdescarrayrow."</fieldset>";
        }
        else
        {
            // Code for other items
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...