Foros del Web » Programando para Internet » PHP »

Por mas que busco no encuentro FECHAS

Estas en el tema de Por mas que busco no encuentro FECHAS en el foro de PHP en Foros del Web. Hola amigos foristas; Para variar acá estoy con una duda nueva jejejejejejeje. He buscado y releído todo lo que he encontrado en el foro y ...
  #1 (permalink)  
Antiguo 01/06/2009, 13:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Por mas que busco no encuentro FECHAS

Hola amigos foristas;

Para variar acá estoy con una duda nueva jejejejejejeje.

He buscado y releído todo lo que he encontrado en el foro y no hayo lo que busco.

Estoy haciendo un sistema de usuarios los cuales se inscriben y tendrán una duración de un año de vigencia en la cual deberán reinscribirse de nuevo, o actualizar sus datos.

El problema es que necesito al tener el campo fecha Inscripción tipo $date(d/m/Y) que sería el dia de inscripción o registro en la BD, automáticamente me calcule un año y lo inserte en la BD es decir al enviar el formulario ingresará los campos fecha registro y fecha culminación.

Después de esto cada vez que haga la busqueda de clientes me muestre si el cliente está activo o si ya está por vencer su inscripción esto necesito que me lo muestre un mes, 15 dias y una semana antes de la culminación para poder enviarle correos recordandole que está próximo a vencer su registro para que pueda renovar dicha inscripción, sino no está activo o ya pasó la fecha de renovación me muestre un mensaje que diga que el usuario está suspendido al igual que si hago una consulta donde necesite saber quienes vencen o están suspendidos este mes o el mes que viene me muestre dichos resultados.

Espero contar con su ayuda como siempre... El código que estoy usando para las fechas es este y me muestra un año exacto pero tengo mis dudas como comenté arriba
Código PHP:
<?php
$fecha_inscripcion
=date("d-m-Y");
$fecha_vencimiento strtotime("$fecha_inscripcion +365 days");
echo 
'Fecha de Vencimiento: '.date("d-m-Y",$fecha_vencimiento); 
?>
Espero haberme explicado correctamente.

Gracias
  #2 (permalink)  
Antiguo 01/06/2009, 13:54
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: Por mas que busco no encuentro FECHAS

Usa un campo tipo DATE, y mete las fechas en formato YYYY-MM-DD.

PAra saber cuando le falta a un usuario para que venza su inscripcion, puedes usar DATE_DIFF de MySQL y dependiendo del valor regresado, enviar o no un correo.
  #3 (permalink)  
Antiguo 01/06/2009, 14:09
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Gracias Ronruby por tu respuesta;

Si no es mucha molestia podrias orientarme como haria para poder usar el date_diff y me diera los resultados que necesito un mes, 15 dias, una semana???

Este mismo date_diff me sirve para si el usuario ya pasó la renovación y no se renovó me lo diga tambien???

Gracias nuevamente por tu ayuda
  #4 (permalink)  
Antiguo 01/06/2009, 14:14
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: Por mas que busco no encuentro FECHAS

:P Disculpa, la funcion es DATEDIFF, se me paso un _ de mas.

Mira estos ejemplos:
Cita:
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
mysql> SELECT DATEDIFF('1997-11-31 23:59:59','1997-12-31');
-> -30
Fuente: http://mysql.conclase.net/curso/index.php?fun=DATEDIFF

Si quieres los usuarios que deben renovar en 30 dias o mas puedes hacer:
SELECT * FROM usuarios WHERE DATEDIFF(fechaFinal, fechaInicial) < 16

Esto te dara los usuarios, cuya fechaFinal - fechaInical es menor que 16.
  #5 (permalink)  
Antiguo 01/06/2009, 14:19
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Gracias Ronruby; voy a chequear el link y probar el ejemplo que me diste...

Muchas gracias por tu ayuda, cualquier cosa te molesto de nuevo... Vale??? Jejejejeje
  #6 (permalink)  
Antiguo 01/06/2009, 15:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola Ronruby

He hecho la inserción de las fechas pero me dá este error Incorrect date value: '' for column 'fecha_registro' at row 1 cuando trato de hacer la comparación que será???

Acá te dejo el código:
Código PHP:
<?php
$fecha_inscripcion
=date("Y-m-d");
$fecha_vencimiento strtotime("$fecha_inscripcion +365 days");
?>
<form action="fechas.php" method="post" enctype="multipart/form-data"/>
<input type="text" name="fecha_renova" id="fecha_renova" value="<?php echo date("Y-m-d",$fecha_vencimiento);?>"/>
<input type="text" name="fecha_regi" id="fecha_regi" value="<?php echo $fecha_inscripcion;?>"/>


<input type="submit" name="s1" value="Enviar">

<?php 
$sql 
"SELECT * FROM fechas WHERE DATEDIFF(fecha_renovacion, fecha_registro) < 16"

$resmysql_query($sql) or die (mysql_error()); 
 
while (
$fila mysql_fetch_array($res)) {?> 
<td><?=$fila['fecha_registro'];?></td>
<?
}
?>
Gracias nuevamente por tu ayuda
  #7 (permalink)  
Antiguo 01/06/2009, 15:50
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: Por mas que busco no encuentro FECHAS

Solo pon:
$fecha_vencimiento = strtotime("+365 days");
  #8 (permalink)  
Antiguo 01/06/2009, 15:59
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola, Ronruby ya solucioné la falla fué mia al colocar un parametro que no iba... Gracias por tu ayuda... Ahora no sé si abras ingresado alguna vez a godaddy en la parte de datos del usuario aparece un mensaje su cuenta expira en tantos dias... Y por supuesto cambia cada dia restando uno como lo harias???

Última edición por colocolino73; 01/06/2009 a las 16:14 Razón: problema solucionado!!!!
  #9 (permalink)  
Antiguo 01/06/2009, 16:08
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: Por mas que busco no encuentro FECHAS

¿Que error te muestra?

Recuerda que los campos tiene que ser DATE.
Si deseas dejarlos asi como estan (probablemente varchar) entonces usa STR_TO_DATE(campo, '%d-%m-%Y') para convertir los campos a DATE para hacer la consulta.
  #10 (permalink)  
Antiguo 01/06/2009, 16:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola Ronruby , Gracias por tu ayuda ya solucioné como escribí mas arriba, fué una falla mia... Ahora se me presentaron algunas dudas que te las comemntaré mas tarde...

Gracias nuevamente por tu gran ayuda.

Ok... Mira las dudas que tengo ahora son las siguientes... la idea es que me muestre cuales fechas están por expirar y si ya pasó la fecha de expiración (renova) me indique cuantos dias han transcurrido desde que expiró el registro.

Porque la idea es la siguiente si faltan 15 dias para que expire entonces aparece el mensaje proximo a vencer o algo asi para oder mandarle el mensaje al usuario... Si ya expiró entonces me diga este usuario no ha renovado o lo que sea y me diga cuantos dias de atrazo en la renovación tiene.

Espero haberme hecho comprender.

Gracias nuevamente por tu ayuda

Última edición por colocolino73; 01/06/2009 a las 16:35 Razón: Las dudas a comentar...
  #11 (permalink)  
Antiguo 01/06/2009, 16:47
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: Por mas que busco no encuentro FECHAS

Cuando haces una consulta como la que te comente:
SELECT * FROM usuarios WHERE DATEDIFF(fechaFinal, fechaInicial) < 16
Solamente traerá los registros próximos a la renovación y los que ya estan vencidos.

Haz una consulta del tipo:
SELECT * FROM usuarios WHERE DATEDIFF(fechaFinal, fechaInicial) < 16 AND DATEDIFF(fechaFinal, fechaInicial) > 0

Eso te dara los registros que estan por expirar, pero no han expirado.
Lo que haces para enviarles un mensajes, es simplemente recoger la consulta usando mysql_fetch_assoc() y en cada vuelta del bucle vas mandando un correo o lo que desees.

Para los registros que ya han expirado, y quieres saber hace cuanto han expirado, tienes que hacer algo mas o menos parecido a esto:

SELECT *, DATEDIFF(fechaFinal, fechaInicial) AS diferencia FROM usuarios WHERE diferencia < 0

Donde ahora, el campo llamado "diferencia" (que es un alias) contendrá el numero de días que lleva expirada la cuenta, en un valor negativo.
Recoge los datos con mysql_fetch_assoc() y luego vas mandando un correo avisandole el numero de dias que lleva la cuenta expirada.
Recuerda que tienes que pasar el valor del campo "diferencia" a positivo, puedes usar la funcion abs() (Para obtener el valor absoluto).
  #12 (permalink)  
Antiguo 01/06/2009, 16:48
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola Ronruby ; Molestandote nuevamente, disculpa tanta molestia.

No habia leido el mensaje anterior ya que estaba escribiendo esto antes de que llegara tu mensaje... Disculpa la molestia y gracias nuevamente....


Resulta que el codigo funciona muy bien pero... Siempre un pero... si yo coloco fechas al azar por ejemplo 2009-05-01, 2009-09-01, 2010-06-04, etc... y coloca que me diga cuales están proximos a expirar en los x dias me sigue mostrando esta fecha 2009-05-01 que se supone ya ha expirado y no que va a expirar...

Como crees que se pueda solucionar ese detalle???

Gracias por tu paciencia y gran ayuda que me has dado en este dilema.

Última edición por colocolino73; 01/06/2009 a las 16:50 Razón: No habia visto el mensaje anterior
  #13 (permalink)  
Antiguo 01/06/2009, 17:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola Ronruby ; Soy yo otra vez jejejejeje....

Disculpa hice lo que me aconsejaste y no me muestra nada... cambié la fecha de mi ordenador al 18 de este mes y coloqué 16 dias entonces debería mostrarme las fechas

Fecha Por vencer en 16 dias:2009-07-01
Pero no la muestra.... Si coloco que me muestre los que van a vencer en 365 dias me muestra esto:

Fecha pendiente:2009-07-01 Dias:0 Fecha pendiente:2009-07-01 Dias:30 Fecha pendiente:2009-07-01 Dias:30 Fecha pendiente:2009-07-01 Dias:62 Fecha pendiente:2009-07-01 Dias:365 Fecha pendiente:2009-07-01 Dias:365

Graciaas nuevaamente por tu ayuda.
  #14 (permalink)  
Antiguo 08/06/2009, 08:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 49
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Por mas que busco no encuentro FECHAS

Hola amigos Foristas;

Aún sigo sin poder resolver el problema...

Alguien tendrá alguna idea de como resolverlo???

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 10:46.