Foros del Web » Programando para Internet » PHP »

problema en comparar dos fechas

Estas en el tema de problema en comparar dos fechas en el foro de PHP en Foros del Web. tengo el siguiente codigo Código PHP: if ((isset( $_POST [ "MM_insert" ])) && ( $_POST [ "MM_insert" ] ==  "form1" )) { $fecha1  = isset(  $_POST [ 'fecha_adq' ] ) ?  $_POST [ ...
  #1 (permalink)  
Antiguo 23/07/2011, 21:56
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 3 meses
Puntos: 3
problema en comparar dos fechas

tengo el siguiente codigo
Código PHP:
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {

$fecha1 = isset( $_POST['fecha_adq'] ) ? $_POST['fecha_adq'] : '';
$fecha2 =  isset( $_POST['fecha_gar'] ) ? $_POST['fecha_gar'] : '';
$fecha1 mysql_real_escape_string($fecha1);
$fecha2 mysql_real_escape_string($fecha2);


if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha1))
list(
$dia1,$mes1,$año1)=split("/",$fecha1);
if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha1))
list(
$dia1,$mes1,$año1)=split("-",$fecha1);
if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha2))
list(
$dia2,$mes2,$año2)=split("/",$fecha2);
if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha2))
list(
$dia2,$mes2,$año2)=split("-",$fecha2);
$dif mktime(0,0,0,$mes1,$dia1$año1) - mktime(0,0,0$mes2,$dia2,$año2);

if(
$dif<=0){
    
header("Location: error_fecha.php");

en el formulario tengo
Código HTML:
<input name="fecha_gar" type="text" id="fecha_adq" style="cursor: text" onclick="ds_sh(this);" value="Haga clic aqu&iacute; para escoger fecha." size="32" readonly="readonly" /> 
y
Código HTML:
<input name="fecha_adq" type="text" id="fecha_gar" style="cursor: text" onclick="ds_sh(this);" value="Haga clic aqu&iacute; para escoger fecha." size="32" readonly="readonly" /> 
me sucede dos cosas raras, cuando solo coloco esos dos campos y les coloco fechas iguales como 2011-07-01 en ambos campos O 2011-07-02 en el primer campo que es Fecha de compra y en el segundo campo que es Fecha Garantia es 2011-07-01 y sin llenar ningun campo mas me sale bien redireccionando a otra pagina que dice error de fecha reviza las fechas, pero si lleno los demas campos asi como les planteo el problema no me direcciona a esa pagina sino simplemente me guarda. ? Aclaro nunca la garantia se puede vencer dias antes de comprar el articulo osea si tu compras algo nuevo hoy como se va a vencer ayer. ese es mi problemon gracias

Última edición por Sofmundi; 23/07/2011 a las 23:09
  #2 (permalink)  
Antiguo 24/07/2011, 07:19
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: problema en comparar dos fechas

Mejor usa strtotime() para obtener el timestamp de cada fecha. Asi no tienes que crear ese codigo tan complicado para obtener las fechas en cualquier formato.

Solo harias:
Código PHP:
<?php
$fechaUno 
strtotime($fecha1);
$fechaDos strtotime($fecha2);

$diff $fechaDos $fechaUno;

?>
  #3 (permalink)  
Antiguo 24/07/2011, 20:35
 
Fecha de Ingreso: enero-2010
Mensajes: 302
Antigüedad: 14 años, 3 meses
Puntos: 3
Respuesta: problema en comparar dos fechas

Cita:
Iniciado por Ronruby Ver Mensaje
Mejor usa strtotime() para obtener el timestamp de cada fecha. Asi no tienes que crear ese codigo tan complicado para obtener las fechas en cualquier formato.

Solo harias:
Código PHP:
<?php
$fechaUno 
strtotime($fecha1);
$fechaDos strtotime($fecha2);

$diff $fechaDos $fechaUno;

?>
Pero este strtotime() toma las fechas que yo digito en mi TextBox ? o toma las fechas actuales del sistema ?

o podria colocar asi el codigo ?
Código PHP:
<?php 
$fechaUno 
strtotime($fecha_adq); 
$fechaDos strtotime($fecha_gar); 

$diff $fechaDos $fechaUno

?>
donde $fecha_adq y _gar son los campos que tengo dentro de mis textbox ? es que lo que busco es restar esas dos fechas que digito y no quiero preguntar el dia actual. gracias

Etiquetas: fechas, mysql, formulario
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 07:44.