Foros del Web » Programando para Internet » PHP »

Comparar fechas desde campo text -.-

Estas en el tema de Comparar fechas desde campo text -.- en el foro de PHP en Foros del Web. Buenos dias! como les va? tengo un problema, en la base de datos la fecha y hora estan guardadas en un campo TEXT de la ...
  #1 (permalink)  
Antiguo 31/08/2010, 08:12
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Comparar fechas desde campo text -.-

Buenos dias! como les va?

tengo un problema, en la base de datos la fecha y hora estan guardadas en un campo TEXT de la siguiente forma (29/08/2010 11:00) la cual tiene como id=1 entonces lo que quiero hacer es comprarla con la fecha de la id=3 (29/08/2010 13:00) (Noten que cambia la hora solamente), al ser las fechas del mismo dia debo verificar la diferencia de horarios entre ellas (11:00 - 13:00) para ejecutar una accion si la diferencia horaria es de mas de 1 hora.

Lo que debo hacer es:
  • Buscar el ultimo email enviado con el asunto "x".
  • Buscar la fecha de ese email.
  • Buscar el ultimo email enviado en total (Lo cual seria realmente el ultimo email [con cualquier asunto])
  • Buscar la fecha de ese email.
  • Comparar las dos fechas.
  • Si son iguales paso a comprar la hora.
  • Si la hora es igual o menor a 1 hora, tengo que contar cuantos emails hay entre el del asunto "x" y el de cualquier asunto, restarle eso a un contador=180 y enviar esa cantidad de emails (Esto lo tengo armado lo de los emails, no lo puse en el codigo porque no llegue a esa parte, nada mas)
  • Si la hora es mayor a 1 hora, enviar 180 emails.

Lo que pude hacer hasta ahora es hasta el punto 5, pero he aqui el error! me compara (porque yo asi lo pense [mal por lo que veo]) las horas por separado entonces no me muestra realmente cual es mayor o menor en su conjunto!

les muestro el codigo!

Código PHP:
<?php



//Busco el ultimo email que envie del smtp
$sql="SELECT MAX(clave) FROM `email` WHERE asunto='x' ORDER BY clave DESC";
$res=mysql_query($sql) or die (mysql_error());
$ultimo=mysql_fetch_array($res);

echo 
"Ultimo email clave: ".$ultimo['0']."<br />";
$last=$ultimo['0'];

//Busco la fecha en que envie ese ultimo email de smtp
$sql2="SELECT fecha FROM `email` WHERE clave=$last";
$res2=mysql_query($sql2) or die(mysql_error());
$ultimo2=mysql_fetch_array($res2);

echo
"Ultimo email fecha: "$ultimo2['fecha']."<br/>";
$fecha1=$ultimo2['fecha'];

//Busco el ultimo email enviado de cualquier tipo
$sql3="SELECT MAX(clave) FROM `email` ORDER BY clave DESC";
$res3=mysql_query($sql3) or die (mysql_query());
$ultimo3=mysql_fetch_array($res3);

echo 
"Ultimo email clave: ".$ultimo3['0']."<br />";
$last2=$ultimo3['0'];


//Busco la fecha del ultimo email enviado de cualquier tipo
$sql4="SELECT fecha FROM `email` WHERE clave=$last2";
$res4=mysql_query($sql4) or die(mysql_error());
$ultimo4=mysql_fetch_array($res4);

echo
"Ultimo email fecha: "$ultimo4['fecha']."<br/>";
$fecha2=$ultimo4['fecha'];

explode("/",$fecha1);
echo 
"Fecha1 despues del explode ".$fecha1['0']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['1']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['2']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['3']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['4']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['5']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['6']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['7']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['8']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['9']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['10']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['11']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['12']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['13']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['14']." <br/>";
echo 
"Fecha1 despues del explode ".$fecha1['15']." <br/>";

$dia1=$fecha1['0'].$fecha1['1'];
$mes1=$fecha1['3'].$fecha1['4'];
$anio1=$fecha1['6'].$fecha1['7'].$fecha1['8'].$fecha1['9'];
$hora1=$fecha1['11'].$fecha1['12'];
$minutos1=$fecha1['14'].$fecha1['15'];

echo 
$dia1." ".$mes1." ".$anio1." ".$hora1." ".$minutos1."<br/>";


explode("/",$fecha2);
echo 
"Fecha2 despues del explode ".$fecha2['0']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['1']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['2']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['3']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['4']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['5']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['6']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['7']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['8']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['9']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['10']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['11']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['12']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['13']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['14']." <br/>";
echo 
"Fecha2 despues del explode ".$fecha2['15']." <br/>";

$dia2=$fecha2['0'].$fecha2['1'];
$mes2=$fecha2['3'].$fecha2['4'];
$anio2=$fecha2['6'].$fecha2['7'].$fecha2['8'].$fecha2['9'];
$hora2=$fecha2['11'].$fecha2['12'];
$minutos2=$fecha2['14'].$fecha2['15'];

echo 
$dia2." ".$mes2." ".$anio2." ".$hora2." ".$minutos2."<br/>";

if(
$mes1 >= $mes2){
echo 
$mes1." 1es mayor que ".$mes2."<br/> ";
if(
$dia1 >= $dia2){
echo 
$mes1." ".$dia1." es mayor que ".$mes2." ".$dia2."<br/> ";
}else{
echo 
$mes2." ".$dia2." es mayor que ".$mes1." ".$dia1."<br/> ";
}
}else{
echo 
$mes2." 2es mayor que ".$mes1."<br/> ";

}

?>
La verdad me trabe en este punto! alguien tiene alguna idea de como puedo resolver este problema!?

Un abrazo!
  #2 (permalink)  
Antiguo 31/08/2010, 08:19
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Comparar fechas desde campo text -.-

Yo usaría la función mktime().

Con esa función lo conviertes a milisegundos, y sólo tienes que comparar una vez en milisegundos.

Ah, eso sí, tendrás que tratar las fechas antes (separar el dia, mes, año, hora, minuto :D)

Edit: Ah, y el explode lo estás usando "mal".

El explode devuelve un array, asiq debería ser algo así:
Código PHP:
$fechaResultante explode("/",$fecha1); 
Después, haz un var_dump si quieres :D
  #3 (permalink)  
Antiguo 31/08/2010, 09:44
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Comparar fechas desde campo text -.-

Eleanza! te agradezco la respuesta, ahora voy a chequear el tema del mktime() (Que por cierto muy buena idea!!)

Sobre explode.... tenes razon, pero me funciona igual! ya que accedo al array como fecha['0'] fecha['1'] fecha['2'], no veo la diferencia! igualmente ahora voy a chequear tambien en el manual!

un abrazo y muchas gracias.!
  #4 (permalink)  
Antiguo 31/08/2010, 16:15
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Comparar fechas desde campo text -.-

Gracias! che y para pasar de mktime() a la fecha normal? es decir, yo introduzco por ejemplo
mktime($hora1,$minutos1,$segundos1,$mes1,$dia1,$an io1); y me da 1281615240, ahora quiero que eso me devuelva la hora que yo puse! la funcion cual es?

un abrazo y gracias.
  #5 (permalink)  
Antiguo 31/08/2010, 16:46
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Respuesta: Comparar fechas desde campo text -.-

La función es:

$fecha = date("Y-m-d h:m",$valor);
  #6 (permalink)  
Antiguo 01/09/2010, 05:19
 
Fecha de Ingreso: julio-2009
Ubicación: Argentina!
Mensajes: 324
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: Comparar fechas desde campo text -.-

Joya! Gracias claudio! ahora puedo seguir!

un abrazo!

Etiquetas: comparar, fechas, txt, campos
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 21:07.