Foros del Web » Programando para Internet » PHP »

Calcular totales con datos separados por comas

Estas en el tema de Calcular totales con datos separados por comas en el foro de PHP en Foros del Web. Buenas a todos. Tengo una tabla en la que almaceno filas de datos de la siguiente manera. campo1 - campo 2 vip1,vip2,vip3 - 200 vip2 ...
  #1 (permalink)  
Antiguo 21/12/2011, 07:19
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Calcular totales con datos separados por comas

Buenas a todos.
Tengo una tabla en la que almaceno filas de datos de la siguiente manera.

campo1 - campo 2

vip1,vip2,vip3 - 200
vip2 - 50
vip1,vip3,vip9,vip12 - 100

Mi consulta es.... como puedo dividir el campo 2 por el total de los vips?
Y mi siguiente consulta es.... Como puedo sumar el total de todos los vips?
Quiero decir:

En este ejemplo el "vip1" tiene 2 registros. Pues me gustaria saber como puedo calcular el total de esos 2 registros.

Un saludo
  #2 (permalink)  
Antiguo 21/12/2011, 07:46
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Calcular totales con datos separados por comas

Código PHP:
$vips = array();
while(
$datos mysql_fetch_array($result)) {
    
//Mientras recorremos la consulta
    
$separacion explode(','$datos['campo1']); //con esto separamos vip1, vip2, etc!
    
foreach ($separacion as $vip) {
        
//Con esto, recorremos el array separacion
        
$vips[$vip] += (int)$datos['campo2']; //Le sumamos, a, por ejemplo $vips['vip1'] el valor
    
}
}
//Una vez fuera, mostramos los totales
echo 'Totales: <br>';
foreach (
$vips as $vip => $total) echo $vip.': '.$total.'<br>'
Básicamente, lo q hace explode es devolver un array de elementos, segun el separador que le indiques.

Por ejemplo, de "vip1,vip2,vip3" devolvería esto:
Código:
Array
(
    [0] => vip1
    [1] => vip2
    [2] => vip3
)
Despues, los guardas en un array, y le sumas el total al que ya existia (q si no existia, sería 0, asiq no pasa nada!). Al final de recorrer tu consulta, ya tendrias el total de cada uno separado.

Un saludo!
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 21/12/2011, 09:12
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Calcular totales con datos separados por comas

Pues no me saca ingun resultado...

te pongo lo que tengo de codigo a ver si me ayudas un poco mas.


Código PHP:
mysql_select_db($database_comodoro$comodoro);
$query_ver "SELECT * FROM empleada";
$ver mysql_query($query_ver$comodoro) or die(mysql_error());
$row_ver mysql_fetch_assoc($ver);
$totalRows_ver mysql_num_rows($ver); 
Esta es la consulta que hago a la tabla..

Código PHP:
 $vips = array();
  while (
$row_ver mysql_fetch_assoc($ver)); { 
  
$separacion explode(','$row_ver['em_empleada']);
  foreach (
$separacion as $vip) {
      
$vips[$vip] += (int)$row_ver['em_importe'];
  }}

echo 
'Totales: <br>';
foreach (
$vips as $vip => $total) echo $vip.': '.$total.'<br>'
Y esto es lo que tu me has dicho modificado.

Pues no me sale nada...
  #4 (permalink)  
Antiguo 21/12/2011, 09:29
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Calcular totales con datos separados por comas

Prueba esto:
Código PHP:
 $vips = array(); 
 while (
$row_ver mysql_fetch_assoc($ver)); {  
     
$separacion explode(','$row_ver['em_empleada']); 
     echo 
'<pre>';
     echo 
' Resultado del explode:';
     
print_r($separacion);
     echo 
'</pre>';
     foreach (
$separacion as $vip) { 
          echo 
'Forearch para '.$vip.'<br>';
         
$vips[$vip] += (int)$row_ver['em_importe']; 
      }


echo 
'Totales: <br>'
foreach (
$vips as $vip => $total) echo $vip.': '.$total.'<br>'
Así vemos más o menos que es lo q pasa


EDIT: Vale, ya sé cual es tu problema ;)

En esta linea:
Código PHP:
 while ($row_ver mysql_fetch_assoc($ver)); { 
Tienes un ; perverso de la muerte del apocalipsis final. Si lo quitas, deberia funcionar todo ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 21/12/2011, 11:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Calcular totales con datos separados por comas

OK, ya salen los datos... peroooo no hace lo que me gustaria que hiciera.Explico,
Ahora lo que hace es sumar todos los totales (que los suma bien) Pero necesito que me divida por cada fila el total por los VIPS que hayan.
Por ejemplo.
Si en una fila hay VIP1,VIP2,VIP3, VIP4 y en el campo em_importe hay 200,00 me gustaria que el resultado fuera..

VIP1 = 50,00
VIP2 = 50,00
VIP3 = 50,00
VIP4 = 50,00

Y por supuesto que me sumara todas las filas al final...

Lo intento pero no consigo sacarlo.

Un saludo y gracias por la ayuda
  #6 (permalink)  
Antiguo 21/12/2011, 11:50
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Calcular totales con datos separados por comas

Pues, cuando le asignas el importe:
Código PHP:
$vips[$vip] += (int)$row_ver['em_importe']; 
Puedes dividirlo entre el número de elementos en $separacion.

Vendría a ser algo así
Código PHP:
$vips[$vip] += (int)$row_ver['em_importe']/count($separacion); 
Un saludo
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: comas, registro, tabla, totales, calculadora
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 11:39.