Цикл do... while используется только тогда, когда без прохождения одной интерации нельзя определить условие выхода из цикла. Это предполагает, что одна интерация должна быть обязательно.
Так везде пишут?
По русски это примерно так:
Цикл должен когда то остановиться, а не то скрипт будет работать вечно. В обычном цикле, while, for или foreach, условие остановки известно за ранее. Допустим нужно вывести все числа от 1 до 10. Пишем цикл:
PHP |
for($i = 1; $i <= 10; $i++) echo $i; |
Мы знаем, что нужно 10 и ставим это в условие. Или цикл while
PHP |
$arr = array(1,2,3,4,5,6,7,8,9,10); while(list(,$num) = each($arr)) echo $num; |
Тут мы условием остановки ставим конец массива. А вот если условие выхода определяется прямо в самом цикле и за ранее нам не известно, то тогда и применяется do... while.
В случае разбора результата запроса мы получаем конкретный, оформленный массив данных и значит можем определить условие остановки.
Более того, так как цикл do... while для определения точки выхода обязательно должен сработать хотя бы один раз, то здесь он вообще не уместен. Так как может не оказаться ни одной записи, удовлетворяющей условиям запроса. То есть до запуска этого цикла нужно определить, можно его запускать или нет:
PHP |
if(mysql_num_rows($res)>0) { do{ // Тодасё }while($print = mysql_fetch_array($res)); } |
что является совершенно лишним телодвижением.
По этому применять нужно простой while, без всяких do
Так понятнее?