Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta mysql "especial"

Estas en el tema de Consulta mysql "especial" en el foro de Mysql en Foros del Web. Buenas, estoy haciendo un sistema de ofertas de trabajo para una empresa y en la administracion tengo que hacer para que el administrador pueda buscar ...
  #1 (permalink)  
Antiguo 03/07/2006, 01:51
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 18 años, 4 meses
Puntos: 0
Consulta mysql "especial"

Buenas,
estoy haciendo un sistema de ofertas de trabajo para una empresa y en la administracion tengo que hacer para que el administrador pueda buscar las ofertas por:
1.- referencia
2.- titulo
3.- titulo que este entre la fecha 1 y fecha 2

Las dos primeras estan hechas perfectamente pero la tercera he probado de hacer la llamada a mysql de muchas maneras pero no consigo que funcione, a ver si me podeis echar un cable.
El query debe mostrar todo los datos que tengan el titulo que hemos escrito en el form, pero solo los que esten entre las dos fechas que el administrador haya insertado.
Espero haber explicado bien lo que necesito, a ver si me podeis ayudar.
Un saludo,
n3m0
  #2 (permalink)  
Antiguo 03/07/2006, 02:01
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
pues eso depende de como hayas declarado las fechas en la base de datos,

si lo tienes con un timestamp el formato seria asi: 20060703140247, por lo que tendrias que modificar el dato que le pasas (2006/07/03) y dejarlo asi : 20060703 y añadirle detras 000000 en el caso de fecha de inicio y 235959 en el caso de fecha final:

select * from tabla where (".titulo=$titulo.") and (fecha_inicio>= ' ".$fechainicio." 000000') and
(fecha_final<=' ".$fechafinal." 235959')

si la fecha la tienes con un date tienes que acordarte de meter detras del dato que le pasas las horas (00:00:00 o 23:59:59), tambien tienes que ver en que formato te mete la fecha en la base de datos (2006/07/03 o 03/07/2006) porque puede dar errores...

select * from tabla where (".titulo=$titulo.") and (fecha_inicio>= ' ".$fechainicio." 00:00:00') and
(fecha_final<=' ".$fechafinal." 23:59:59')

mas o menos sería eso, que alguien me corrija si está mal explicado jajaja...

saludosss..
__________________
ALOZORRO v5.0 (ahora en .es)
  #3 (permalink)  
Antiguo 03/07/2006, 02:08
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 18 años, 4 meses
Puntos: 0
Buenas azrael. te cuento como esta el tema de la fecha.
En la Bd solo hay un campo fecha "fecha_oferta" al insertarla hago un time() y lo meto en segundos. Entonces en el formulario de administracion con la ayuda de un calendario el cliente inserta las fechas que despues las paso a time para poder hacer $fecha1 y $fecha2. Quiero que de la bd coja cuando $fecha1 <= fecha_oferta =<$fecha2.
Perdon por no haberlo explicado bien ;)
  #4 (permalink)  
Antiguo 03/07/2006, 02:15
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
Cita:
Quiero que de la bd coja cuando $fecha1 <= fecha_oferta =<$fecha2
.

bueno.. esta parte es como te lo puse yo $fecha1 seria la fecha_final y $fecha2 la de inicio.

por lo demas el problema estaría en el formato de las fechas, si haces un time() te lo guarda como date en la base de datos (vamos, eso creo); entonces el fallo supongo que estará en el paso de las variables para hacer la consulta, que puede que las coja como 2006/07/03 en lugar de 03/07/2006 (o viceversa)...

para comprobar eso haz un echo de los valores que le pasas a la consulta antes de hacerla para que te muestre el formato de la fecha y ya ves si el fallo está ahi o no...
__________________
ALOZORRO v5.0 (ahora en .es)
  #5 (permalink)  
Antiguo 03/07/2006, 02:19
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 18 años, 4 meses
Puntos: 0
Las mete en la bd en forma de time, ya que le hago un mktime antes de entrar.
seria mas facil hacerlo en date? es que normalmente lo he echo asi... y claro nose.

La consulta tal como esta me da un problema con la sintax de mysql.


$sql= "select * from ofertas where (tit_oferta = $titol) and (fecha_oferta>= ' ".$fechaz1." 000000') and
(fecha_oferta <=' ".$fechaz2." 235959') ORDER BY fecha_oferta DESC";

Gracias ;)
  #6 (permalink)  
Antiguo 03/07/2006, 10:11
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 18 años, 4 meses
Puntos: 0
Me sigue sin funcionar :( una ayuda por favor
  #7 (permalink)  
Antiguo 03/07/2006, 17:07
 
Fecha de Ingreso: junio-2005
Mensajes: 23
Antigüedad: 19 años, 5 meses
Puntos: 0
no sé si te ayude, pero en esta consulta deberías usar la funcion between(). ahora, ojo con el formato de las fechas... solo para recordarte mysql trabaja las fechas con el formato aaaa/mm/dd, alveres de como la leemos por estos lares.
la verdad es que sale mas facil trabajar con date(), pero me tinca que con time() las horas debieras ponerlas 23:59:59

$sql= "select * from ofertas where (tit_oferta = ' ".$titol." ') and (fecha_oferta between ' ".$fechaz1." 00:00:00' and ' ".$fechaz2." 23:59:59') ORDER BY fecha_oferta DESC";

algo asi.

recuerda tambien, que le estas pasando otro parametro a la clausula where "tit_oferta", entregará resultados una vez que coincidan ambos parametros. además me parece que tit_oferta es de tipo varchar... entonces revisa las comillas... tit_oferta=' ".$titol." '

suerte!!!

Última edición por pipo165; 03/07/2006 a las 17:16
  #8 (permalink)  
Antiguo 04/07/2006, 05:21
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
entre la comilla simple y la doble puse un espacio para que se viese que son comilla simple y doble.. pero ese espacio sobra

Cita:
(fecha_oferta>= '".$fechaz1." 000000') and
(fecha_oferta <='".$fechaz2." 235959') ORDER BY fecha_oferta DESC";
__________________
ALOZORRO v5.0 (ahora en .es)
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 14:00.