2009-11-26 1 views
3

Est-il possible et si oui, comment puis-je le faire, de sélectionner toutes les entrées dans une table dans ma base de données et ensuite afficher cinq résultats à la fois dans un groupe.PHP: affiche les entrées de la base de données par groupes de cinq?

Signification: Un exemple est que j'ai 15 dossiers au total dans ma base de données, alors je veux présenter mes données comme ceci:

<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> 

Je ne suis pas complètement sûr si je peux le faire avec Instruction SQL ou je dois écrire une sorte de "faire ... tout" ou une boucle pour récupérer chaque ensemble de données. J'ai aussi pensé à quelque chose avec des tableaux mais je n'ai pas eu de résultat.

Merci

  • Mestika

Répondre

4

Je trouve array_chunk() être assez utile pour ce genre de chose.

// 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; 
} 

Vous pouvez bien sûr faire sans les lire en tout d'abord, mais si vous allez les lire de toute façon, il ne fait pas beaucoup de différence et la version ci-dessus sera probablement beaucoup plus lisible que la mise en œuvre les conditions de rupture appropriées lorsque vous lisez les lignes de la base de données.

1

J'sais si je comprends le droit de question, mais si tu veux regrouper tous les résultats en groupes de 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

Cette réponse assez agréable et d'une solution de raccourci ... merci mon pote –

Questions connexes