Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Como saber si 2 fechas existen en otras 2

Estas en el tema de Como saber si 2 fechas existen en otras 2 en el foro de PHP en Foros del Web. Hola! Resulta que tengo un formulario en PHP que me pide la fecha_1 y la fecha_2. Al validarlas las guarda en una BD. Tengo validaciones ...
  #1 (permalink)  
Antiguo 30/08/2013, 13:43
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 1
Pregunta Como saber si 2 fechas existen en otras 2

Hola!
Resulta que tengo un formulario en PHP que me pide la fecha_1 y la fecha_2.

Al validarlas las guarda en una BD.

Tengo validaciones en PHP que me verifica que no deben estar vacías ninguna de las dos fechas para poder guardarlas. Verifica que la primer fecha no sea menor a la fecha en la que se envía el formulario. Verifica que la fecha_2 sea mayor a la primer fecha.

Hasta aquí todo bien. Ahora tengo que verificar si las fechas que envíen no esten entre las fechas ya guardadas.

EJEMPLO:
Fechas enviadas por formulario: fecha_1: 01/09/2013 - fecha_2: 05/09/2013

Fechas en BD: fecha_1: 03/09/2013 - fecha_2: 07/09/2013

En este caso aunque no son las mismas fechas me debe enviar un mensaje de error ya que en BD existe una fecha que esta entre la fechas enviadas.

El codigo que he intentado es:

Código PHP:
Ver original
  1. $fecha_1 = $_POST["fecha_1"];
  2. $fecha_2 = $_POST["fecha_2"];
  3.  
  4. $query = mysql_query("SELECT * FROM tabla WHERE ".$fecha_2." BETWEEN fecha_1 AND fecha_2 ") or die(mysql_error());
  5. $datos_fechas = mysql_fetch_array($query);  
  6.  
  7. if(mysql_num_rows($datos_fechas)!=0){
  8.     $mensaje_reservas = 'Las fechas seleccionadas ya estan ocupadas';
  9. }

Gracias
  #2 (permalink)  
Antiguo 30/08/2013, 14:47
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Como saber si 2 fechas existen en otras 2

No sería mejor verificar con un LIKE fecha= $fecha ??

Between te traerá registros entre una fecha y otra... pero si quieres saber si existen, pues tendras que compararlas con LIKE o similar...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #3 (permalink)  
Antiguo 30/08/2013, 14:55
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como saber si 2 fechas existen en otras 2

Pues eso es lo que busco que este entre esas fechas obviamente incluyendolas.

EJEMPLO:
Fechas enviadas por formulario: fecha_1: 01/09/2013 - fecha_2: 05/09/2013
Fechas en BD: fecha_1: 03/09/2013 - fecha_2: 07/09/2013

Si puedes ver aquí las fechas no son las mismas, sin embargo, no debería enviar el registro ya que existe una fecha en BD que esta entre las fechas seleccionadas en el formulario.
Si colocara el LIKE verificaria que la fecha_1 sea igual a la del formulario y la fecha_2 también, pero los días que estan entre esas dos fecha no las tomaría en cuenta.

Se que es con el BETWEEN pero no logro realizar la consulta correcta para que me funcione
  #4 (permalink)  
Antiguo 30/08/2013, 15:06
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 16 años, 1 mes
Puntos: 175
Respuesta: Como saber si 2 fechas existen en otras 2

Primero.. La sintaxis correcta de Between es

Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE campo_a_buscar BETWEEN valor_o_variable1 AND valor_o_variable2;

verifica si tu consulta cumple con ese requisito..

Luego explica por favor de que se trata tu proyecto, asi será más fácil ayudarte, ya que me hice bolas..
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 30/08/2013, 15:29
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como saber si 2 fechas existen en otras 2

ok lo cambie por esto

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM table WHERE fecha_1 BETWEEN ".$fecha_1." AND ".$fecha_2."")or die(mysql_error());
y sigue sin funcionar.

ok. Tengo un formulario en el que me pide la primer fecha y la segunda fecha. Al enviar el formulario me recoge los datos y los valido.

$fecha_1 = $_POST["fecha_1"];
$fecha_2 = $_POST["fecha_2"];

Estas fechas no deben ser iguales a ninguna que este en BD ni que esten entre ninguna de las fechas.

Por lo tanto si el usuario envia:

FECHA 1 = 2013/12/01 y FECHA 2 = 2013/12/05

Tengo que buscar en mi BD si esas fechas no estan registradas de lo contrario enviar un mensaje "Las fechas ya estan ocupadas"

Por lo tanto si en mi BD tengo las siguientes fechas

FECHA 1 | FECHA 2
2013/12/01 | 2013/12/05 -> Como son las mismas envía mensaje
2013/12/04 | 2013/12/07 -> Como la primer fecha esta entre las dos fechas enviadas envía mensaje
2013/11/30 | 2013/12/03 -> Como la segunda fecha esta entre las dos fechas enviadas envía mensaje
2013/12/03 | 2013/12/04 -> Como las dos fechas estan entre las dos fechas enviadas envía mensaje
2013/12/10 | 2013/12/12 -> Como ninguna de las fechas corresponde con las fechas enviadas se guardan en BD
  #6 (permalink)  
Antiguo 30/08/2013, 15:43
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 11 años, 3 meses
Puntos: 55
Respuesta: Como saber si 2 fechas existen en otras 2

Hola nades.
Sugerencias.
1.-Deben ser 2 Comparaciones dentro la consulta sql FECHA1 BETWEEN... OR FECHA2 BETWEEN.
2.-Debes revisar que tu fecha a comparar tenga el formato q tienes en la bd.
3.-Debes agregar Date($VARIABLE) a la que comparas para q mysql sepa que es una fecha y no te de resultados raros.
Saludos
  #7 (permalink)  
Antiguo 30/08/2013, 16:37
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como saber si 2 fechas existen en otras 2

Hola Erick_MD9,
Una vez más gracias.

Pues en cuanto al segundo punto si tengo las fechas en el formato correcto puesto que probe esta consulta y si las fechas del formularios son las mismas que hay en BD me manda el mensaje que quiero

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM table WHERE fecha_1 LIKE '%$fecha_1%' OR fecha_2 LIKE '%$fecha_2%'")or die(mysql_error());

Ahora he estado intentando hacer con el BETWEEN pero en vez de mandarme el mensaje me lo guarda en BD. Solo estoy probando con la primer fecha.

Código PHP:
Ver original
  1. $query = mysql_query("SELECT * FROM table WHERE fecha_1 BETWEEN ".$fecha_1." AND ".$fecha_2."")or die(mysql_error());

No se que este mal en mi consulta, intente agregarle el date que comentas pero me sigue guardando en BD.
  #8 (permalink)  
Antiguo 30/08/2013, 16:52
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 11 años, 3 meses
Puntos: 55
Respuesta: Como saber si 2 fechas existen en otras 2

Mmmmm.

Si quieres terminar el script debes usar exit() ó die()

if(mysql_num_rows($datos_fechas)!=0){
exit("Las fechas seleccionadas ya estan ocupadas");
}

Si no es eso, no endiendo.

Saludos
  #9 (permalink)  
Antiguo 30/08/2013, 17:02
 
Fecha de Ingreso: enero-2013
Ubicación: Distrito Federal
Mensajes: 88
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: Como saber si 2 fechas existen en otras 2

Listo!!
Ya logre mostrar lo que quería. Gracias

Etiquetas: php+bd+mysql
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 12:16.