Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vmolina

Listar registros em partes

Recommended Posts

Boa tarde pessoal,

 

Tenho 10 registros em uma tabela(Mysql), gostaria de listar esses registros dividindo-os em dois <li></li>.

Tentei através do while, for, foreach mas não encontrei a logica. alguém poderia me dar uma dica de como posso realizar esse procedimento?

 

Desde já agradeço a atenção de todos.

 

Exemplo:

 

<ul>

<li>
Registro 1
Registro 2
Registro 3
Registro 4
Registro 5
</li>

<li>
Registro 6
Registro 7
Registro 8
Registro 9
Registro 10
</li>
</ul>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez existam formas melhores, mas..veja:

 

echo '<ul>';
 
foreach ($dados as $i => $dado) {
    if ($i % 5 == 0) {
        echo '<li>';
    }
 
    echo $dado;
 
    if ($i == count($dados) - 1 || ($i + 1) % 5 == 0) {
        echo '</li>';
    }
}
 
echo '</ul>';

 

Utilizei o índice imaginando que ele seja inteiro, bom mas aí caso não seja bastaria criar um contador qualquer para o controle e pronto.. a lógica em si está no módulo (%), apenas verificamos se valor é divisível por 5 por exemplo para fazermos os fechamentos e aberturas de tags..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode deixar o PHP fazer quase tudo por você também usando array_chunk():

$data = array(
 
    'Record #1',
    'Record #2',
    'Record #3',
    'Record #4',
    'Record #5',
    'Record #6',
    'Record #7',
    'Record #8',
    'Record #9',
    'Record #10',
    'Record #11',
    'Record #12',
    'Record #13',
    'Record #14',
    'Record #15',
    'Record #16',
    'Record #17',
    'Record #18',
    'Record #19',
    'Record #20',
);
 
$data = array_chunk( $data, 5 );

array_walk(
 
    $data,
 
    function( $element ) {
 
        printf(
 
            "<ul>\n    <li>\n        %s\n    </li>\n</ul>\n\n",
 
            implode( $element, "\n        " )
        );
    }
);
O resultado...

<ul>
    <li>
        Record #1
        Record #2
        Record #3
        Record #4
        Record #5
    </li>
</ul>

<ul>
    <li>
        Record #6
        Record #7
        Record #8
        Record #9
        Record #10
    </li>
</ul>

<ul>
    <li>
        Record #11
        Record #12
        Record #13
        Record #14
        Record #15
    </li>
</ul>

<ul>
    <li>
        Record #16
        Record #17
        Record #18
        Record #19
        Record #20
    </li>
</ul>

Caso, porém, o quociente do número de registros pela quantidade de elementos por grupo não seja perfeita, o último grupo será menor, mas acho que você já deva saber disso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Escolha qual das soluções foi a mais apropriada e marque ela como Resolvida. Não faço isso eu mesmo por questões de ética, já que uma das respostas é minha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.