miércoles, 10 de agosto de 2011

Sumar los valores de filas y columnas de una tabla en PHP

Ayer, un amigo me preguntó:
¿Cómo puedo obtener la sumatoria de los valores de una fila? y además,
¿Cómo puedo obtener la sumatoria de los valores de la columna?

También me comentó que no había encontrado una solución después de realizar varias búsquedas en Google, no tuve más que crearla y compartirla, aquí el código de PHP:

<?php

/* VARIABLES
$nf = número de filas
$nc = número de columnas
$ct= total de columna
$ft= total de fila
$cf = total de columna sumatoria de fila
*/
$cf='';
$ft='';
$c='';
$ct[]=''; 
echo '<table>';
for ($i = 0; $i <= $nf; $i++) {
echo '<tr>';
for ($c = 1; $c <= $nc; $c++) {
echo '<td>'.$c.' </td>';
$ft+=$c;
     if ( ! isset($ct[$c])) {
      $ct[$c]= null;
     }
$ct[$c]+=$c;
}

echo '<td style="background:yellow">'.$ft.' </td>';
$cf+=$ft;
$ft=0;
echo '</tr>';

}
echo '<tr>';
for ($c = 1; $c <= $nc; $c++) {
echo '<td style="background:lime">'.$ct[$c].'</td>';
}
echo '<td style="background:lime">'.$cf.'</td>';
echo '</tr></table>';
?>

Breve explicación:
  • Los valores de la tabla se toman del contador del FOR, pero puede ser aleatorio o extraídos de una base de datos.
  • La tabla es flexible, sólo basta con cambiar el número de filas (variable $nf) y el número de columnas (variable $nc) para crecer o decrecer el tamaño de la tabla.
  • Coloqué un color representativo para las sumatorias: amarillo para la suma de los valores de la fila, verde para la suma de los valores de las columnas.

El resultado:


12 comentarios:

Anónimo dijo...

Me sale un error T_T. Romelia_pink@hotmail.com

JAZAD dijo...

Solo tuve que descargar una version mas antigua del apache y de PHP. Gracias!!!!! :D

Héctor Guedea dijo...

De nada, pero ¿qué error te salía? para así modificarlo y funcione correctamente para todas las versiones de PHP.

JAZAD dijo...

Dice que las variables ft, ct no están definidas, pero las declaro donde se declara nc y nf y marca otros errores.

1er error:
Undefined variable: ft in C:\wamp\www\tabla.php on line 17

Undefined variable: ct in C:\wamp\www\tabla.php on line 18

2do error:

Warning: Cannot use a scalar value as an array in C:\wamp\www\tabla.php on line 21

La versión en la que marca error es la 5.3.5 que es la que viene en el wampserver 2.1. Al instalar una versión mas vieja de PHP que es la 5.0 marca error por la versión de apache.

Unknown dijo...

podrias dar un ejemplo con variables dinamicas traidas de una base de datos

muchas gracias de antemano!

Unknown dijo...

Ese error de :
Undefined variable: ft in C:\wamp\www\tabla.php on line 17

Undefined variable: ct in C:\wamp\www\tabla.php on line 18

cuando declaras la variable"$ft",solo pones un @ antes de la variable declarada asi "@$ft".

Saludos.

Unknown dijo...

Alguien me podría ayudar? Tengo n registros en una columna, quiero sumar los registro cada 8(registros) ...y el total se guarde en otra columna o tabla no importa(pero que se sumen cada 8!!!)

Unknown dijo...

Alguien me podría ayudar? Tengo n registros en una columna, quiero sumar los registro cada 8(registros) ...y el total se guarde en otra columna o tabla no importa(pero que se sumen cada 8!!!)

Anónimo dijo...

Hola
Gracias por el aporte
¿por que podría ser que me de el siguiente error:
Undefined offset:
con la linea
$ct[$c]+=$c;
?
Gracias por el aporte

Héctor Guedea dijo...

Hola a todos.
En vista de que tuvieron el mismo problema. Aquí les va actualizado el código:


/* VARIABLES

Se declararon las variables, aún cuando sean nulas
*/

$nf=5;
$nc=5;
$cf='';
$ft='';
$c='';
$ct[]='';


/*Se agregó este IF, si no tiene valor, agregará como nulo, para evitar el offset*/
if ( ! isset($ct[$c])) {
$ct[$c]= null;
}
$ct[$c]+=$c;
}

MiguelitoFilms dijo...

Hola
esta era la que no conseguía encontrar: $ct[]="";
¿Por cierto, como se podrían sumar las diagonales, tanto las ascendentes como las descendentes?
es decir

a b c d
g h i j
m n o p
s t u v

s
m+t
g+n+u
a+h+o+v
b+i+p
c+j
d

a
g+b
m+h+c
s+n+i+d
t+o+j
u+p
v

gracias por el aporte

yon dijo...

Tengo un txt con una tabla y necesito sumar los valores de una columna.(Encontrar el total).
Soy nuevo en programación y le agradecería su ayuda.
Saludos! y gracias por el código!