Foros del Web » Programando para Internet » PHP »

hacer solo si las fechas estan en la base

Estas en el tema de hacer solo si las fechas estan en la base en el foro de PHP en Foros del Web. Hola, tengo una calculador con fechas en una base de datos, que calcula precios, en la base tengo metido dos años, y tengo puesto que ...
  #1 (permalink)  
Antiguo 25/12/2011, 06:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
hacer solo si las fechas estan en la base

Hola,
tengo una calculador con fechas en una base de datos, que calcula precios,
en la base tengo metido dos años, y tengo puesto que si elige fecha que no esta en la base que de un mensaje etc.
El problema es si eligen una fecha de principio que esta en la base pero la fecha del fin no esta, pues calcula el precio de las fechas que esta y eso esta mal.
Entonces quiero poner un select que haga que solo cuente el precio si las fechas de principio y fin esta en la base (llegada y salida) y estoy intentando hacer esto, pero me da error en la linea del if:

$result4 = mysql_query ("SELECT cal_date FROM calendar_table");
while ($rows = mysql_fetch_array($result4)){
if ($rows['cal_date'] between $llegada && $salida ){

las fechas $llegada y $salida las eligen en un formulario

como se debe poner?
Un saludo y gracias
  #2 (permalink)  
Antiguo 25/12/2011, 07:01
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: hacer solo si las fechas estan en la base

Ahora me caigo que a lo mejor es mas facil con mysql directemente, pero no va, me devulve filas
SELECT cal_date FROM calendar_table
where '2013-06-12' between Cal_date AND '2014-01-01' between Cal_date AND property = 'Casa_Blanca_4'
Hay metido en la base 2012-01-01 hasta 2012-12-31
y como he puesto una fecha de 2012 en el and pensaba que me iba a dar un resultado vacio, pero no me lo daba....alguna idea o con mysql o php
  #3 (permalink)  
Antiguo 25/12/2011, 07:05
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: hacer solo si las fechas estan en la base

Hola helenp, si no me equivoco between se usa con sql, es decir dentro de una consulta...
ejemplo:
Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE campo BETWEEN $llegada AND $salida
o
Código SQL:
Ver original
  1. SELECT * FROM tabla WHERE campo >= $llegada AND campo <= $salida

Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #4 (permalink)  
Antiguo 25/12/2011, 07:35
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: hacer solo si las fechas estan en la base

si, no pensaba que ere mysql, pero between y <= es lo mismo,
y por lo tanto he probado este codigo en mysql admin y me da 20.000 filas,
cuando no debe de dar ninguno ya que 2014-01-01 no esta en la base,
este es lo que he probado:
SELECT * FROM calendar_table WHERE cal_date >= '2012-06-13' AND cal_date <= '2014-01-14'

para asegurarme que no hay nada de 2014 he hecho esta query y me da un resultado vacio, 0 filas:
SELECT * FROM calendar_table WHERE cal_date = '2014-01-14'

gracias, de verdad no entiendo nada, es que selleciona lo que es mayor a 2012-06-13 pero menor a 2014-01-14
y quiero 0

Última edición por helenp; 25/12/2011 a las 08:31
  #5 (permalink)  
Antiguo 25/12/2011, 08:32
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: hacer solo si las fechas estan en la base

Hola,
Cómo selecciona el usuario las fechas? cómo es esa tabla de dos fechas?, te pregunto ya que una solución sencilla sería que eligiera las fechas desde un select de un formulario y así siempre los valores estarían en la base de datos, ahora si quieres que nunca se seleccione una fecha mayor a hoy limita la consulta, resumiendo es mejor que coloques el código de lo que quieres lograr,
Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #6 (permalink)  
Antiguo 25/12/2011, 09:13
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: hacer solo si las fechas estan en la base

Cita:
Iniciado por snowmanchip Ver Mensaje
Hola,
Cómo selecciona el usuario las fechas? cómo es esa tabla de dos fechas?, te pregunto ya que una solución sencilla sería que eligiera las fechas desde un select de un formulario y así siempre los valores estarían en la base de datos, ahora si quieres que nunca se seleccione una fecha mayor a hoy limita la consulta, resumiendo es mejor que coloques el código de lo que quieres lograr,
Saludos
El usuario selecciona las fechas con un formulario,
pero tambien nosotros que tenemos un intranet para calcular precio y alli puede haber fechas posibles que se pueda elegir fechas que aun no esta en la base, y ademas hay que cubrir la espalda pensando en todos los posibles errores.

Tengo una tabla en la cual he insertado las fechas en columna cal_date desde 2012-01-01 hasta 2013-12-31 y esas fechas estan repetidas x veces ya que cada propiedad tiene 352 filas por año (dias/año).

Lo que quiero lograr es que si por ejemplo por un error o no sabes que no hay 2014 en la base, se mete (llegada) 2013-12-13 hasta (salida) 2014-01-14 salga un error diciendo que aun no hay fechas (eso funciona), pero mas abajo calcula el precio de los dias que estan en la base, es decir hasta 2013-12-13 y eso es peligros, con las prisas y no leer bien, pues damos un precio erroneo.

Por lo tanto para evitar que se calcule el precio (es una pagina con muchos select y if y else etc) es llamar a la base y decir que se calcule solo si la fecha llegada y la fecha salida esta en la base, si no que no calcule, y para mi lo correcto sería no usar php como pensaba primero sino directamente en el mysql hacer un select que solo lo hace si cumple el select:
$result4 = mysql_query ("SELECT cal_date FROM calendar_table
where Cal_date between '$llegada' AND '$salida' AND property = '$propiedad' ");
if ($rows = mysql_fetch_array($result4)){
ó:
$result4 = mysql_query ("SELECT cal_date FROM calendar_table
where '$llegada' AND '$salida' between Cal_date AND property = '$propiedad' ");
if ($rows = mysql_fetch_array($result4)){
//Calculamos precio en propiedades disponibles
pero sale el mensaje diciendo que no hay precio como debe de hacer,
pero debajo sale un precio erroneo que es excluyendo los dias de 2014

Bueno, eso es lo que quiero hacer, gracias
  #7 (permalink)  
Antiguo 25/12/2011, 13:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 382
Antigüedad: 14 años, 10 meses
Puntos: 6
Respuesta: hacer solo si las fechas estan en la base

lol, cuando cae la moneda es simple, a veces uno intenta algo complicado que es simple, esto parece ir perfecto:
SELECT cal_date FROM calendar_table
where Cal_date = '2013-12-25' AND Cal_date = '2014-01-05' AND property = 'Casa_Blanca_4'

Etiquetas: ifs, 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 13:56.