Ver Mensaje Individual
  #13 (permalink)  
Antiguo 23/05/2007, 12:04
Avatar de quinqui
quinqui
 
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 9 meses
Puntos: 56
Re: Problema funcion fecha

holas hyperrjas

por lo que veo, no sé por qué no puedes agregar parámetros a la función fecha() que tienes O_O...

revisando tu función más el código ofrecido por GatorV, no sé si esto será problema, pero al menos cuando yo uso la función mysql_query además de la consulta, agrego el objeto de conexión como segundo parámetro:

Código PHP:
$resultado mysql_query($consulta$conexion); 
tengo entendido que si no damos el objeto de conexión, asume automáticamente el último objeto de conexión abierto. sin embargo, cuando trabajamos dentro de una función, creo que ese tipo de referencias se pierden, y puede ser que el resultado de tu consulta simplemente esté dando vacío o erróneo... no sé, habría que probar.

por otro lado, reitero lo que dice GatorV, que en $resultado lo que se guarda no es el valor consultado a la BD, sino un objeto tipo "resultado de consulta a una base de datos". Es un objeto, no un string o número (salvo si la consulta fuera de actualización, donde el resultado sería booleano... pero este no es el caso).

por ello, ante cualquier error, es lógico que te dé como salida de la función el mensaje contenido en el else, pues no hay mayor filtro en cuanto a eso.

en mi opinión personal, te sugiero que hagas la pregunta a la BD y no en PHP. si tienes todos los datos en variables, es cosa de preguntar a la BD, obtener su respuesta en forma de un 1 ó un cero (booleano) y allí definir el mensaje.
me explico:

Código PHP:
function fecha($user_id)
{
 
# OPCIONAL :
 # Utiliza una función aparte para crear la conexion a la BD :
 
$conexion MiFuncionParaConectar();

 
# ESTO SÍ :
 
 # En esta variable devolveremos el resultado de la funcion :
 
$finalizado 0;

 
# Esta es la fecha actual :
 
$hoy date("Y-m-d H:i:s");

 
# Obtienes la fecha de termino de periodo de prueba :
 
$fecha_end "";
 
$res mysql_query("select fecha_end from users wher user_id = '$user_id'"$conexion);

 if (
mysql_num_rows($res) > 0)
 {
  while (
$tmp mysql_fetch_array($res))
  {  
$fecha_end $tmp[0];  }
 }
 
mysql_free_result($res);

 
# Si hay fecha de termino registrada :
 
if ($fecha_end != "")
 {
  
# Consulta si esta dentro o fuera del periodo de prueba
  
$res mysql_query("select if ('$hoy' > fecha_end, 1, 0)"$conexion);

  if (
mysql_num_rows($res) > 0)
  {
    while (
$tmp mysql_fetch_array($res))
    {  
$finalizado $tmp[0];  }
  }
  
mysql_free_result($res);
 }

 
# Retornas desde la función un Boolean :
 
return $finalizado;
}

# En tu pagina :
$prueba_finalizado fecha("usuario");

if (
$prueba_finalizado)
{
 echo 
'<font color=#8F2D0E>';
 echo 
"Tu periodo de prueba a finalizado.<br>";
 echo 
"</font>";
}
else
{
 echo 
'<font color=#8F2D0E>';
 echo 
"Bienvenido<br>";
 echo 
"</font>";

ahora, debo decir que viendo la lógica de la pregunta final, creo que debieran haber tres opciones:
- si el usuario está en período de prueba : $hoy < $fecha_end
- si el usuario acaba de finalizar su período de prueba : $hoy > $fecha_end y $hoy < $fecha_end + 1 día
- si el usuario ya ha superado el período de prueba : $hoy > $fecha + 1 día

creo que esto lo preguntaste en mensajes anteriores, pero bueno, no lo vi en el código, por eso lo comento ^_^

Suerte!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*