Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Mysql (http://www.forosdelweb.com/f86/)
-   -   Consulta mysql "especial" (http://www.forosdelweb.com/f86/consulta-mysql-especial-406287/)

n3m0 03/07/2006 01:51

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

Azrael666 03/07/2006 02:01

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..

n3m0 03/07/2006 02:08

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 ;)

Azrael666 03/07/2006 02:15

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...

n3m0 03/07/2006 02:19

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 ;)

n3m0 03/07/2006 10:11

Me sigue sin funcionar :( una ayuda por favor :'(

pipo165 03/07/2006 17:07

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!!!

Azrael666 04/07/2006 05:21

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";


La zona horaria es GMT -6. Ahora son las 04:18.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.