Foros del Web » Programando para Internet » PHP »

Funcion avg datediff consulta mysql ayuda codigo php

Estas en el tema de Funcion avg datediff consulta mysql ayuda codigo php en el foro de PHP en Foros del Web. Hola, a todos, muchas gracias de antemano. Os explico el planteamiento y el problema que tengo. He diseñado una base de datos donde hay 4 ...
  #1 (permalink)  
Antiguo 29/07/2010, 02:18
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Funcion avg datediff consulta mysql ayuda codigo php

Hola, a todos, muchas gracias de antemano. Os explico el planteamiento y el problema que tengo. He diseñado una base de datos donde hay 4 campos (id, salida, entrega, tipo). Id es autonumérico, Salida es la fecha de salida de un papel, entrega es la fecha de entrega de dicho papel, y tipo es el tipo de urgencia que se le da al envio (normal, urgente, extraurgente).
Pues bien, lo que necesito es saber la media de días que tarda en entregarse un papel tipo normal, o uno tipo urgente, o uno tipo extraurgente. En principio haría 3 consultas independientes, que irían luego a una tabla. Pero de la primera consulta no he pasado por el problema que os planteo.
Necesito saber cómo HACER UNA CONSULTA (creo que eso está bien hecho) y sobre todo, COMO REFLEJARLA EN PANTALLA EN LA WEB. En principio la consulta creo que está bien hecha, pero la IMPRESIÓN DEL RESULTADO NO, dado que no me aparece el numero promedio generado en la consulta, sino la palabra "media", tal cual
Este es el código. La conexión a la BD es correcta porque tengo otra tabla con id, usuario y contraseña que va a la perfeccion.
<?
//conexión al servidor
$conec=mysql_connect("localhost","mi usuario","mi clave");
//conexion a la base de datos
mysql_select_db("mi BD");
//consulta
$query = "select avg(datediff(salida,entrega)) as media from fechas where tipo='normal'";
$result = mysql_query($query, $conec) or die ("Error".$query."<br>".mysql_error()."<br>");
$sql_return=mysql_num_rows($result);
if ($sql_return >0){
echo "Media:";
print_r(media);
} else {
echo "Error en la consulta";
}
mysql_close($conec);
?>
Muchas gracias a todos por vuestro tiempo

PD: En la pestaña SQL del phpmyadmin he realizado la consulta tal y como esta puesta ahí y me ha dado el resultado correcto, pero al pasarla y revisar comillas algo me falla.
  #2 (permalink)  
Antiguo 29/07/2010, 02:42
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

En que tipo guardas las datas en la tabla? DATE o DATETIME o cualquier otra?
  #3 (permalink)  
Antiguo 29/07/2010, 02:48
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Prueba esta consulta a ver:
Código PHP:
$query "select avg(DATEDIFF(salida, entrega)) as media from fechas where tipo='normal'"
+ infor de datediff: http://dev.mysql.com/doc/refman/5.1/...ction_datediff

Última edición por Vallu; 29/07/2010 a las 03:13
  #4 (permalink)  
Antiguo 29/07/2010, 03:11
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Muchas Gracias por la prontitud en la respuesta

Acabo de probar tu codigo y me devuelve el siguiente error:

Errorselect avg(DATEDIFF(day, salida, entrega)) as media from fechas where tipo='normal'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'entrega)) as media from fechas where tipo='normal'' at line 1

Los datos estan como DATE, tanto la columna ENTREGA como la columna SALIDA

Eso puede ser por ...?

Muchas Gracias
  #5 (permalink)  
Antiguo 29/07/2010, 03:16
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Lo actualize, prueba ahora.
  #6 (permalink)  
Antiguo 29/07/2010, 03:34
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Ok, ya no marca el error, pero esta igual que al principio, es decir, te adjunto imagen de lo que me aparece.

1) estoy casi convencido que el echo no esta bien o algo y que es problema a la hora de "imprimir en pantalla" el resultado

2) por otro lado, ¿sería mas fácil sacar primero la consulta de datediff (sin avg) y luego dividirlo entre el numero total de filas que cumplan la condicion WHERE?

en principio preferiria la 1 pero si la 2 es mas facil...

Imagen:

  #7 (permalink)  
Antiguo 29/07/2010, 03:42
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Lo de media es porque les estas diciendo que te printe "media".
en vez del print_r(media) pon:
Código PHP:
while ($row mysql_fetch_array($resultMYSQL_ASSOC)) {
    echo 
$row['media'];

  #8 (permalink)  
Antiguo 29/07/2010, 03:42
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

¡Ah! por cierto, si en la sentencia print_r(media), en lugar de "media" pongo $result, me da error del tipo "Resource id #3", por si sirve de algo el dato

Gracias
  #9 (permalink)  
Antiguo 29/07/2010, 03:46
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Pero has probado lo que te puse?
  #10 (permalink)  
Antiguo 29/07/2010, 03:46
 
Fecha de Ingreso: julio-2010
Mensajes: 23
Antigüedad: 14 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

SOLUCIONADO

Bueno. Problema resuelto

MUCHAS GRACIAS, te debo una birrita o lo que se te apetezca.



SIN TU AYUDA hubiera estado mareando la perdiz un buen rato!!!

Te debo una!
  #11 (permalink)  
Antiguo 29/07/2010, 03:48
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 8 meses
Puntos: 26
Respuesta: Funcion avg datediff consulta mysql ayuda codigo php

Nada, yo me lié al principio con la consulta, que pensava que estaba mal y era correcta ;)
Lo de la birrita... pos va a ser k no, no tolero ni me gusta el alcohol xDD Si tienes alguna otra duda estaremos por aquí. ;)

Etiquetas: avg, datediff, funcion, mysql
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 02:08.