Problemas con sentencia de búsqueda
Hola pedroip
Tengo un formulario de búsqueda para mi base de datos php y mysql que no consigo hacer funcionar del todo.
Este formulario consta de 7 selects de lista/menú y una caja de texto libre. Cada uno de estos selects pertenece a un campo de la BD. Por defecto están en la selección "todos", es decir, que si no se selecciona nada en ninguno se seleccionan todos los registros de cada uno de los campos a los que pertenece el select. Cada select tiene dos opciones:
1.- Si no se selecciona nada se muestran todos los registros de ese campo.
2.- Seleccionar una de las posibles opciones del select.
Esto tiene que ser así con los siete select que hay.
Además lógicamente tiene que poder dar el resultado de cualquier combinación posible que se puede dar de los siete selects.
He conseguido que funcione cuando todos los selects están en la posición "todos" o cuando hay un solo select seleccionando una opción distinta de "todos" y todos los demás selects están en "todos". Pero cuando quiero combinar varios selects con opciones seleccionadas, esto ya no funciona...
Paso a poner la sentencia que tengo hecha:
=======================================
$query_maestra = "SELECT vino.id_vino,vino.pais, vino.nombre, vino.dominio, vino.region, vino.denominacion, vino.tipo, vino.uva, vino.cosecha, vino.precio, vino.tbotella, vino.coment, vino.califica, vino.imagen FROM vino ";
/* Si no se selecciona en el formulario ningún país esta sentencia busca en todos los del campo país de la tabla vino. Hacemos lo mismo con el resto de campos */
if ($_GET['pais']!='0') {
$query_maestra .= "WHERE(vino.pais='".$_GET['pais']."') " ;
}
if ($_GET['region']!='0') {
$query_maestra .= "WHERE(vino.region='".$_GET['region']."') " ;
}
if ($_GET['denominacion']!='0') {
$query_maestra .= "WHERE(vino.denominacion='".$_GET['denominacion']."') " ;
}
if ($_GET['tipo']!='0') {
$query_maestra .= "WHERE(vino.tipo='".$_GET['tipo']."') " ;
}
if ($_GET['uva']!='0') {
$query_maestra .= "WHERE(vino.uva like'%".$_GET['uva']."%') " ;
}
if ($_GET['cosecha']<>'') {
$query_maestra .= "WHERE(vino.cosecha='".$_GET['cosecha']."') " ;
}
if ($_GET['precio']!='0') {
$query_maestra .= "WHERE(vino.precio='".$_GET['precio']."') " ;
}
if ($_GET['precio']!='0') {
$query_maestra .= "WHERE (vino.precio BETWEEN '0' AND '".$_GET['precio']."') " ;
}
if ($_GET['califica']!='0') {
$query_maestra .= "WHERE(vino.califica='".$_GET['califica']."') " ;
}
=======================================
Muchas gracias
Tengo un formulario de búsqueda para mi base de datos php y mysql que no consigo hacer funcionar del todo.
Este formulario consta de 7 selects de lista/menú y una caja de texto libre. Cada uno de estos selects pertenece a un campo de la BD. Por defecto están en la selección "todos", es decir, que si no se selecciona nada en ninguno se seleccionan todos los registros de cada uno de los campos a los que pertenece el select. Cada select tiene dos opciones:
1.- Si no se selecciona nada se muestran todos los registros de ese campo.
2.- Seleccionar una de las posibles opciones del select.
Esto tiene que ser así con los siete select que hay.
Además lógicamente tiene que poder dar el resultado de cualquier combinación posible que se puede dar de los siete selects.
He conseguido que funcione cuando todos los selects están en la posición "todos" o cuando hay un solo select seleccionando una opción distinta de "todos" y todos los demás selects están en "todos". Pero cuando quiero combinar varios selects con opciones seleccionadas, esto ya no funciona...
Paso a poner la sentencia que tengo hecha:
=======================================
$query_maestra = "SELECT vino.id_vino,vino.pais, vino.nombre, vino.dominio, vino.region, vino.denominacion, vino.tipo, vino.uva, vino.cosecha, vino.precio, vino.tbotella, vino.coment, vino.califica, vino.imagen FROM vino ";
/* Si no se selecciona en el formulario ningún país esta sentencia busca en todos los del campo país de la tabla vino. Hacemos lo mismo con el resto de campos */
if ($_GET['pais']!='0') {
$query_maestra .= "WHERE(vino.pais='".$_GET['pais']."') " ;
}
if ($_GET['region']!='0') {
$query_maestra .= "WHERE(vino.region='".$_GET['region']."') " ;
}
if ($_GET['denominacion']!='0') {
$query_maestra .= "WHERE(vino.denominacion='".$_GET['denominacion']."') " ;
}
if ($_GET['tipo']!='0') {
$query_maestra .= "WHERE(vino.tipo='".$_GET['tipo']."') " ;
}
if ($_GET['uva']!='0') {
$query_maestra .= "WHERE(vino.uva like'%".$_GET['uva']."%') " ;
}
if ($_GET['cosecha']<>'') {
$query_maestra .= "WHERE(vino.cosecha='".$_GET['cosecha']."') " ;
}
if ($_GET['precio']!='0') {
$query_maestra .= "WHERE(vino.precio='".$_GET['precio']."') " ;
}
if ($_GET['precio']!='0') {
$query_maestra .= "WHERE (vino.precio BETWEEN '0' AND '".$_GET['precio']."') " ;
}
if ($_GET['califica']!='0') {
$query_maestra .= "WHERE(vino.califica='".$_GET['califica']."') " ;
}
=======================================
Muchas gracias
1 respuesta
Respuesta de pedroip
1