Как я могу перемещать указатель 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()
в своем цикле, чтобы прочитать следующую строку.