Foros del Web » Programando para Internet » PHP »

sumar y sumar

Estas en el tema de sumar y sumar en el foro de PHP en Foros del Web. bueno, ahora estoy en busca de un codigo que sume el campo "tamaño" de todos los registro que tengo en mi db asi se cuantos ...
  #1 (permalink)  
Antiguo 10/02/2004, 13:30
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
Busqueda sumar y sumar

bueno, ahora estoy en busca de un codigo que sume el campo "tamaño" de todos los registro que tengo en mi db
asi se cuantos MB hay disponibles para descargar
hice algo muy rudimentario como tomar ese campo e ir sumandolo... queria saber si alguien conoce una forma mas eficaz

saludos!
  #2 (permalink)  
Antiguo 10/02/2004, 15:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
SELECT SUM(tucampoasumar) as totales FROM tabla

En "totales" (si usas tu clásico $row['nombrecampo'] ..) tendrás bajo ese alias el total sumando.

mas info en las funciones matemáticas de:
www.mysql.com

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/02/2004, 18:38
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
gracias cluster, sos una masa!!!
  #4 (permalink)  
Antiguo 10/02/2004, 18:58
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
don clusto, una pregunta, puse esto :
$result=mysql_query("select sum(tam) from elinks",$link);
$totam=mysql_result($result,0);
echo "(",$totam," MB).";
el problema radica en que me redondea para abajo :(
o sea, sumando a mano todo me da 721,24 y con eso que pastie me da 718 :(
  #5 (permalink)  
Antiguo 10/02/2004, 19:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. que dato guardas en ese campo? .. bytes? (parece que guardas Megabytes con dos decimales? ...

Deberías usar bytes en esos campos y calcular el total en Kb y/o Mbytes .. creo que así sería más preciso tus cálculos .. date cuenta que 1024 bytes = 1 Kbyte .. y así sucesivamente ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 10/02/2004, 20:07
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
bha,, soy un papanatas
en si indeyo elinks:
ed2k://|file|Eye-Trance.04-192kbps-[elinkmusic.com.ar].rar|312065699|22D70D7658EE3BEA976B3750B8D9B324|/
312065699 << serian los bytes, hay forma de extrar eso automaticamente con php en ves de unar un campo aparte?
  #7 (permalink)  
Antiguo 10/02/2004, 20:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues según observo el formato de esa cadena (string) .. el dato que nos interesa está determinado por ese "/" caracter .. pero antes hay dos más en ed2k:// ... así que podría ser (sin uso de expresiones regulares que seguro que sale más "decente" el código ..)

Código PHP:
$datos_elink=explode('/',$tu_elink);
$bytes=$datos_elink[2]; // el 3º .. empezando por 0 ... 
explode() nos entrega un array (puedes verlo con print_r($datos_elink) ...) el dato que nos interesa es el 3º elemento del array (comienzan en 0).

Ahora .. para sumar ese dato .. desde Mysql tienes funciones para trabajar hasta con expresiones regulares para obtener ese dato concreto de ese campo y aplicar SUM() como ya sabes usarlo ..

Otra cosa es que te hagas una pequeña rutina que .. a la hora de crear/actualizar ese dato de tu "e_link" .. obtenga ese dato concreto sobre el tamaño de ese archivo (bajo ese patrón) y le haga el insert/update a ese campo que ya tienes creado para almacenar ese dato.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 10/02/2004, 20:43
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
clusto, no es mejor no hacer ese campo, asi ahorro espacio ???
pd: estoy funciona al pelo!
<?
$link="ed2k://|file|Eye-Trance.04-192kbps-[elinkmusic.com.ar].rar|312065699|22D70D7658EE3BEA976B3750B8D9B324|/";
$datos_news=explode('|',$link);
$tb=$datos_news[3]; // obtengo el 3 campo (los bytes)
$tot=($tb/1024)/1024; // obtengo los MB
echo round($tot); // redondeo los decimales! y muestro el resultado ;)
?>
  #9 (permalink)  
Antiguo 11/02/2004, 06:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. ahí estás en la balanza de: "ahorro espacio" o "ahorro tiempo de proceso" ...

Cuando obtienes ese dato estás haciendo ese proceso .. tal vez si son muchas consultas continuadas y ejecuciones de ese proceso vale la pena hacer ese cálculo una sóla vez (cuando se crea ese dato o bien se modifica) y guardarlo en un campo de tu BD .. Eso te dará facilidades para hacer un "SUM()" como el que querias hacer (aunque igualemente desde SQL podrías hacer todo .. eso si, algo más complejo).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 11/02/2004, 10:41
Avatar de nachopro  
Fecha de Ingreso: noviembre-2003
Ubicación: Haedo, Bs. As.
Mensajes: 290
Antigüedad: 14 años
Puntos: 2
si, es verdad, si bien por pagina se listan 10 enlaces de estos... come muchos recursos
hare un from de carga donde poniendo el link carge los campos
porque del mismo link toma la fecha, los kbps y el tamanio...
te invito a verlo: http://elinkmusic.cjb.net/
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 18:36.