Alternar cores função foreach do php

123 views
Skip to first unread message

Nelson o mesmo

unread,
May 19, 2013, 7:41:21 PM5/19/13
to cakep...@googlegroups.com
Olá turma, como faço para alternar o nome da class de uma table usando o php foreach

http://pastebin.com/5gxEmtQC

ou


obs.
fiz com css mas não ficou legal por motivo do rowspan.
tr:nth-child(even) {
  background-color: #CCDDEA;
}
tr:nth-child(odd) {
  background-color: #99BCD5;
}
 
 
<?php
echo "<table>";
foreach($listar_livro as $livro):
   $classe = class ? class_a : class_b;
   echo "<tr class=" . $classe . "><td rowspan='4'><span class='miniatura'>" . img(base_url("produtos/". $livro->foto)) . "</span></td>";
   echo "<td><strong>Titulo:</strong> " . $livro->titulo . "</td></tr>";
   echo "<tr class=" . $classe . "><td><strong>Autor:</strong> " . $livro->autor . "</td></tr>";
   echo "<tr class=" . $classe . "><td><strong>Categoria:</strong> " . $livro->livrocategoria_nome . "</td></tr>";          
endforeach;
echo "</table>";
?>

Francisco De Assis Pacheco Júnior

unread,
May 19, 2013, 9:41:43 PM5/19/13
to go...@googlegroups.com
Dependendo da situação utilizo assim, porque dependendo da maneira que monto a tabela, se é pelo ajax, ou ao carregar a imagem, utilizando o css definindo em um arquivo externo, o mesmo não funciona.

Já tive problemas utilizando o xajax.

Mas veja se este exemplo pode te ajudar.

define("COR_CLARA","#FFFFFF");
define("COR_ESCURA","#F0F0F0");
define("COR_SELECAO","#CCCCCC");
   
echo "<table>";
foreach($lista as $livro){
$cor = (COR_CLARA == "#fff")?COR_ESCURA:COR_CLARA;
echo '<tr bgcolor="$cor" onmouseover="javascript:this.style.backgroundColor=\''.COR_SELECAO.'\'" onmouseout="javascript:this.style.backgroundColor=\'\'">';
echo '<td>'.$livro["titulo"].'</tr>';
echo '<td>'.$livro["autro"].'</tr>';
echo '</tr>';
}
echo "</table>";

Jonatan Froes

unread,
May 20, 2013, 6:48:05 AM5/20/13
to go...@googlegroups.com
<?php
$aux = 1;
echo "<table>";
foreach($listar_livro as $livro):
   $classe = $aux %2 == 0 ? class_a : class_b;
$aux++;
   echo "<tr class=" . $classe . ">

--
Você recebeu esta mensagem porque está inscrito na Lista "GOPHP" em Grupos do Google.
Para Postar: go...@googlegroups.com
Para Sair do Grupo: gophp-un...@googlegroups.com
Link: http://groups.google.com/group/gophp?hl=pt-BR
---
Você está recebendo esta mensagem porque se inscreveu no grupo "GOPHP" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para gophp+un...@googlegroups.com.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Leandro Araujo

unread,
May 20, 2013, 7:40:00 AM5/20/13
to go...@googlegroups.com
Bom dia ppl,

Seguinte em relação ao problema com ajax deve-se ao fato de que quando se monta ou popula uma tabela depois de a página carregada devemos usar técnicas jquery para interagir com os elementos criados depois do carregamento da páginas que são os elementos dinâmicos.
No caso de fazer isso usando class CSS já definidas em um.css externo deveria pensar em usar a seguinte instrução.

$("table#id_element tbody tr").live({
                    mouseenter: function (event) {
                        $(this).addClass('ui-state-hover');
                    },
                    mouseleave: function (event) {
                        $(this).removeClass('ui-state-hover');
                    }
                });

Com isto ai acho que soluciona seus problemas com jquery/ajax.

Agora se quiser colocar diretamente as classe com foreach segue um exemplo abaixo:

$check = 1;
$class = 'class_a';
echo "<table>";
foreach($listar_livro as $livro){
   $classe = ($class == 'class_a') ? class_b : class_a;
   echo "<tr class=" . $classe . "><td rowspan='4'><span class='miniatura'>" . img(base_url("produtos/". $livro->foto)) . "</span></td>";
   echo "<td><strong>Titulo:</strong> " . $livro->titulo . "</td></tr>";
   echo "<tr class=" . $classe . "><td><strong>Autor:</strong> " . $livro->autor . "</td></tr>";
   echo "<tr class=" . $classe . "><td><strong>Categoria:</strong> " . $livro->livrocategoria_nome . "</td></tr>";          
}
echo "</table>";


Abraços

Leandro Araujo


--
Reply all
Reply to author
Forward
0 new messages