Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Saber si alguien cumpleaños

Estas en el tema de Saber si alguien cumpleaños en el foro de Bases de Datos General en Foros del Web. Hola con mi muyyy basico conocimiento de SQL y PHP hice una funcion para saber quienes de las personas que estan registradas en mi web ...
  #1 (permalink)  
Antiguo 19/04/2004, 07:16
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 3 meses
Puntos: 10
Saber si alguien cumpleaños

Hola con mi muyyy basico conocimiento de SQL y PHP hice una funcion para saber quienes de las personas que estan registradas en mi web cumplen años el dia en que se esta viendo la pagina.
El tema es que lo hace muyyyyyyy lentamente. Osea, la misma pagina sin la funcion se carga en 10 segundos y con la funcion demora 3 minutos!.

Esta es lo que hice:

Código PHP:
$dia=date("d");
$mes=date("m");
$sql="SELECT jugadores.*, equipos.juega, equipos.nombre as equipo from jugadores ";
$sql.="LEFT JOIN equipos ON(jugadores.equipo=equipos.id) ";
$sql.="WHERE MONTH(jugadores.nac)='$mes' AND DAYOFMONTH(jugadores.nac)=' $dia' ";
$sql.="GROUP BY jugadores.nombre, jugadores.dni ORDER BY equipos.juega DESC";
$cum=mysql_query($sql,$conn);
                      
      if(
mysql_num_rows($cum)!=0){
        
            
FELIZ CUMPLEAÑOS !!!
             
            while(
$rs=mysql_fetch_array($cum)){
                  
$edad=(date("Y")*substr($rs["nac"], 04)*1);
                  
$nombre=explode(", "$rs["nombre"]);                      
                  echo 
$nombre[1]." ".$nombre[0]." del equipo ".$rs["equipo"]."  cumple ".$edad." años (".$jug.")";
            }
    
       } 
Alguien conoce alguna forma mas rapida y sencilla?
  #2 (permalink)  
Antiguo 19/04/2004, 09:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
mm bueno .. prácticamente todo lo que usas de PHP para formatear ese nombre y hacer el cálculo de tu edad podrías hacerlo integramente en SQL y de ahí le pasarías todo el proceso a Mysql (tu BD) y no a medias entre PHP y tu BD ... (sería cosa de probarlo y ver los resultados).

Por ejemplo ..

El cáculo de la edad podría ser con sentencias SQL tipo:

SELECT name, birth, CURDATE(), (YEAR(CURDATE())-YEAR(birth))-(RIGHT(CURDATE(),5)<RIGHT(birth,5)) AS age

(extraido de:)
http://dev.mysql.com/doc/mysql/en/Da...culations.html

Como veras se aplica ese calculo y se crea un alias "age" de nombre para que lo accedas como tus otros $rs['age'] ...

Y lo que haces con el nombre en PHP pudes usar las funciones própias de Mysql para trabajar con cadenas (strings):

http://dev.mysql.com/doc/mysql/en/String_functions.html

Por lo menos el cálculo sobre Mysql de la edad debería aligerar el tiempo de proceso total ...

Si tienes dudas sobre el uso de esas sentencias SQL usa el foro temático de "Base de datos".

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 19/04/2004, 09:47
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 3 meses
Puntos: 10
Muchas gracias Cluster por tu respuesta.
Si bien lo que me decis ayudaria, a mi me parece que el problema es mas que nada en la parte:

$sql.="WHERE MONTH(jugadores.nac)='$mes' AND DAYOFMONTH(jugadores.nac)=' $dia' ";

Ya que la consulta no deberia dar mas de 4 o 5 resultados por dia, por lo que no creo que hacer el calculo de la edad y separar el nombre realmente haga el script tan lento (en mi modesta opinion)
  #4 (permalink)  
Antiguo 19/04/2004, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Pues .. si no lo pruebas no saldrás de dudas .. no crees? ..

Sólo considera también que estás usando 2 tablas y uniones .. más un agrupamiento .. así que todo eso sumado a la condición es normal que tarde su tiempo dependiendo del nº total de registros de tus tablas, no de los resultados que pueda arrojar.

Creo que llegado este punto es mejor que consultes en el foro de Base de datos (si lo deseas pide que se te mueva el mensaje al foro indicado) para ver si hay alguna sentencia SQL más optima para hacer ese tipo de consultas SQL.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/04/2004, 21:42
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 3 meses
Puntos: 10
me parece bien...

Bases de datos.... alla vamos!!!


PD: Cluster gracias por tu ayuda
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:31.