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

Duda para crear "búsquedas"

Estas en el tema de Duda para crear "búsquedas" en el foro de Mysql en Foros del Web. Hola Necesito para una aplicación crear una especie de búsqueda donde tenga varias partes. Una parte quiero que directamente me muestre la base de datos ...
  #1 (permalink)  
Antiguo 04/08/2008, 14:08
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Duda para crear "búsquedas"

Hola

Necesito para una aplicación crear una especie de búsqueda donde tenga varias partes.

Una parte quiero que directamente me muestre la base de datos creada en el mes en curso, y otra parte donde pueda utilizar una búsqueda diciendo el mes y el año y me diga el contenido del mes

Para mostrar el mes en curso he pensado usar una variable con la opcion de date algo así como

$variable = date ('m') para que me muestre solo el mes en curso con dos dígitos

La fecha la guardo en mysql de serie es decir 0000-00-00. Entonces lo que no se es como decir que busque en el mes, el mes en curso ya que si date me da el mes en curso (en este caso 08), que me muestre todas las de dicho mes... supongo que será con un select * from tabla were fecha = algo...

Saludos
  #2 (permalink)  
Antiguo 04/08/2008, 14:37
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

Si buscas todos los registros del mes en curso deberías buscarc coincidencias de año y mes. Una posible consulta sería esta. CURDATE() es la fecha del día de hoy. Con esta consulta haces coincidir el año y el mes del registro con el año y el mes del día de hoy...

SELECT * FROM tabla WHERE YEAR(fecha) = YEAR(CURDATE()) AND MONTH(fecha) = MONTH(CURDATE())
  #3 (permalink)  
Antiguo 04/08/2008, 14:43
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

hombre en principio solo me interesaría buscar el mes en curso y luego hacer a parte busqueda con un check list en html donde cada año corresponda a un numero y luego buscarlo en la fecha...

No hay algo simple usando date en na variable o algo? es que con esta funcion que me cuentas no me entero mucho
  #4 (permalink)  
Antiguo 04/08/2008, 21:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

Si quieres sólo el número del mes en curso:

SELECT MONTH( CURDATE( ) ) AS mes_en_curso

esto te mostrará el número del mes en curso, en este caso 8; pero piensa que cuando busques en tu base si sólo pones el mes en curso, te sacará todos los registros de agosto, sean del año que sean, y eso no es lo que buscas, ¿verdad?,
por eso te puse la otra consulta que busca año y mes...

En cuanto a lo otro, esas variables de las que hablas, este no es el foro, pero creo que lo que quieres lo consigues con MySQL y con consultas parecidas a estas que te propongo. No son difíciles; esta en concreto sería "selecciona el mes del día actual y ponle la etiqueta de mes_en_curso".

SELECT * FROM nombretutabla WHERE YEAR(fecha) = YEAR(CURDATE()) AND MONTH(fecha) = MONTH(CURDATE())
y esta: "selecciona todos los campos de la tabla nombretutabla en los que el campo fecha tenga el mismo año y mes que el día de hoy".
  #5 (permalink)  
Antiguo 05/08/2008, 03:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

ajá, esto me puede servir para ver el mes actual en pantalla, pero para hacer búsquedas supongo que a través de formulario o algo se podrá verdad?

Es decir dos cuadros de lista donde uno sean los meses y los otros los años pero no se muy bien como hacerlo...

Por otra parte en lo que me comentas, como distingue la consulta o como sabe que de el campo DATE de la tabla tiene que extraer el año y el mes...
  #6 (permalink)  
Antiguo 05/08/2008, 06:08
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

Todo eso que dices es fácil, una vez que tienes los datos almacenados con el tipo adecuado.
En primer lugar:
Con la base de datos, teniendo la fecha como date o datetime, etc., puedes traerte y comparar usando las funciones
para el año, YEAR (campofecha)
para el mes, MONTH(campofecha)
para el día, DAY(campofecha)

es decir SELECT YEAR(campofecha) AS AÑO FROM TUTABLA te mostrará todos los años de ese campo fecha...
etc.

Lo otro que dices, tampoco es problema, pero eso sí pueden decírtelo en el foro apropiado, enp parte PHP y HTML. Si tú tienes tres selectores, solo se trata de reunir en una cadena los datos seleccionados en los tres haciéndolo en el orden año-mes-día y luego esa cadena puede usarse para hacer las consultas de comparación con los datos de la base. Pues en la base están incluidos en ese orden.

Última edición por jurena; 07/08/2008 a las 05:42
  #7 (permalink)  
Antiguo 07/08/2008, 05:11
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

vale, esa parte ya la he entendido, pero si yo por ejemplo quisiera buscar un mes concreto de un año que no sea el que está en curso...

¿Como puedo buscar dentro del campo de fecha datetime?
  #8 (permalink)  
Antiguo 07/08/2008, 05:40
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

Imagina que buscas marzo de 2003 en el campofecha de tutabla

SELECT campo1, campo2, campo3 FROM nombretutabla WHERE YEAR(campofecha) = 2003 AND MONTH(campofecha) = 3

La función MONTH te devuelve el mes del campo en numérico de 1 a 12. Échale un vistazo a las funciones en el manual de MySQL.
  #9 (permalink)  
Antiguo 07/08/2008, 05:45
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

ya vale, lapso mío...

Para que la aplicación me presente el mes actual lo he hecho tal que así

SELECT * FROM $tabla WHERE MONTH(fecha) = $mes ORDER BY 'fecha'"

Donde $tabla es el nombre de mi tabla y $mes es una función (gmdate) que me presenta el mes en curso (08 en este caso)

Para hacer búsquedas de día mes y año me haré unos desplegagles en HTML donde luego pueda recogerlos en unas variables y hacer misma operación

Gracias
  #10 (permalink)  
Antiguo 07/08/2008, 05:53
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

Esto no te funcionará para encontrar el mes del año en curso, pues te encontrará registros de otros años:


Yo usaría esto si quieres que sean del mes en curso y año en curso

SELECT campo1, campo2, campo3 FROM nombretutabla WHERE MONTH(fecha) = MONTH(CURDATE()) AND YEAR(fecha) = YEAR(CURDATE()) ORDER BY fecha
  #11 (permalink)  
Antiguo 07/08/2008, 15:50
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

Ciertamente, menudo fallo.

Con el SELECT que yo he hecho efectivamente me muestra los registros del mes en curso, pero del mes en curso para todos los años... agosto del 200x... Con el AND YEAR está resuelto si

Gracias

Aprobechando el poder "jugar" con estas consultas voy a crearme un "motor" de búsqueda a través de formularios para que se puedan encontrar registros de meses y años que el usuario quiera así como por usuarios ocampos...

Cuando usas campo = cualquier palabra, busca coincidencias o toda la palabra o que contenga la palabra?
  #12 (permalink)  
Antiguo 08/08/2008, 02:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

WHERE campo = "amigo"
busca amigo solamente
si quieres buscar una parte
WHERE campo LIKE "amig%"
busca amigo, amiga, amigos, etc.

Echa un vistazo http://dev.mysql.com/doc/refman/5.0/...functions.html
  #13 (permalink)  
Antiguo 08/08/2008, 04:32
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 11 meses
Puntos: 3
Respuesta: Duda para crear "búsquedas"

que triste que en la asignatura de bases de datos Access / MySQL sacase un 9.3 de media, para lo que he quedado, me tengo que repasar los apuntes

Gracias

PD: el problema con lo del % es que en las variables no podré usarlos porque son cadenas o palabras, algo me tendré que imaginar...
  #14 (permalink)  
Antiguo 08/08/2008, 05:00
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Duda para crear "búsquedas"

no desesperes, amigo; yo miro el manual todos los días más de 50 veces; no sólo la parte teórica, sino los ejemplos prácticos de usuarios. Te ayudará a sacar un 10 en bases de datos, al menos en esta...

En cuanto a lo de no poder usar % en el formulario. Allí no, pero puedes usar el asterisco * y luego sustituir el asterisco por % mediante programación antes de meter la cadena en la consulta. Yo lo he hecho y funciona.
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 17:19.