Foros del Web » Programando para Internet » PHP »

Problemas Array Suma

Estas en el tema de Problemas Array Suma en el foro de PHP en Foros del Web. Hola a todos , bueno tengo dos problemas , y me gustaria explicarselo a los expertos del foro , para ver si me hechan una ...
  #1 (permalink)  
Antiguo 09/02/2010, 11:43
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Problemas Array Suma

Hola a todos , bueno tengo dos problemas , y me gustaria explicarselo a los expertos del foro , para ver si me hechan una mano.

Problema 1: En una Base de datos tengo 2 tablas que estoy relacionando atravez de php. Lo que realmente intento hacer es que En una de las tablas me seleccione una Id que se contiene en los registros de la segunda tabla es decir: una de las tablas la llamaremos Grupo , la otra la llamaremos Personal. Ahora nos ponemos en situacion.

Grupo: id|encargado_id|puntuacion


Personal: id|id_grupo|puntuacion_personal

Lo que necesito hacer es que en la tabla de Grupo se sumen todos los puntos de las personas que pertenecen al grupo es decir , segun la id_grupo(personal) que haga una suma en un array de todo el select y lo introduzca en puntuacion(grupo)

Tengo hecho esto pero lo que hace es sumarme solo la puntuacion del encargado si alguien me dice donde esta el fallo se lo agradeceria.

Código:
$allyid=mysql_query("SELECT id FROM ugml_alliance WHERE (`ally_owner`='{$user['id']}')");
$consultaallyid=mysql_fetch_array($allyid);
$allyid2=$consultaallyid['id'];

$puntfleet=mysql_query("SELECT fleet_total FROM ugml_users WHERE ally_id='$allyid2'");

$consultaft=mysql_fetch_array($puntfleet);

$allyfleet=$consultaft['fleet_total'];

mysql_query("UPDATE `ugml_alliance` SET `ally_points`='$allyfleet' WHERE id ='$allyid2'");

El segundo problema que tengo es el siguiente:


Tengo 2 tablas a la primera la llamaremos Personal y a la segunda Actividades

Personal: id|id_grupo|puntuacion_personal

Actividades: id_personal|turno|actividad1|actividad2|actividad3 |actividad4

En este caso lo que deseo lograr es que segun el id(personal) haga un array seleccionando la cantidad de actividades(sumando las de todos los turnos de la misma id_personal) y luego multiplicando la actividad por sus puntos correspondientes :

actividad1 = 10puntos
actividad2 = 25puntos
actividad3 = 70puntos
actividad4 = 120puntos

Las actividades son numericas es decir lo que necesito que haga es:

puntos_total=(actividad1_turno1x10)+(actividad2_tu rno1x25).....

(los turnos no me interesa saberlos solo las actividades de toooodos los turnos de un mismo trabajador)

y luego en tabla Personal puntos_personal = puntos_total ( del id de la persona)


Bueno agradeceria muchisimo una ayuda , porque estoy bastante perdido , se me ha hecho un lio en la cabeza con tantas variables y no consigo llevarlo acabo.

Gracias!
  #2 (permalink)  
Antiguo 09/02/2010, 11:50
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 2 meses
Puntos: 27
Respuesta: Problemas Array Suma

Para ambos casos.. solo debes hacer un select, de la tabla personal o actividad.. mientras el id_group = al grupo que quieres calcular, de esta forma te tomara de todos los personales de ese grupo y no de un solo personal..

Por que le manejas que lea el ID de UN solo usuario es que te toma de 1 solo y no de todos..

Para el otro es casi lo mismo

Seria
Código PHP:
Ver original
  1. $sql = mysql_query("SELECT * FROM actividad WHERE id_group='$id_group'");
  2. while ($row = mysql_fetch_assoc($sql))
  3. {
  4.     $suma = $suma + $row['actividad1'] + $row['actividad2'] + $row['actividad3'];
  5. }

Es de probar si te funciona.. pero asi seria un ejemplo rapido..

salu2
  #3 (permalink)  
Antiguo 09/02/2010, 11:57
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problemas Array Suma

Cita:
Iniciado por vicram10 Ver Mensaje
Para ambos casos.. solo debes hacer un select, de la tabla personal o actividad.. mientras el id_group = al grupo que quieres calcular, de esta forma te tomara de todos los personales de ese grupo y no de un solo personal..

Por que le manejas que lea el ID de UN solo usuario es que te toma de 1 solo y no de todos..

Para el otro es casi lo mismo

Seria
Código PHP:
Ver original
  1. $sql = mysql_query("SELECT * FROM actividad WHERE id_group='$id_group'");
  2. while ($row = mysql_fetch_assoc($sql))
  3. {
  4.     $suma = $suma + $row['actividad1'] + $row['actividad2'] + $row['actividad3'];
  5. }

Es de probar si te funciona.. pero asi seria un ejemplo rapido..

salu2


Gracias probare asi , a ver si me da el resultado buscado

y una pregunta , por ejemplo para multiplicarlo automaticamente por los valores que tiene cada una de las actividades en puntos podria hacerse asi o seria incorrecto:

$suma = $suma + $row['actividad1']*10 + $row['actividad2']*25 + $row['actividad3']*70;
  #4 (permalink)  
Antiguo 09/02/2010, 12:04
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problemas Array Suma

solo necesitas usa la funcion SUM(expresion)

Código SQL:
Ver original
  1. SELECT SUM(column_name) FROM TABLE_NAME WHERE condicion;
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #5 (permalink)  
Antiguo 09/02/2010, 12:18
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problemas Array Suma

Cita:
Iniciado por mhax Ver Mensaje
solo necesitas usa la funcion SUM(expresion)

Código SQL:
Ver original
  1. SELECT SUM(column_name) FROM TABLE_NAME WHERE condicion;


bueno he probado con la funcion SUM haciendo esto :

Código:
$puntfleet=mysql_query("SELECT SUM fleet_total FROM ugml_users WHERE (`ally_id`='{$user['ally_id']}')");

mysql_query("UPDATE `ugml_alliance` SET `ally_points`='$allyfleet' WHERE (`id` ='{$user['ally_id']}')");

para intentar solucionar el primer caso que puse , pero me da como resultado "0"

se me ha olvidado algo ?
  #6 (permalink)  
Antiguo 09/02/2010, 12:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 76
Antigüedad: 14 años, 5 meses
Puntos: 2
Respuesta: Problemas Array Suma

Ahora en el primer problema que tenia he probado con esto :

Código PHP:
$allyid=mysql_query("SELECT id FROM ugml_alliance WHERE (`ally_owner`='{$user['id']}')");
$consultaallyid=mysql_fetch_array($allyid);
$allyid2=$consultaallyid['id'];

$puntfleet=mysql_query("SELECT SUM(fleet_total) FROM ugml_users WHERE `ally_id`='$allyid2'");
$consultaft=mysql_fetch_array($puntfleet);

$allyfleet=$consultaft;

mysql_query("UPDATE `ugml_alliance` SET `ally_points`='$allyfleet' WHERE id ='$allyid2'"); 
Pero el resultado que da es que en ally_points da "0"

Donde tengo los fallos :S


Realmente lo que tiene que hacer este codigo es sumar todos los puntos que estan en la tabla ugml_users en la columna fleet_total , con la condicion que sume solo los puntos de los users que tengan como ally_id la del usuario actual de ahi que :

$puntfleet=mysql_query("SELECT SUM(fleet_total) FROM ugml_users WHERE `ally_id`='$allyid2'");
$consultaft=mysql_fetch_array($puntfleet);

$allyfleet=$consultaft;


y luego poner la suma en ugml_suma en la columna ally_points donde la id de la ally sigue siendo $allyid2

de ahi que :

mysql_query("UPDATE `ugml_alliance` SET `ally_points`='$allyfleet' WHERE id ='$allyid2'");


el problema es que el resultado que da es "0"

Última edición por Foxaurus; 09/02/2010 a las 12:41 Razón: añadir
  #7 (permalink)  
Antiguo 09/02/2010, 19:19
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Problemas Array Suma

No estoy seguro de que funcione, pero lo puedes intentar, renombrando el resultado de la funcion suma:

Código SQL:
Ver original
  1. $puntfleet=mysql_query("SELECT SUM(fleet_total) AS suma FROM ugml_users WHERE `ally_id`='$allyid2'");
  2.  
  3.  
  4. while ($row = mysql_fetch_assoc($puntfleet)){ //
  5.   $suma = $row['suma'];
  6. }
  7.  
  8. echo $suma;

Como te dije no estoy seguro, pero creo que no pierdes nada con probarlo.
nos comenta como te fue.

Saludos.
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse

Última edición por mhax; 09/02/2010 a las 19:28
  #8 (permalink)  
Antiguo 09/02/2010, 19:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 21
Antigüedad: 15 años
Puntos: 0
Respuesta: Problemas Array Suma

porque no realizas una función_suma es decir, tomas el valor de la tabla 1 y la tabla dos, los sumas y despues llamas a la función e imprimes, y para la segunda algo similar ;)

Etiquetas: suma
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:42.