Ver Mensaje Individual
  #3 (permalink)  
Antiguo 05/02/2013, 16:30
Avatar de carlosdurannet
carlosdurannet
 
Fecha de Ingreso: febrero-2011
Ubicación: Aranjuez, Madrid
Mensajes: 13
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Tabla (alternando colores de celdas)

Hola Danicnv. La verdad es que tu tabla, aunque tiene una apariencia sencilla, tiene cierta complejidad. Aquí te dejo el código explicado para poder usar el número final y el número de columnas que quieras:
Código PHP:
<html>
    <head>
        <title>Test PHP</title>
        <style type="text/css">
            table, tr, td{
                border: 1px solid #000;
            }
            .color1{
                background-color: #ddd;
                color: #333;
            }
            .color2{
                background-color: #aaa;
                color: #000;
            }
        </style>
    </head>
    <body>
        <table>
            <tr>
                <?php
                $firstIndex 
1// Controla el fondo de la primera celda de cada fila
                
$actualIndex 1// Controla el fondo de cada celda
                
$columnsNumber 4// Establece el número de columnas
                
$lastNumber 42// Establece el último numero del contador
                
$sumaFila 0// Contiene la suma de los numero de una fila
                
$columnIndex 1// Controla el número de columna (para utilizarla
                // como índice en el array de suma de Columnas)
// Con este for inicializamos un array que almacena la suma
// de los números de cada columna
                
for ($iter 1$iter <= $columnsNumber$iter++) {
                    
$sumaColumnas[$iter] = 0;
                }

                for (
$iter 1$iter <= $lastNumber$iter++) {

                    echo 
$iter $columnsNumber == "<tr>" "";

                    
// Mientras no sea la última columna
                    
if ($iter $columnsNumber != 0) {
                        
// Muestra el número actual
                        
echo '<td class="color' $actualIndex '">' $iter '</td>';
                        
// Alterna el índice para el fondo entre 1 y 2
                        
$actualIndex $actualIndex == 1;
                        
// Suma el número del contador a la suma de la fila
                        
$sumaFila += $iter;
                        
// Suma el número del contador a la suma de la columa
                        
$sumaColumnas[$columnIndex] += $iter;
                        
// Suma 1 al contador
                        
$columnIndex++;

                        
// Si es la última columna
                    
} else {
                        
// Suma el número del contador a la suma de la fila
                        
$sumaFila += $iter;
                        
// Suma el número del contador a la suma de la columa
                        
$sumaColumnas[$columnIndex] += $iter;
                        
// Generamos la última celda de fila para el contador
                        
echo '<td class="color' $actualIndex '">' $iter '</td>';
                        
// Generamos la celda del resultado de la suma de fila
                        
echo '<td>' $sumaFila '</td>';
                        
// Cerramos la columna
                        
echo "</tr>";
                        
// Alternamos el índice del fondo de la primera celda
                        // Si la anterior era 1, ahora es 2 y viceversa
                        
$firstIndex $firstIndex == 1;
                        
// Le asignamos el mismo valor al índice que controla
                        // el fondo de todas las celdas
                        
$actualIndex $firstIndex;
                        
// Reiniciamos el índice de la columna a 1
                        
$columnIndex 1;
                        
// Vaciamos la suma de fila
                        
$sumaFila 0;
                    }
                }
// Si al terminar el contador la fila no tiene celdas suficientes
// la rellenamos con celdas en blanco
                
while ($columnIndex 1) {
                    echo 
"<td>&nbsp;</td>";
                    if (
$columnIndex $columnsNumber == 0) {
                        echo 
"<td>&nbsp;</td></tr>";
                        
$columnIndex 1;
                    } else {
                        
$columnIndex++;
                    }
                }
// Finalmente generamos la fila con los resultados de las
// sumas de cada una de las columnas
                
echo "<tr>";
                for (
$iter 1$iter <= $columnsNumber$iter++) {
                    echo 
"<td>" $sumaColumnas[$iter] . "</td>";
                }
                echo 
"<td>&nbsp;</td></tr>";
                
?>
        </table>
    </body>
</html>
Espero que te valga. Un saludo y ánimo.