Foros del Web » Programando para Internet » PHP »

10 dias menos

Estas en el tema de 10 dias menos en el foro de PHP en Foros del Web. Me explico: Si la inspeccion es rechazada el programa lo lo deja como "R". Eso esta ok! Ahora cuando la inspeccion este "R" o "N" ...
  #1 (permalink)  
Antiguo 23/11/2007, 07:29
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
10 dias menos

Me explico:

Si la inspeccion es rechazada el programa lo lo deja como "R". Eso esta ok!

Ahora cuando la inspeccion este "R" o "N" empieza un conteo, si pasan 10 dias que pase automaticamente a "L" que significa Limita de tiempo caducado.

intente hacer este codigo pero no me funciona.

Código PHP:
$fech_actu=(date ("d-m-Y"));//
 
$f_aa    date("Y",$fech_actu);
 
$f_mm  date("M",$fech_actu);
 
$f_dd    date("D",$fech_actu);
 
 
$f_dd_a $f_dd 10//Resto los 10 Dias

$hoy=$f_aa.$f_mm.$f_dd_a;
 
 if(
fech_actu == $hoy$codest "L"
Ayuda por favor
  #2 (permalink)  
Antiguo 23/11/2007, 08:18
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: 10 dias menos

-

ERROR!!!
__________________
Kelpie

Última edición por Kelpie; 23/11/2007 a las 08:30 Razón: Estaba mal
  #3 (permalink)  
Antiguo 23/11/2007, 08:25
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: 10 dias menos

Gracias por contestar, deberia de estar ya ok esa parte, ahora como la hago para que esta sea automatico?

$fech_actu=(date ("d-m-Y"));//
$f_aa = date("Y",$fech_actu);
$f_mm = date("m",$fech_actu);
$f_dd = date("d",$fech_actu);

$f_dd_a = $f_dd - (60*60*24*10)

$hoy=$f_aa.$f_mm.$f_dd_a;

if(fech_actu == $hoy) $codest = "L";
  #4 (permalink)  
Antiguo 23/11/2007, 08:25
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: 10 dias menos

No. Me lié yo. Estabas sumando días!!

De todas maneras no acabo de pillar la lógica de tu script. Necesitas una fecha para poder comparar.
Quiero decir, $fech_actu lo cargas con el valor de la fecha actual, y $hoy tiene el valor de hace diez días. Por lo que $fech_actu == $hoy (en tu script te falta el $) siempre será falso...

Suponiendo que tenemos la fecha de la última actualización (por ejemplo) en $time_ant, podemos comprobar simplemente que hay una diferencia de más de 10 días con la fecha de hoy...:

Código PHP:
if (time()-$time_ant>(60*60*24*10)){
  
//Han pasado más de diez días
  
$codest "L";

Se debería comprobar algo más, como que $fActu es menor que la fecha actual:

Código PHP:
if ($time_ant<time()){
  if (
time()-$time_ant>(60*60*24*10)){
    
//Han pasado más de diez días
    
$codest "L";
  }
}else{
  echo(
"Te has pasado de listo. Tu fecha de actualización está en el futuro...");

__________________
Kelpie

Última edición por Kelpie; 23/11/2007 a las 08:33
  #5 (permalink)  
Antiguo 23/11/2007, 08:28
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: 10 dias menos

¿Qué quieres decir con automático?
__________________
Kelpie
  #6 (permalink)  
Antiguo 23/11/2007, 08:35
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: 10 dias menos

Cuando ya se cumpla la fecha de los 10 dias, se cambia automatico a "L"
  #7 (permalink)  
Antiguo 23/11/2007, 08:43
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: 10 dias menos

Eso, así tal cual, no vas a poder hacer, porque implicaría que el script estuviera en ejecución las 24h del día...

Hay dos opciones.

1.- Si tienes acceso a la tabla cron del servidor (tareas programadas) podrías programar que se ejecute un script cada cierto tiempo...

2.- Hacerlo de forma manual. Por ejemplo, antes de mostrar los datos de una determinada inspección, actualizas el estado según las fechas. O al sacar el listado del estado de las inspecciones, o cuando se intente modificar algún dato...

Por ejemplo: Cuando un usuario entra en una web se suma uno a la cantidad de usuarios existentes. Cada vez que el usuario hace algo actualizo la fecha de su último movimiento. Cuando un usuario lleva más de 10 minutos sin movimientos, considero que se ha ido... Como mi script no se puede ejecutar contínuamente para ir borrando lo hago manual: cada vez que voy a mostrar los usuarios activos de la página, primero borro los que lleven más de 10 minutos sin actividad, y luego muestro los que queden...
__________________
Kelpie
  #8 (permalink)  
Antiguo 23/11/2007, 08:49
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: 10 dias menos

muchas gracias por tu tiempo, ahora con tus respuesta armare lo que necesito.

saludos :D
  #9 (permalink)  
Antiguo 23/11/2007, 08:54
Avatar de Stickmaster2004  
Fecha de Ingreso: septiembre-2004
Ubicación: Barranquilla
Mensajes: 568
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: 10 dias menos

si cuentas tu con el servidor lo que podrias hacer seria lo siguiente:

1. pues mantener la aplicacion abierta y hacer reload a la pagina determinado tiempo para verficar el tiempo transcurrido dado un parametro.

2. colocar un trigger o disparador en la tabla en donde cuando pasados los 10 dias pues cambie un valor que necesites de R a L, podria ser.

bueno con cualquiera de estas opciones va bien.
__________________
Solo el que se basa en conocimiento basico y cultiva el aprendizaje obtendra sabiduria
  #10 (permalink)  
Antiguo 23/11/2007, 09:34
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: 10 dias menos

asi quedo el codigo, que error cometo?, no me tira error pero no hace nada,
lo deje que cuando un se hace click al boton de ingresar, me verifique, pero aun no hace nada.

Código PHP:
$fech_act2=(date ("Ymd"));//obtienes la fecha actual del sistema
    
$f_fdig_aa2    substr($fech_act2,0,4);
    
$f_fdig_mm2    substr($fech_act2,4,2);
    
$f_fdig_dd2    substr($fech_act2,6,2);


 
$time time(); // Timestamp Actual
 
$restar = (24*60*60)*10// (horas*minutos*segundos)*2 -> numero de segundos en dos dias
 
$time_ant $time-$restar;

 
if (
$time_ant<time()){
  if (
time()-$time_ant>(60*60*24*10)){
    
//Han pasado más de diez días
    
$codest "L";
  }
}
}else{
  echo(
"Te has pasado de listo. Tu fecha de actualización está en el futuro...");

  #11 (permalink)  
Antiguo 23/11/2007, 10:41
Avatar de Kelpie  
Fecha de Ingreso: febrero-2002
Ubicación: NorthSpain
Mensajes: 609
Antigüedad: 22 años, 2 meses
Puntos: 8
Re: 10 dias menos

La variable $time_ant es siempre más de diez diás menor que time() (Por milisegundos...)
Eso es porque $time_ant es un time() menos diez días...

Por ello, supongo que time()-$time_ant será igual a (60*60*24*10). Pruébalo:

if ($time_ant<time()){
if (time()-$time_ant>=(60*60*24*10)){
//Han pasado más de diez días
$codest = "L";
echo("Han pasado 10 días. Estás frito");
}else{
echo("Aun no han pasado 10 días");
}
}else{
echo("Te has pasado de listo. Tu fecha de actualización está en el futuro...");
}
__________________
Kelpie
  #12 (permalink)  
Antiguo 23/11/2007, 12:42
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: 10 dias menos

Disculpa mi torpesa pero me da dice solo esto:

echo("Han pasado 10 días. Estás frito");

pasado, futuro o presente.

Ayudame por favor Kelpie, o alguien que sepa



if ($ins_fecing2<time()){
if (time()-$ins_fecing2>=(60*60*24*10)){
//Han pasado más de diez días
//$codest = "L";
echo("Han pasado 10 días. Estás frito");
}else{
echo("Aun no han pasado 10 días");
}
}else{
echo("Te has pasado de listo. Tu fecha de actualización está en el futuro...");
}
  #13 (permalink)  
Antiguo 23/11/2007, 22:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 55
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: 10 dias menos

Creo que el error está en el concepto de la programación del script.

Está muy complejo!!!!!!!!!!!!!!!!!

Si pienso que un usuario hará una acción que pone en marcha un contador de tiempo para registrar el inicio de ese evento, y que tendrá 10 días para confirmarlo, pues entonces lo más fácil es lo siguiente:

Código PHP:
// aquí va la accion que ejecuta el usuario  y que registra el script
// luego almacenamos la fecha actual de ese evento en una variable

$fecha_inicio time();

// ahora guardamos la variable en la base de datos
// o en un archivo de texto.
// Luego cuando el usuario accede a la página nuevamente
// y si han pasado más de 10 días lo sabrá inmediatamente
// para eso haz lo siguiente:

// sacas el valor de la base de datos o del archivo de texto
// y la comparas con el valor de la fecha actual y listo.

if (time() > ($fecha_inicio 10*24*60*60))
{
echo 
'Lo siento has caducado';
$codest "L";
}
else
{
echo 
'Ok todavía tienes tiempo...  ¿en que estábamos?';
}

// saludos 
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 18:29.