Pregunta

Es posible y, de ser así, cómo puedo hacerlo, para seleccionar todas las entradas de una tabla en mi base de datos y luego mostrar cinco resultados en un solo grupo.

Significado: Un ejemplo es que tengo 15 registros en total en mi base de datos, luego quiero presentar mis datos de esta manera:

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

No estoy completamente seguro de poder hacerlo con una declaración SQL o tengo que escribir algún tipo de " do ... while " o bucle para recuperar cada conjunto de datos. También he pensado en algo con matrices, pero no me he levantado con un resultado.

Gracias

  • Mestika
¿Fue útil?

Solución

Encuentro array_chunk () ser bastante útil para este tipo de cosas.

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

Por supuesto, puede hacer esto sin leerlos todos primero, pero si va a leerlos de todos modos, no hace mucha diferencia y la versión anterior probablemente será mucho más legible que implementar la condición de interrupción adecuada (s) a medida que lee las filas de la base de datos.

Otros consejos

No sé si entiendo bien la pregunta, pero si quieres agrupar todos los resultados en grupos 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++;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top