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

¿hacer búsqueda en distintos campos?

Estas en el tema de ¿hacer búsqueda en distintos campos? en el foro de Mysql en Foros del Web. Hola Tengo un problemilla con una consulta, probablemente sea una tontería pero tengo el sql un poco olvidado y algo me falta fijo... El caso ...
  #1 (permalink)  
Antiguo 13/08/2008, 14:10
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
¿hacer búsqueda en distintos campos?

Hola

Tengo un problemilla con una consulta, probablemente sea una tontería pero tengo el sql un poco olvidado y algo me falta fijo...

El caso es que tengo una base de datos donde la gente puede buscar por fecha o por otro tipo de campo (nombre de usuario o estado...).

La gente puede buscar un mes de un año para un usuario en concreto o un estado en concreto, o directamente no rellenar algún campo...

El caso es que si hago esto:

Código PHP:
 $sql=mysql_query("SELECT * FROM $tabla WHERE MONTH(fecha) = $mes AND YEAR(FECHA) = $ano AND estado = '$estado' ORDER BY 'fecha'"$conexion); 
No funciona auque por separado si, es decir si quito lo de buscar fecha me busca el estado, y si quito lo de estado puedo buscar fecha, si no me da parset error. Yo supongo que es el AND después de $ano que no es así la sentencia...

Gracias
  #2 (permalink)  
Antiguo 13/08/2008, 14:38
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: ¿hacer búsqueda en distintos campos?

Podrias colocar tambien el mensaje de error, nomas para echarle un vistazo.
  #3 (permalink)  
Antiguo 13/08/2008, 14:44
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\easyphp1-8\www\busqueda1.php on line 69

pero este error es de la consulta después del segundo AND osea que tiene que estar mal...
  #4 (permalink)  
Antiguo 13/08/2008, 14:50
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: ¿hacer búsqueda en distintos campos?

Probe la consulta directamente en MySQL y jalo perfecto.

Código:
SELECT * FROM tabla
	WHERE MONTH(fecha) = 5
	AND YEAR(fecha) = 2008
	AND estado = 'cualquiera' ORDER BY fecha
Podria ser que no esta recuperando las variables: $estado, $ano, $mes.
  #5 (permalink)  
Antiguo 13/08/2008, 14:55
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

Ah vale el error es que las variables mes y año no pueden quedar vacias... Lo que yo quisiera es que dichas variables no fuesen obligatorio rellenarlas... es decir que pueda hacer búsqueda de esos tres campos auque uno no esté relleno no se si me explico

Porque si en el campo $mes meto algo no da error pero si lo dejo vacio si... No se como busque todos los campos auque no estén llenos no se si me explico
  #6 (permalink)  
Antiguo 13/08/2008, 15:14
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: ¿hacer búsqueda en distintos campos?

Si las variables:
$mes = "";
$ano = "";
$estado = "";

Podrias solucionarlo modificando la consulta:
Código:
SELECT * FROM tabla
	WHERE MONTH(fecha) LIKE '$mes'
	AND YEAR(fecha) LIKE '$ano'
	AND estado LIKE '%$estado%' ORDER BY fecha

Última edición por Taldreakan; 13/08/2008 a las 16:10
  #7 (permalink)  
Antiguo 13/08/2008, 15:37
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

si lo modifico así, no me funciona me da el mismo parset error, que es dat_hom_modify por cierto?

Lo que yo busco es que si no relleno nada en mes o año me muestre todos los meses o años sin filtro de busqueda vamos
  #8 (permalink)  
Antiguo 13/08/2008, 15:51
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

vale...

Si dejo la consulta así:
$sql=mysql_query("SELECT * FROM $tabla WHERE MONTH(fecha) LIKE '%$mes%' AND YEAR(FECHA) = $ano AND estado = '$estado' AND nombre LIKE '%$nombre%' ORDER BY fecha", $conexion);

el campo nombre me cumple la funcion que yo quiero (es decir busca nombre snocompletos, solo coincidencias...

El problema es el campo $mes ya que como lo tengo puesto, solo me muestra los datos si no relleno el mes, es decir si pongo algún mes con datos no me muestra registros...

Saludos
  #9 (permalink)  
Antiguo 13/08/2008, 16:13
Avatar de Taldreakan  
Fecha de Ingreso: julio-2008
Mensajes: 128
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: ¿hacer búsqueda en distintos campos?

Espero que esta sea la buena...

Código:
SELECT * FROM tabla
	WHERE MONTH(fecha) LIKE '%$mes%'
	AND YEAR(fecha) LIKE '%$ano%'
	AND estado LIKE '%$estado%' ORDER BY fecha
Haber que pasa
  #10 (permalink)  
Antiguo 13/08/2008, 16:30
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 7 meses
Puntos: 23
Respuesta: ¿hacer búsqueda en distintos campos?

pues si lo que quies es que solo se valide el mes si en el formulario lo llenaron genera la cadena del qry en php y despues la ejecutas
$qry= " select * from ".$tabla." where nombre like '%".$nombre."%'";
if(isset($_POST["ano"]))
$qry.=" and year(fecha)=".$_POST["ano"]." ";
if(isset($_POST["mes"]))
$qry.=" and year(fecha)=".$_POST["mes"]." ";
$qry.=" and estado='".$estado."' order by fecha";

$sql=mysql_query($qry,$conexion);
  #11 (permalink)  
Antiguo 14/08/2008, 01:08
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

Ummm para poner en situación:

Tengo 4 campos de formularios donde tenemos mes año nombre y estado

nombre lo puedo dejar vacio tal y como tengo la consulta, si lo dejo vación me aparecen todos los nombres... Con el estado tampoco hay problema porque es un desplegable de dos tipos de estado

Con lo que yo quiero de año y mes es que si pongo año X y mes X me muestre los registros, pero que si dejo año o mes o los dos vacios, me muestre todos los registros en general no se si me entendéis

Taldreakan esa consulta es la misma que tengo yo :)
  #12 (permalink)  
Antiguo 14/08/2008, 04:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 237
Antigüedad: 16 años, 10 meses
Puntos: 3
Respuesta: ¿hacer búsqueda en distintos campos?

puf, no hay manera, algo raro está fallando porque en internet lo ponen así con LIKE '%$mes%' pero no me funciona, solo anda si no relleno campo... si inserto datos 08 09 10... nada, y eso que en esos meses si hay datos
  #13 (permalink)  
Antiguo 14/08/2008, 22:39
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 4 meses
Puntos: 655
Respuesta: ¿hacer búsqueda en distintos campos?

Favor NO colocar código ni variables utilizadas en las mismas.

Función de la sección de Base de Datos
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
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 16:39.