Pergunta

É possível e em caso afirmativo, como posso fazê-lo, para selecionar todas as entradas em uma tabela no meu banco de dados e, em seguida, exibir cinco resultados no momento em um grupo.

Significado: Um exemplo é que eu tenho 15 registros total no meu banco de dados, então eu quero apresentar meus dados como este:

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

Eu não estou completamente certo se eu posso fazê-lo com uma instrução SQL ou eu tenho que escrever algum tipo de "fazer ... enquanto" ou loop para recuperar cada conjunto de dados. Eu também pensei em algo com matrizes, mas não se levantou com um resultado.

Graças

  • Mestika
Foi útil?

Solução

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

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

Você pode, naturalmente, fazer isso sem lê-los todos em primeiro lugar, mas se você estiver indo para ler todos eles de qualquer maneira, não faz muita diferença e a versão anterior será, provavelmente, muito mais legível do que implementar a condição pausa apropriada (s), enquanto você lê as linhas da DB.

Outras dicas

Não sei se eu entendo o direito pergunta, mas se vc quiser grupo todo o resultado em 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top