Como mandar imprimir 3 colunas de tabelas repetidas em um foreach?

394 views
Skip to first unread message

Pedro Soares

unread,
Oct 15, 2013, 6:12:57 PM10/15/13
to cakep...@googlegroups.com
Boa noite Pessoal,

Estou precisando imprimir na tela do usuário, várias imagens com o nome de 1,2,3,4,5,6 etc..
Preciso que a cada 3 colunas, as imagens se repitam, por exemplo:

1   2   3
1   2   3
1   2   3
4   5   6
4   5   6
4   5   6
7   8   9
7   8   9
7   8   9

Sempre 3 vezes repetidos na mesma coluna vertical, podem me ajudar?

Pensei no seguinte:
table
<tr>
for($x =0;$x>3,$x++){
   $x++;
   <td>echo $this->Html->file('imagemx.jpg'')</td>
}
</tr>

Pedro Soares

unread,
Oct 16, 2013, 4:20:19 PM10/16/13
to cakep...@googlegroups.com
Galera, quase consegui..

Só consigo fazer o seguinte

111
111
111
222
222
222
333
333
333

Poderiam me ajudar??

Alexandre Kleinubing

unread,
Oct 16, 2013, 4:26:53 PM10/16/13
to cakep...@googlegroups.com
Não vou postar código, mas vai uma luz manual aí:

Faça seu while/foreach para percorrer o vetor de dados...
Vá guardando o que seria a impressão das celulas, em uma variavel.
A cada 3 dados, faça as quebras na tabela.
Logo apos a quebra da tabela, faça outro loop de 3, para imprimir a variavel que vc estava guardando no while/foreach...

ele ira fazer um loop de 3, dentro do looping de dados, a cada 3 dados "andados"...

Esta aí o caminho das pedras xD
[]'s


--
--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT
---
Recebeu esta mensagem porque está inscrito no grupo "CakePHP Tuga" dos Grupos do Google.
 
Para anular a subscrição deste grupo e parar de receber emails deste grupo, envie um email para cakephp-pt+...@googlegroups.com.
Para publicar uma mensagem neste grupo, envie um e-mail para cakep...@googlegroups.com.
Visite este grupo em http://groups.google.com/group/cakephp-pt.
Para mais opções, consulte https://groups.google.com/groups/opt_out.

Pedro Soares

unread,
Oct 16, 2013, 4:28:08 PM10/16/13
to cakep...@googlegroups.com
Nó obrigado! Vou fazer aqui e posto os resultados!

Pedro Soares

unread,
Oct 16, 2013, 5:09:25 PM10/16/13
to cakep...@googlegroups.com
<?php
echo '<table width="100%" border="1" cellspacing="0" cellpadding="0">';
$contador = 1; 
    while ($contador <= 10) { 
        if($contador % 2){
            for($x=0;$x<2;$x++){
                echo "<tr><td>Registro $contador</td>";
            }
        }else{
            echo "<td>Registro $contador</td></tr>";
        }
        ++$contador;
    }
echo '</table>';
?>

Está quase! ´Pode me ajudar Alexandre?

Alexandre Kleinubing

unread,
Oct 16, 2013, 7:29:18 PM10/16/13
to cakep...@googlegroups.com
Totalmente sem logica aushaushauhs
Vamos lá....
Isso não é duvida de cakephp, mas vou tentar te responder por aqui...

Seu while esta contando de 1 até 10
Seu IF vê se é par (não sei porque, já que vc quer quebrar em 3 itens)
Se for par, ele repete 2 vezes (FOR < 2) a abertura de linha da tabela... O que jah eh errado, como abre duas vezes, sem ter fechado?
Se for impar, vc fecha a linha da tabela... tbm tah errado, ele teria que ser multiplo de 3 pra fechar... anyway...
Depois vc incrementa o contador (++), que a proposito esta no lugar errado, vc jah escreveu ele umas 3 vezes xD

Vou te mostrar um caminho, que não é o melhor, mas é o primeiro a se pensar...

Digamos que vc vai escrever de 1 até 12 em uma tabela, no maximo 3 colunas, e repetindo cada linha 3 vezes....
O resultado tem q ser assim:
1 2 3
1 2 3
1 2 3
4 5 6
4 5 6
4 5 6
7 8 9
7 8 9
7 8 9
10 11 12
10 11 12
10 11 12

Certo?

Passo 1:
Então vamos fazer um FOR de 1 até 12 ($x = 1, $x<=12,$X++)...
Deve ser MENOR ou IGUAL pq vc precisa ir ATÉ o 12, ou seja, tem q ser igual a 12...

Passo 2:
Inicie uma variável fora do while, com: "<table><tr>".
Cada vez que o while executar, vc CONCATENA "<td>$x</td>" na variável anterior...

Passo 3:
Dentro do while, tambem, coloque um contador para saber quando chegar ao "3", fechar a linha da tabela e abrir uma nova...

Passo 4:
Depois de todo o while, basta imprimir a variavel que esta guardando tudo... :D


Alexandre Kleinubing

unread,
Oct 16, 2013, 7:52:36 PM10/16/13
to cakep...@googlegroups.com
Se com a explicação anterior vc n conseguir, acesse http://phpfiddle.org/lite/code/zj9-36d e click em RUN... Mas tente fazer por conta própria, ok?

Pedro Soares

unread,
Oct 22, 2013, 11:50:39 AM10/22/13
to cakep...@googlegroups.com
Obrigado alexandre, entendi o código e até consegui váriar, infelizmente tive que abandonar este, pois, preciso gerar um pdf disso. Estou utilizado o fpdf mas estou com o mesmo problema.
Reply all
Reply to author
Forward
0 new messages