Foros del Web » Programando para Internet » PHP »

Mostrar datos si faltan 5 dias para llegar a la fecha fin

Estas en el tema de Mostrar datos si faltan 5 dias para llegar a la fecha fin en el foro de PHP en Foros del Web. Hola de nuevo. Quiero hacer una consulta que me muestre los datos si faltan 5 dias para llegar a una fecha que se almacena en ...
  #1 (permalink)  
Antiguo 29/07/2009, 09:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Mostrar datos si faltan 5 dias para llegar a la fecha fin

Hola de nuevo.
Quiero hacer una consulta que me muestre los datos si faltan 5 dias para llegar a una fecha que se almacena en la base de datos en formato DATE.
Me gustaria que me mostrara los datos y me imprimiera en pantalla si faltan 5, 4, 3, 2 y 1 día, pero siempre que los mostrara a partir de los 5 ultimos dias.

Un saludo
  #2 (permalink)  
Antiguo 29/07/2009, 09:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Puedes hacer un query que haga la verificacion en la base de datos y luego haces un if verificando si es menor o igual a 5 dias.
Código PHP:
Ver original
  1. //Estoy suponiendo que existe una columna llamada Fecha
  2. $s = "SELECT DATEDIFF(Fecha,".date("Y-m-d").") AS DiffDate";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);
  5. if($row["DiffDate"] <= 5){
  6.   echo "Faltan " . $row["DiffDate"] . " dias";
  7. }
  #3 (permalink)  
Antiguo 29/07/2009, 09:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes hacer un query que haga la verificacion en la base de datos y luego haces un if verificando si es menor o igual a 5 dias.
Código PHP:
Ver original
  1. //Estoy suponiendo que existe una columna llamada Fecha
  2. $s = "SELECT DATEDIFF(Fecha,".date("Y-m-d").") AS DiffDate";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);
  5. if($row["DiffDate"] <= 5){
  6.   echo "Faltan " . $row["DiffDate"] . " dias";
  7. }
Me sale pagina en blanco, este es el codigo modificado
Código PHP:
mysql_select_db($database_compramos$compramos);
$s "SELECT DATEDIFF(fecha_fin,".date("Y-m-d").") AS DiffDate FROM productos";
$r mysql_query($s) or die(mysql_error());
$row mysql_fetch_assoc($r); 
Donde puede estar el fallo?
  #4 (permalink)  
Antiguo 29/07/2009, 10:05
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

¿fecha_fin es una columna declara como date?
  #5 (permalink)  
Antiguo 29/07/2009, 10:16
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Cita:
Iniciado por abimaelrc Ver Mensaje
¿fecha_fin es una columna declara como date?
Si, lo que no se si esta bien puesto la conexion a la base de datos, en un QUERY lo tengo asi. Te pongo una consulta que tengo echa y que funciona
Código PHP:
mysql_select_db($database_compramos$compramos);
$query_detalle sprintf("SELECT * FROM productos WHERE id_producto = %s"GetSQLValueString($colname_detalle"int"));
$detalle mysql_query($query_detalle$compramos) or die(mysql_error());
$row_detalle mysql_fetch_assoc($detalle);
$totalRows_detalle mysql_num_rows($detalle); 
Es solo un ejemplo para que veas si he colocado bien la conexion a la BD
  #6 (permalink)  
Antiguo 29/07/2009, 10:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Podrias escribir que te tira $row

Código php:
Ver original
  1. echo "<pre>";
  2. print_r($row);
  3. echo "</pre>";

Escribe que te trae esa variable
  #7 (permalink)  
Antiguo 29/07/2009, 11:07
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

No me sale nada de nada
  #8 (permalink)  
Antiguo 29/07/2009, 11:10
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Ok disculpa me falto las comillas en la consulta, trata con esto
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT DATEDIFF(fecha_fin,'".date("Y-m-d")."') AS DiffDate FROM productos";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);
  #9 (permalink)  
Antiguo 29/07/2009, 11:25
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Cita:
Iniciado por abimaelrc Ver Mensaje
Ok disculpa me falto las comillas en la consulta, trata con esto
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT DATEDIFF(fecha_fin,'".date("Y-m-d")."') AS DiffDate FROM productos";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);
Espera que ahora me doy cuenta que esto no me va a servir.
la idea es que me muestre los productos que falten menos de 5 dias que indica la fecha fin y una vez pase esa fecha deje de mostrarlos.
En tu consulta se mostrarian siempre.
  #10 (permalink)  
Antiguo 29/07/2009, 11:30
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Pues en vez de usarlo en el select usa lo mismo pero en el where
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'".date("Y-m-d")."') <= 5";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

Edito:
Me falto declarar un and para que no sea menor a 0
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'".date("Y-m-d")."') <= 5 AND DATEDIFF(fecha_fin,'".date("Y-m-d")."') >= 0";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

Última edición por abimaelrc; 29/07/2009 a las 11:37
  #11 (permalink)  
Antiguo 29/07/2009, 11:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Cita:
Iniciado por abimaelrc Ver Mensaje
Pues en vez de usarlo en el select usa lo mismo pero en el where
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'".date("Y-m-d")."') <= 5";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

Edito:
Me falto declarar un and para que no sea menor a 0
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'".date("Y-m-d")."') <= 5 AND DATEDIFF(fecha_fin,'".date("Y-m-d")."') >= 0";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);
No me salen datos, para probar he puesto una fecha 2009-07-28 y deberia de salirme esa, pero no me sale ninguna.
  #12 (permalink)  
Antiguo 29/07/2009, 12:03
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Yo lo probe y me salio en mi base de datos. Busque fechas que sean de 5 dias o menos y me salio :S. ¿Si escribes una fecha directamente en esa funcion de MySQL no te sale informacion como quiera?

Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'2009-07-28') <= 5 AND DATEDIFF(fecha_fin,'2009-07-28') >= 0";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

Bueno si al final no te funciona. Lo hacemos con PHP entonces. Me dejas saber
  #13 (permalink)  
Antiguo 29/07/2009, 12:22
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Cita:
Iniciado por abimaelrc Ver Mensaje
Yo lo probe y me salio en mi base de datos. Busque fechas que sean de 5 dias o menos y me salio :S. ¿Si escribes una fecha directamente en esa funcion de MySQL no te sale informacion como quiera?

Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'2009-07-28') <= 5 AND DATEDIFF(fecha_fin,'2009-07-28') >= 0";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

Bueno si al final no te funciona. Lo hacemos con PHP entonces. Me dejas saber
Si le pongo la fecha como tu dices, si que me lo saca
  #14 (permalink)  
Antiguo 29/07/2009, 12:58
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

A ver si te sale de esta forma entonces. Primero con PHP restamos al dia de hoy 5 dias y luego la variable la colocamos en el query. Sería algo así (debe haber una mejor forma, pero con esto debe funcionar)

Código PHP:
Ver original
  1. $getDate = date("Y-m-d", mktime(0,0,0,date("m"),date("d")-5,date("Y")));
  2. mysql_select_db($database_compramos, $compramos);
  3. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin,'".$getDate."') <= 5 AND DATEDIFF(fecha_fin,'".$getDate."') >= 0";
  4. $r = mysql_query($s) or die(mysql_error());
  5. $row = mysql_fetch_assoc($r);

Edito:
Creo que esta es la mejor forma
Código PHP:
Ver original
  1. mysql_select_db($database_compramos, $compramos);
  2. $s = "SELECT * FROM productos WHERE DATEDIFF(fecha_fin, - INTERVAL 5 DAY) <= 5 AND DATEDIFF(fecha_fin, - INTERVAL 5 DAY) >= 0";
  3. $r = mysql_query($s) or die(mysql_error());
  4. $row = mysql_fetch_assoc($r);

No lo he probado y analizando el codigo lo mas probable que te muestra todos los datos. Verifico y te dejo saber. Me vas a tener que dar un tiempo para poder indicarte sobre el segundo codigo. Pero el primero te debe funcionar

Última edición por abimaelrc; 29/07/2009 a las 13:11
  #15 (permalink)  
Antiguo 29/07/2009, 17:09
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Mostrar datos si faltan 5 dias para llegar a la fecha fin

Gracias, me funciona le primero que me diste. eres una maquina. Muchas 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 11:41.