Foros del Web » Programando para Internet » Javascript »

mensaje de alerta fechas

Estas en el tema de mensaje de alerta fechas en el foro de Javascript en Foros del Web. Hola, tengo un sitio para administrar algo como servicios tecnicos, deseo que cuando se cumplan un año de haberse creado la orden del servicio (esta ...
  #1 (permalink)  
Antiguo 05/08/2007, 16:31
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
mensaje de alerta fechas

Hola, tengo un sitio para administrar algo como servicios tecnicos, deseo que cuando se cumplan un año de haberse creado la orden del servicio (esta contiene fecha de creacion) el sistema me muestre un mensaje indicandome que para la orden numero XXXX se ha cumplido una año y el cliente necesita un nuevo servicio. No tengo ni idea de como hacer esto, el mensaje puede ser un alert, o una ventanita que contenga el mensaje, pero que si el dia de hoy ingreso al sistema y hay servicios con un año ya cumplido el sistema me avise de ello durante todo el dia cada vez que entre al sistema.

Muchas gracias, agradezco a quien me pueda ayudar.

Mi sitio esta hecho en php5, mysql, y la fecha esta en una tabla en la base de datos en este formato: AAAA-MM-DD.
  #2 (permalink)  
Antiguo 05/08/2007, 17:38
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: mensaje de alerta fechas

Bueno, en principio sería sencillo.

Lo que puedes hacer es comprobar si la fecha del servicio en cuestión (o quizá de todos) coincide con la fecha actual. Lo que podemos hacer, es teniendo un string con la fecha en formato AAAA-MM-DD, lanzar un alert() siempre que ese día coincide con hoy.

Con este par de líneas conseguimos comparar las fechas del array con la fecha del día de hoy:
Código PHP:
var hoy = new Date(), y0m0d0y1m1d1;
// Array con las fechas en las que los servicios toca su fin
var finDeServicios = ["2007-08-06""2007-09-15""2007-08-01"];
for(var 
i in finDeServicios) {
    
finDeServicios[i] = new DatefinDeServicios[i].replace(/^(d{4})-(d{2})-(d{2})$/, "$2/$3/$1") );
    
document.write"Expiración del servicio "+i+": "finDeServicios[i] +"<br/>");
    
y0 finDeServicios[i].getFullYear(), m0 finDeServicios[i].getMonth(), d0 finDeServicios[i].getDate();
    
y1 hoy.getFullYear(), m1 hoy.getMonth(), d1 hoy.getDate();
    if( (
y0==y1) && (m0==m1) && (d0==d1) )
        
alert("¡El servicio "+i+" expira justo hoy!");

Lo primero que hay que hacer es transformar el formato AAAA-MM-DD a MM/DD/AAAA, que es el formato en el que un objeto Date() puede recibir un String para construirse. Después construimos el susodicho objeto Date(), y entonces podemos comparar una fecha con otra (comparamos año, mes y día). Si coinciden, alertamos.



Bueno, espero que te sirva.

Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 06/08/2007, 09:12
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: mensaje de alerta fechas

hola, muchas gracias por tu ayuda, en cuanto a lo que me escribiste, la fecha del servicio nunca va a coincidir con la fecha de hoy, porque precisamente lo que toca hacer es todos los dias comparar todas las fechas de los servicios ya creados con la fecha de hoy para determinar si ya han pasado 12 meses o un año de creado ese servicio y avisar al cliente. algo asi es lo que tengo que hacer, te agradezco si me puedes colaborar.

Gracias!!!
  #4 (permalink)  
Antiguo 06/08/2007, 09:36
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: mensaje de alerta fechas

Ok entonces no hay que comparar con la fecha de hoy, hay que extraer la diferencia en días entre las dos fechas: la de hoy, y la de creación de servicio.

Aunque lo más cómodo quizá sea añadir un año a la fecha de creación de los servicios y quedarnos con el mismo script.

En fin, para sacar la diferencia en milisegundos entre dos fechas (creadas con Date() ) hay que sacar sus Time():
Código PHP:
var diferenciaMS nuevaFecha.getTime() - antiguaFecha.getTime(); 
Si ese valor diferenciaMS es de un año (365 días) entonces hay que alertar. Los valores entre los que tiene que estar diferenciaMS es un año (365*24*60*60*1000) y un año más un día (366*24*60*60*1000).

Es así de sencillo.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #5 (permalink)  
Antiguo 06/08/2007, 10:33
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: mensaje de alerta fechas

Hola, muchas gracias de nuevo, soy nueva en esto, en que parte de todooo me traigo las fechas de la tabla de la base de datos, pues con lo que tengo que comparar son con las fechas que estan en una columna que se llama fecha dentro de una tabla.

Gracias!!!, Te agradezco que me ayudes lo que mas puedas, como te digo soy nueva en esto y no todo es tan obvio para mi.

Mil gracias de nuevo.
  #6 (permalink)  
Antiguo 06/08/2007, 15:26
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: mensaje de alerta fechas

Lo podríamos escribir de esta manera por ejemplo:

Código:
// Array con las fechas en las que los servicios toca su fin
var inicioDeServicios = ["2006-08-06", "2006-09-15", "2006-08-01"];
var hoy = new Date();
for(var i in inicioDeServicios) {
    inicioDeServicios[i] = new Date( inicioDeServicios[i].replace(/^(\d{4})-(\d{2})-(\d{2})$/, "$2/$3/$1") );
	document.write( "Inicio del servicio "+i+": "+inicioDeServicios[i] +"<br/>");
	var diferenciaMS = hoy.getTime() - inicioDeServicios[i].getTime(); 
	if( ((365*24*60*60*1000)<diferenciaMS) && (diferenciaMS<(366*24*60*60*1000)) )		// Un año de distancia
        alert("¡El servicio "+i+" expira justo hoy!");
}

Así miramos si el día de hoy está a una distancia del día de creación de entre 365 y 366 días, y si está alertamos.


Las fechas las tendríamos que insertar como ves en la variable inicioDeServicios, manteniendo las comillas tal y como están en el código, ya que son Strings.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #7 (permalink)  
Antiguo 07/08/2007, 09:57
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: mensaje de alerta fechas

Hola
muchas gracias de nuevo por tu paciencia, ya entiendo bien lo que me dices, pero no me queda muy claro esta linea:

var inicioDeServicios = ["2006-08-06", "2006-09-15", "2006-08-01"];esas fechas que colocas ahi se supone que son las fechas en las que yo cree los servicios?, es que todas estan en una tabla en la Base de datos.
entonces ese var inicioDeServicios que tu me dices podria ser una consulta sql a la base de datos para traer las fechas y meter todo el script en un php, o como podria hacer ahi? muchas gracias por tu ayuda, si sabes como porfis explicame.

Y de nuevo muchas gracias!!!
  #8 (permalink)  
Antiguo 07/08/2007, 16:47
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: mensaje de alerta fechas

Ahí tendríamos que volcar los datos de la consulta sql. Es decir, imprimir en el documento código HTML es exactamente igual que imprimir javascript, tienes que tener en cuenta que lo que se genere tiene que tener sintaxis javascript:

Es decir, tienes que volcar algo así:
Código PHP:
echo 'var inicioDeServicios = ["'.$fecha1.'", "'.$fecha2.'", "'.$fecha3.'"];'
En donde $fecha1, $fecha2 y $fecha3 son las fechas extraídas de la base de datos. Si tienes un bucle es algo un pelín más complicado, pero no demasiado. Basta con imprimir por partes:
Código PHP:
echo 'var inicioDeServicios = [ ';
//INICIO del bucle
echo '"'.$fecha[$i].'"';
// si hay mas elementos después, meto una coma para el siguiente
if( hayMasElementos ) echo ', ';
//FIN del bucle
echo ' ]; '

Lo he hecho todo in situ, espero no haberme colado en nada. Pero bueno, si damos los pasos poco a poco y con calma todo saldrá bien. Por supuesto habrá que ver que la salida ya procesada en PHP (ver>codigo fuente) tiene buena sintaxis javascript, y es lo que esperábamos.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #9 (permalink)  
Antiguo 07/08/2007, 18:45
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: mensaje de alerta fechas

Hola, gracias por tu ayuda, pero nuevamente tengo una duda, no solo puedo definir tres fechas, porque todos los dias se van crando nuevos servicios con nuevas fechas, y es toda una columna con fechas, eso es lo que no se como raerlo y compararlo.

Mil gracias de nuevo por tu paciencia.
  #10 (permalink)  
Antiguo 07/08/2007, 18:50
Avatar de sjam7  
Fecha de Ingreso: diciembre-2001
Ubicación: Guadalajara, Mexico
Mensajes: 3.672
Antigüedad: 22 años, 4 meses
Puntos: 16
Re: mensaje de alerta fechas

bueno creo que entonces ya seria cosa de manejo del php no? el script para la alerta ya esta, lo que te falta es saber sacar las fechas para pasarselas al script, esto creo que ya seria php
  #11 (permalink)  
Antiguo 07/08/2007, 18:58
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: mensaje de alerta fechas

Cita:
Iniciado por derkenuke Ver Mensaje
Si tienes un bucle es algo un pelín más complicado, pero no demasiado. Basta con imprimir por partes:
Código PHP:
echo 'var inicioDeServicios = [ ';
//INICIO del bucle
echo '"'.$fecha[$i].'"';
// si hay mas elementos después, meto una coma para el siguiente
if( hayMasElementos ) echo ', ';
//FIN del bucle
echo ' ]; '
Se supone que el bucle es para extraer las fechas de la base de datos (el bucle recorre cada registro, normalmente).

Ten en cuenta que el script está preparado para un número indefinido de fechas de inicio de servicios... da igual la cantidad de fechas que tengas en tu base de datos.


Pero eso ya sería problema de PHP, cómo pasar variables desde PHP a javascript, que ha sido un millón de veces resuelta. Ahí te dejo la solución.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #12 (permalink)  
Antiguo 07/08/2007, 19:18
 
Fecha de Ingreso: julio-2007
Mensajes: 77
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: mensaje de alerta fechas

hola, muchas gracias, ahora si te entiendo todo lo que me has dicho, voy a intentarlo y te cuento como me va.
Gracias!!!!
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 13:12.