Question

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

Signification: Par exemple, j'ai 15 enregistrements au total dans ma base de données, puis je souhaite présenter mes données comme suit:

<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 tout à fait sûr de pouvoir le faire avec une instruction SQL ou de devoir écrire une sorte de "do ... while ..." pendant que " ou boucle pour récupérer chaque ensemble de données. J'ai également pensé à quelque chose avec les tableaux, mais je n'ai pas obtenu de résultat.

Merci

  • Mestika
Était-ce utile?

La solution

Je trouve array_chunk () être très 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;
}

Bien sûr, vous pouvez le faire sans les lire tous en premier, mais si vous voulez tous les lire quand même, cela ne fera pas beaucoup de différence et la version ci-dessus sera probablement beaucoup plus lisible que l'implémentation de la condition de rupture appropriée (s) lors de la lecture des lignes de la base de données.

Autres conseils

Je ne sais pas si je comprends bien la question, mais si vous voulez regrouper tous les résultats dans des 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++;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top