Переместить указатель mysql_fetch_array

Как я могу перемещать указатель mysql_fetch_array в середине цикла while? что-то вроде этого:

while ($subject = mysql_fetch_array($subject_qry)) { $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; next($subject); $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; return $output; } 

Как насчет этого:

 $counter = 0; while ($subject = mysql_fetch_array($subject_qry)) { if ($counter % 2 == 0) { $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; } else { $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; } // do something with $output here... $counter ++; } 

Или вы можете добиться того же результата с помощью boolean:

 $left = true; while ($subject = mysql_fetch_array($subject_qry)) { if ($left) { $output = "<div class=\"left\" id=\"{$subject['id']}\"></div>"; } else { $output = "<div class=\"right\" id=\"{$subject['id']}\"></div>"; } // do something with $output here... $left = !$left; } 

Есть несколько вещей, которые не имеют смысла в вашем примере. Во-первых, вы не можете использовать имя с mysql_fetch_array при получении результата. Mysql_fetch_array использует числовые индексы, а не имя столбца. Во-вторых, вы не возвращаете значение из цикла while while. Вы либо создадите строку, либо эхом, когда будете продвигаться по циклу.

Вы пробовали что-то вроде этого:

 $counter = 1; while ($subject = mysql_fetch_array($subject_qry)) { echo "<div class=\"left\" id=\"{$subject[0]}\"></div>"; mysql_data_seek($subject_qry,$counter); $subject = mysql_fetch_array($subject_qry); echo "<div class=\"right\" id=\"{$subject[0]}\"></div>"; $counter=$counter+2; } 

Вы не можете сделать это, пока извлекаете данные из базы данных. Вы еще не прочитали следующую строку с mysql_fetch_array() поэтому не можете просто перейти к следующему.

Сначала вам нужно заполнить массив всеми результатами, чтобы манипулировать «индексом» массива. В качестве альтернативы вы можете просто выполнить дополнительный mysql_fetch_array() в своем цикле, чтобы прочитать следующую строку.