Foros del Web » Programando para Internet » PHP »

Funcionará este cálculo?

Estas en el tema de Funcionará este cálculo? en el foro de PHP en Foros del Web. El tema lo dice todo, quiero escribir caducado si la fecha es superior a la conseguida, les muestro: Código PHP: (...) //esta variable corresponde a un campo de la DB mySQL puesto como DATE $fecha_mysql = $row ...
  #1 (permalink)  
Antiguo 24/07/2003, 05:28
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 21 años, 10 meses
Puntos: 0
Funcionará este cálculo?

El tema lo dice todo, quiero escribir caducado si la fecha es superior a la conseguida, les muestro:

Código PHP:
(...)
//esta variable corresponde a un campo de la DB mySQL puesto como DATE
$fecha_mysql=$row["FECHA"];

$result_fecha=mysql_query("SELECT DATE_SUB(CURDATE(),INTERVAL 15 DAY) as FECHA_PROX",$link) or die(mysql_error());;
if (
$row_fecha=mysql_fetch_array($result_fecha)) {
$fecha_prox $row_fecha["FECHA_PROX"]; }

if (
$fecha_mysql>=$fecha_prox) {
    echo 
"Vigente"; }
    else {
    echo 
"Caducado"; } 
La cuestión es si este calculo entre fechas será válido pase el tiempo que pase o me dará problemas...

Gracias
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #2 (permalink)  
Antiguo 24/07/2003, 06:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Depende del formato de las fechas. En PHP no hay un tipo DATE. Asi que cuando haces la comparacion entre los dos valores, PHP hara o una comparacion de cadenas de texto, o una comparacion de numeros. El DATE_SUB de MySQL no se que formato devuelve (timestamp, date, ...). Y no se el formato de tu campo 'FECHA' en la otra consulta. Puedes hacer un echo de ambos valores para ver si estan en el mismo formato. Y si en eese formato la comparacion funcionara.

Pero tambien podrias hacer la comparacion en la primera consulta, la de $fecha_mysql. Podrias hacer:

SELECT *, FECHA, (TO_DAYS(CURDATE()) - TO_DAYS(FECHA)) as dias_diferencia FROM tabla

Luego puedes hacer:
Código PHP:
if (15>$row['dias_diferencia']) {
  echo 
'caducado';
} else {
  echo 
'vigente';

Asi no debes hacer otra consulta. Las funciones de manejo de fechas de MySQL estan en http://www.mysql.com/doc/en/Date_and...functions.html . Lo que hago es calcular la diferencia en dias entre la fecha actual y la del registro. Luego solo es comparar si ese valor es mayor de 15.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 16:39.