2015-04-22 3 views
0

Я получил этот код и по какой-то причине $ я ++ не work.It показывает все в базе данных, и я просто хочу, 10 элементов, которые будут показаныКак заставить скрипт работать до определенной точки?

if($i <= 10){ 
      while($row = mysqli_fetch_assoc($result)){ 

      echo '<li>'.$row['title'].'</li>'; 
      $i++; 
    } 
} 
+6

и использование 'LIMIT 10' - это не вариант? попробуйте 'foreach' или' for' –

ответ

5

Быстрое исправление, изменение:

if($i <= 10){ 
    while($row = mysqli_fetch_assoc($result)){ 
     echo '<li>'.$row['title'].'</li>'; 
     $i++; 
    } 
} 

... чтобы:

while($i <= 10 && $row = mysqli_fetch_assoc($result)){ 
    echo '<li>'.$row['title'].'</li>'; 
    $i++; 
} 

Объяснение:

Как только вы находитесь в условном блоке if, состояние if никогда не будет оцениваться снова. Только состояние while оценивается с каждым циклом, поэтому переместите $i <= 10 в состояние while. Используйте AND &&, потому что вы хотите, чтобы оба условия были истинными, чтобы продолжить цикл.

Но, поскольку Fred-ii- предлагает добавить LIMIT 10 к вашему запросу базы данных, это уменьшит объем данных, которые вы должны обрабатывать.

+0

, он работает, спасибо. – Andrew

+1

Спасибо за то, что вы указали объяснение - он обращается к фактической проблеме с исходным кодом OP, который я считаю очень полезным. – showdev

+0

так же на этом ^ –

0

Вы должны ограничить результат по вашему запросу MySql с помощью LIMIT 10.
MySql LIMIT tutorial

т.е .:

select something from something LIMIT 10; 

Отвечая на ваш прямой вопрос:
Использование break:

$i = 1; 
while($row = mysqli_fetch_assoc($result)) { 
    echo '<li>'.$row['title'].'</li>'; 
    $i++; 
    if($i > 10) { 
     break; 
    } 
} 

break завершает выполнение тока for, foreach, while, do-while или switch структура.