Foros del Web » Programando para Internet » PHP »

Verificar que fecha ingresada no sea anterior a hoy

Estas en el tema de Verificar que fecha ingresada no sea anterior a hoy en el foro de PHP en Foros del Web. holas, estoy haciendo un formuario en pag1.php en el que ingreso en un textfield una fecha en formato sql: año-mes-dia, y la mando a pag2.php ...
  #1 (permalink)  
Antiguo 02/12/2006, 14:28
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
Desacuerdo Verificar que fecha ingresada no sea anterior a hoy

holas, estoy haciendo un formuario en pag1.php en el que ingreso en un textfield una fecha en formato sql: año-mes-dia, y la mando a pag2.php donde debo comprobar que la fecha ingresada no sea anterior a hoy.

he tratado por medio de la funcion curdate pero no me ha resultado hasta el momento. (cuando imrimo $actual en la pantalla me aparece Resource id #7)

Como deberia ser la condicion correcta para validar que la fecha no sea anterior a hoy?

esta es mi pag2.php
Código PHP:
$date $_POST["date"];

echo 
"fecha actual:";
$actual mysql_query(" SELECT CURDATE()");
echo 
$actual;
echo 
"<br>fecha ingresada: $date</b><br>";

if (
$date<$actual)
{
   echo
"Ingrese una fecha valida";
}
else
{
   
//INGRESAR A MI BD

  #2 (permalink)  
Antiguo 02/12/2006, 14:49
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
A ver...

La fecha que ingresa esa persona es :

Código PHP:
$date $_POST["date"]; 
Y dices que es en formato año-mes-dia, con lo cual el valor es algo asi: 2006-12-02, verdad?

Bueno, para obtener la actual:

Código PHP:
 $actual date ("Y-m-d"); //Esto dara la fecha actual 2006-12-02 
Ahora, para comparar... los cálculos se hacen con segundos. Sabemos que una hora son 3600 segundos, y un dia (24 horas) son 24*3600. ¿Hasta aquí bien, no?

Código PHP:
if ($date $actual-(24*3600)) {

.... 
Eso comprueba si date es inferior a ACTUAL menos 24 horas. Aunque eso no quiere decir que sea ayer.... quiere decir que hayan pasado 24 horas, ten en cuenta que la hora influye.

saludos
  #3 (permalink)  
Antiguo 02/12/2006, 17:14
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
De acuerdo Otro mètodo

Que tal??

Bueno pues yo tengo otra idea:

Supongamos que la fecha de hoy la guardas en $hoy="2006-12-02";, listo?

Cuando tomas lo que viene del post fecha $fechaing=$_POST['fecha']. Pues haces un explode con las dos, y comparas el dia el mes y el año.

$fechaini=explode("-",$hoy);
$fechafin=explode("-",$fechaing);

if($fechaini[0]<$fechafin[0]&&$fechaini[1]<$fechafin[1]&&$fechaini[2]<$fechafin[2])

{
echo "Error en el ingreso de fecha";
}
else
{
//siga
}

Espero me hayas entendido. Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #4 (permalink)  
Antiguo 02/12/2006, 20:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
xcias a los dos por las respuestas, tu solucion david_M_G me servira mucho para cuando necesite comprobar 24 horas desde algun evento , pero para lo que necesito ahora me acomoda mas la solucion de Carxl.

me quedo super clara la manera en que lo hiciste, como hace poco aprendi como usar explode no se me habia ocurrido, pero me queda un unico detalle que aclarar antes de hacerla, como rescato la fecha actual con la funcion CURDATE()?? porque de la manera en que lo ihce al parecer no me la rescata (pq al imprimir me sale resurce id#7)
  #5 (permalink)  
Antiguo 02/12/2006, 20:47
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 8 meses
Puntos: 77
Cita:
Iniciado por gazuzax Ver Mensaje
xcias a los dos por las respuestas, tu solucion david_M_G me servira mucho para cuando necesite comprobar 24 horas desde algun evento , pero para lo que necesito ahora me acomoda mas la solucion de Carxl.

me quedo super clara la manera en que lo hiciste, como hace poco aprendi como usar explode no se me habia ocurrido, pero me queda un unico detalle que aclarar antes de hacerla, como rescato la fecha actual con la funcion CURDATE()?? porque de la manera en que lo ihce al parecer no me la rescata (pq al imprimir me sale resurce id#7)
Código PHP:
$actual mysql_query(" SELECT CURDATE()");
$fechaactual=mysql_fetch_row($actual);
echo 
$fechaactual[0]; 
:)
  #6 (permalink)  
Antiguo 02/12/2006, 21:43
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
muchas xicas darkasecas me funciono muy bien tu solucion, te pasaste
  #7 (permalink)  
Antiguo 02/12/2006, 22:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
aunque muy buena la idea de Carxl. no me funciona la condicion y no se pq. por mas que reviso, no veo nigun error, y de todas maneras imprimi cada variable para ver como estaban y se muestran correctas en la pantalla (yo solo cambie los "y" por "o" de la cond original)

¿Que hay que cambiarle?
Código PHP:
$fechaini=explode("-",$hoy);
$fechafin=explode("-",$fechaing);

if(
$fechaini[0]<$fechafin[0] || $fechaini[1]<$fechafin[1] || $fechaini[2]<$fechafin[2]) //NO FUNCIONA
{
echo 
"Error en el ingreso de fecha";


Última edición por gazuzax; 02/12/2006 a las 22:42
  #8 (permalink)  
Antiguo 03/12/2006, 07:23
Avatar de david_M_G  
Fecha de Ingreso: febrero-2005
Mensajes: 938
Antigüedad: 19 años, 9 meses
Puntos: 20
Estoy pensando que si le restas 24 horas siempre dará como resultado AYER. Por lo tanto sí serviría el código que te he dado arriba, creo.
  #9 (permalink)  
Antiguo 03/12/2006, 10:47
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 21 años, 11 meses
Puntos: 2
y si mejor utilizan strtotime(), onda

Código PHP:
$fecha $_POST['fecha']; //en formato Y-m-d (opcional H:i:s)
$hoy date("Y-m-d");

if (
strtotime($hoy) > strtotime($fecha)) {
echo 
"la fecha dada es inferior a la actual";

saludos y espero te sirva, de todas maneras mas info en www.php.net/strtotime

saludos
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #10 (permalink)  
Antiguo 03/12/2006, 11:09
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
No hay caso :-(

david_M_G probe tambien tu solucion pero no se pq no me funciona niguna, esta todo bien y aun asi no me reconoce la condicion, quizas debo debo cambiar algo de php.ini???

ayudenme porfavor les dejo aki mi un pequño script de prueba, me avisan si les funciona o que estoy haciendo mal

1.php
Código:
<html>
<head>
<title>1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>&nbsp;</p>
<form name="form1" method="post" action="2.php">
  Fecha 
  <input type="text" name="date" value="2006-12-01">
  Sigan el formato para probarlo (000-00-00) 
  <input type="submit" name="Submit" value="probar">
</form>
<p>&nbsp; </p>
</body>
</html>
2.php (aqui tengo las dos soluciones que me dieron, solo comentan una y descomentan la otra para probarlas)
Código:
<html>
<head>
<title>2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">
                      <?
$date = $_POST["date"];
$actual = date("Y-m-d");


//FORMA1
if ($date < $actual-(24*3600)) 	
{
	echo"Ingrese una fecha valida";
}
else
{
	echo"Continuó a else";
}

/*
//FORMA2
$hoy=explode("-",$actual);
$fecha_ing=explode("-",$date);
if($hoy[0]<$fecha_ing[0] || $hoy[1]<$fecha_ing[1] || $hoy[2]<$fecha_ing[2])
{
	echo"Ingrese una fecha valida";
}
else
{
	echo"Continuó a else";
}
*/
?>
</body>
</html>
SALU2

Quest acabo de ver tu mensaje, lo prbare enseguida
  #11 (permalink)  
Antiguo 03/12/2006, 11:22
 
Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 1 mes
Puntos: 0
amigos, me acabo de dar cuenta del error...
no profundice en la condicion de Carlx y hay que hacerle un pequeño cambio:
en vez de esto:
Cita:
if($hoy[0]<$fecha_ing[0] || $hoy[1]<$fecha_ing[1] || $hoy[2]<$fecha_ing[2])
coloquen esto:
Cita:
if($fecha_ing[0]<$hoy[0] || $fecha_ing[1]<$hoy[1] || $fecha_ing[2]<$hoy[2])
xcias por todos los post y que ojala a alguien mas le sirva la solucion
Sludos a todos
  #12 (permalink)  
Antiguo 04/12/2006, 03:06
 
Fecha de Ingreso: octubre-2005
Mensajes: 9
Antigüedad: 19 años, 1 mes
Puntos: 0
Buenas, yo propondría la solución de Quest o algo del estilo tipo:

$fecha=strtotime($_POST[date]);
$actual=mktime(0,0,0);

if($fecha < $actual){
// la fecha es inferior
}else{
// lo que haya que hacer
}
  #13 (permalink)  
Antiguo 04/12/2006, 12:56
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
Es por la condiciòn

Hola, no te lo hace por que yo te dije mal la comparaciòn. Es con un "or" ò "||".
Con cualquiera de esos caracteres te funciona, no era con "&&". Perdon por el error.

Saludos

Con date("a-m-y"), recuperas la fecha actual.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 22:38.