Возможно ли, и если да, как я могу это сделать, чтобы выбрать все записи в таблице в моей базе данных, а затем отобразить пять результатов в то время в одной группе.
Значение: пример: у меня всего 15 записей в моей базе данных, тогда я хочу представить свои данные следующим образом:
<div class="1-5">Record[1], Record[2], Record[3], Record[4], Record[5]</div> <div class="6-10">Record[6], Record[7], Record[8], Record[9], Record[10]</div> <div class="11-15">Record[11], Record[12], Record[13], Record[14], Record[15]</div>
Я не совсем уверен, могу ли я сделать это с помощью оператора SQL, или мне нужно написать какой-то «do … while» или loop для получения каждого набора данных. Я также думал о чем-то с массивами, но не получил результата.
благодаря
Я считаю array_chunk()
очень полезным для такого рода вещей.
// pull all the records into an array $query = mysql_query('SELECT * FROM mytable'); $rows = array(); while ($row = mysql_fetch_array($query)) { $rows[] = $row; } // this turns an array into an array of arrays where each sub-array is // 5 entries from the original $groups = array_chunk($rows, 5); // process each group one after the other $start = 1; foreach ($groups as $group) { $end = $start + 4; // $group is a group of 5 rows. process as required $content = implode(', ', $group); echo <<<END <div class="$start-$end">$content</div> END; $start += 5; }
Конечно, вы можете сделать это, не прочитав их все в первую очередь, но если вы все равно их прочтете, это не имеет большого значения, и вышеупомянутая версия, вероятно, будет гораздо более понятной, чем реализация соответствующих условий (-ов) когда вы читаете строки из БД.
Dunno, если я правильно понимаю вопрос, но если вы хотите сгруппировать весь результат в группах по 5:
$i =1; while ($row = mysql_fetch_array($query)) { echo $row['name']."\n"; if ($i % 5 == 0) { echo 'hr'; // Or any other separator you want } $i++; }