Foros del Web » Programando para Internet » PHP »

Ayuda con función

Estas en el tema de Ayuda con función en el foro de PHP en Foros del Web. Upss. Chicos ayudenme ya no se que hacer para que esto me funcione. El código es este: Código PHP: function  UsersBirthday (){    $fechaactual  =  ...
  #1 (permalink)  
Antiguo 09/05/2004, 22:48
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ayuda con función

Upss. Chicos ayudenme ya no se que hacer para que esto me funcione. El código es este:
Código PHP:
function UsersBirthday(){
  
$fechaactual date("Y-m-d");
  
$sql_query "SELECT * FROM reynierpm_usuarios";
  
$result mysql_query($sql_query) or die("No se ha podido ejecutar la consulta: ".$sql_query.". MySQL ha dicho: ".mysql_error());
  
$fetchrow mysql_fetch_assoc($result);

  if(
mysql_num_rows($result)!=0){
   
$sql "SELECT DATEDIFF(".$fechaactual.",".$fetchrow['fecha_nacimiento'].") as years";
   
$res mysql_query($sql) or die("No se ha podido ejecutar la consulta: ".$sql.". MySQL ha dicho: ".mysql_error());
   
$fetch mysql_fetch_assoc($res);
   
$bool true;
  }else{
   if((
$fechaactual $fetchrow['fecha_nacimiento'])&&($bool)){
    echo 
wordwrap("FELICIDADES ".$fetchrow['nombre'].". Hoy cumples ".$fetch['years']." años",20);
   }else{
    echo 
"No hay usuarios que cumplan año en esta fecha o no tenemos usuarios registrados";
   }
  }
 } 
La cosa es que quiero calcular la edad del usuario. Ya he corrido mi código paso a paso y todas las variables toman bien su valor. Me he chequeado el uso del DATEDIFF de MySQL y creo que esta bien. El error en cuestión es este:
Cita:
No se ha podido ejecutar la consulta: SELECT DATEDIFF(2004-05-09,1980-09-05) as years. MySQL ha dicho: 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 '(2004-05-09,1980-09-05) as years' at line 1
si se dan cuenta estan las dos fechas así que no se porque no calcula. Ahhh mi versión de MySQL es 4.0.18 porque estuve leyendo que DATEDIFF se adiciono a partir de la versión 4.0.11
¿Qué estoy haciendo mal? porque ya me hecha humo la cabeza
Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 10/05/2004, 01:29
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si no me equivoco, las fechas son cadenas, asi que deben ir entre comillas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 10/05/2004, 11:10
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Bueno josemi

Si te refieres a lo de las comillas ya las arreglé y me sigue dando el mismo error.
Código PHP:
function UsersBirthday(){
  
$fechaactual date("Y-m-d");
  
$sql_query "SELECT * FROM reynierpm_usuarios";
  
$result mysql_query($sql_query) or die("No se ha podido ejecutar la consulta: ".$sql_query.". MySQL ha dicho: ".mysql_error());
  
$fetchrow mysql_fetch_assoc($result);

  if(
mysql_num_rows($result)!=0){
   
$sql "SELECT DATEDIFF([COLOR=darkblue]'".$fechaactual."','".$fetchrow['fecha_nacimiento']."'[/COLOR] ) as years";
   
$res mysql_query($sql) or die("No se ha podido ejecutar la consulta: ".$sql.". MySQL ha dicho: ".mysql_error());
   
$fetch mysql_fetch_assoc($res);
   
$bool true;
  }else{
   if((
$fechaactual $fetchrow['fecha_nacimiento'])&&($bool)){
    echo 
wordwrap("FELICIDADES ".$fetchrow['nombre'].". Hoy cumples ".$fetch['years']." años",20);
   }else{
    echo 
"No hay usuarios que cumplan año en esta fecha o no tenemos usuarios registrados";
   }
  }
 } 
Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 10/05/2004, 13:27
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Nada

Ya he probado de varias maneras y nada y lo mas lindo de todo es que las dos fechas tienen sus valores por lo que debía realizar el calculo. Alguna idea de que esta pasando. ?

Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 10/05/2004, 21:03
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues ya lo he solucionado pero no del todo

La cosa es que ya lo he solucionado. No era error de mi código sino de mi versión de MySQL me baje la 4.1.1a alpha y estoy trabajando con ella. Ahora el código me ha quedado así:
Código PHP:
function UsersBirthday(){
  
$fechaactual date("Y-m-d");
  
$dia_actual date("d");
  
$sql_query "SELECT * FROM reynierpm_usuarios";
  
$result mysql_query($sql_query) or die("No se ha podido ejecutar la consulta: ".$sql_query.". MySQL ha dicho: ".mysql_error());
  
$fetchrow mysql_fetch_assoc($result);

  if(
mysql_num_rows($result)!=0){
   
$sql "SELECT DATEDIFF('".$fechaactual."','".$fetchrow['fecha_nacimiento']."') as years";
   
$res mysql_query($sql) or die("No se ha podido ejecutar la consulta: ".$sql.". MySQL ha dicho: ".mysql_error());
   
$fetch mysql_fetch_assoc($res);
   
$dia_en_bd explode("-",$fetchrow['fecha_nacimiento']);
   list(
$ano,$mes,$dia) = $dia_en_bd;
   if(
$dia_actual $dia){
    echo 
wordwrap("FELICIDADES ".$fetchrow['nombre'].". Hoy cumples ".$fetch['years']." años",20);
   }
  }else{
    echo 
"No hay usuarios que cumplan año en esta fecha o no tenemos usuarios registrados";
   }
  } 
pero me queda una duda todavía si voy a restar esta fechas:
Cita:
2004-05-10 -> esta es la fecha actual
1980-05-09 -> esta es la fecha de nacimiento del usuario
me da este número
Cita:
FELICIDADES Reynier Pérez Mira. Hoy cumples 8767 años
que según la lógica es algo imposible. Se les ocurre alguna forma para poder calcular la edad del usuario.

Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 10/05/2004, 21:53
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Ya resolví

Chicos gracias a todos ya resolví mi problema. El código es este:
Código PHP:
function UsersBirthday(){
  
$fechaactual date("Y-m-d");
  
$year_actual date("Y");
  
$sql_query "SELECT * FROM reynierpm_usuarios";
  
$result mysql_query($sql_query) or die("No se ha podido ejecutar la consulta: ".$sql_query.". MySQL ha dicho: ".mysql_error());
  
$fetchrow mysql_fetch_assoc($result);

  if(
mysql_num_rows($result)!=0){
   
$dia_en_bd explode("-",$fetchrow['fecha_nacimiento']);
   list(
$ano,$mes,$dia) = $dia_en_bd;
   
$edad $year_actual $ano;
   if(
$dia_actual $dia){
    echo 
wordwrap("FELICIDADES ".$fetchrow['nombre'].". Hoy cumples ".$edad." años",20);
   }
  }else{
    echo 
"No hay usuarios que cumplan año en esta fecha o no tenemos usuarios registrados";
   }
  } 
Salu2
__________________
Ing. Reynier Pérez Mira
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 17:23.