2009-11-26 2 views
3

Возможно ли, и если да, как это сделать, чтобы выбрать все записи в таблице в моей базе данных, а затем отобразить пять результатов в то время в одной группе.PHP: отображать записи из базы данных в группах по пять?

Значение: Пример из что я имею 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 для получения каждого набора данных. Я также думал о чем-то с массивами, но не получил результата.

Благодаря

  • Mestika

ответ

4

я нахожу 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; 
} 

Конечно, Вы можете сделать это, не читая их в первой, но если вы собираетесь прочитать их все равно, это не имеет большого значения и выше версия, вероятно, будет гораздо более удобным для чтения, чем реализация соответствующее условие (ы) нарушения, когда вы читаете строки из БД.

1

Незнайка, если я понимаю, правильный вопрос, но если и хотят, чтобы сгруппировать все результаты в группах 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++; 
} 
+0

Этот ответ очень хороший и ярлык решение ... спасибо дружище –

Смежные вопросы