Foros del Web » Programando para Internet » PHP »

Armar query segun busqueda

Estas en el tema de Armar query segun busqueda en el foro de PHP en Foros del Web. hola amigos estoy haciendo una busqueda es una base de datos de mysql pero el query dependera de como el usuario haga su consulta esta ...
  #1 (permalink)  
Antiguo 06/09/2006, 10:02
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta Armar query segun busqueda

hola amigos estoy haciendo una busqueda es una base de datos de mysql pero el query dependera de como el usuario haga su consulta esta
es mi panatalla




mi dudas son la siguiente como podre armar el query de la siguiente manera
*-si el usuario teclea la palabra quiero hacer la busqueda
asi:

$sqlbusqueda="SELECT * FROM $ATRIBUTOS_IMAGENES WHERE PALABRAS_FOTO LIKE '%$palabra_clave%' ";

pero que pasa si el usuario no teclea nada en el campo palabra y deja que solo busque por los campos de tipo y color y claro dependera de la opcion
y asi sucesivamente con los demas campos es decir si los demas campos despues del campo color estan vacios pues obvio que esos los tomo en cuanta pero si el usuario teclea algo en alguno de esos campos como debe ser el query o los querys

espero me hayan entendido
espero sus comentarios
saludos y gracias
__________________
gerardo
  #2 (permalink)  
Antiguo 06/09/2006, 10:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Deberías simplemente ir armando la consulta de a pedazos, según cada comprobación.

por ejemplo:

if (seleccione una opcion de busqueda) {
$consulta .= "talcampo= tal texto AND"

¿se entiende la idea? vas guardando en $consulta lo que vas armando, luego le pegás la parte del SELECT * FROM..... . (Y por último le eliminás los 3 últimos caracteres, el último AND)


Saludos.
  #3 (permalink)  
Antiguo 06/09/2006, 10:15
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa

ok gracias por la ayuda intentare hacer asi como dices
gracias


Cita:
Iniciado por alvlin Ver Mensaje
Deberías simplemente ir armando la consulta de a pedazos, según cada comprobación.

por ejemplo:

if (seleccione una opcion de busqueda) {
$consulta .= "talcampo= tal texto AND"

¿se entiende la idea? vas guardando en $consulta lo que vas armando, luego le pegás la parte del SELECT * FROM..... . (Y por último le eliminás los 3 últimos caracteres, el último AND)


Saludos.
__________________
gerardo
  #4 (permalink)  
Antiguo 06/09/2006, 10:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Podrías usar también busquedas de "texto completo" (Full text search). Este tipo de consultas SQL para busquedas te permiten por ejemplo entregar resultados por "relevancia" .. sólo tienen el detalle de que no pudes usarlo con palabras a buscar de menos de 3 caracteres.

Un tutorial al respecto:
http://www.mysql-hispano.org/page.php?id=15

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 06/09/2006, 10:24
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa

ok gracias cluster me late esa idea para cuestiones de busqueda en campos text para notas o articulos publicados

saludos gracias
__________________
gerardo
  #6 (permalink)  
Antiguo 06/09/2006, 10:42
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta

Hola amigos lo puese de esta forma
$tipo=trim($_POST['tipotx']);
$color=trim($_POST['colortx']);

$comando=null;

if($palabra_clave!=null)
{
$comando=$comando."PALABRAS_FOTO LIKE '%$palabra_clave%' and ";
}

if($tipo!=null)
{
$comando=$comando."TIPO_FOTO='$tipo' and ";
}

if($color!=null)
{
$comando=$comando."COLOR_FOTO='$color' and";
}

$comandofi=rtrim(trim($comando),"and");
$sqlbusqueda="SELECT * FROM $ATRIBUTOS_IMAGENES WHERE $comandofi";

y pues funciona sera que se pueda mejorar

saludos
espero sus comentarios
__________________
gerardo
  #7 (permalink)  
Antiguo 06/09/2006, 10:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por chalchis Ver Mensaje
Hola amigos lo puese de esta forma
$tipo=trim($_POST['tipotx']);
$color=trim($_POST['colortx']);

$comando=null;

if($palabra_clave!=null)
{
$comando=$comando."PALABRAS_FOTO LIKE '%$palabra_clave%' and ";
}

if($tipo!=null)
{
$comando=$comando."TIPO_FOTO='$tipo' and ";
}

if($color!=null)
{
$comando=$comando."COLOR_FOTO='$color' and";
}

$comandofi=rtrim(trim($comando),"and");
$sqlbusqueda="SELECT * FROM $ATRIBUTOS_IMAGENES WHERE $comandofi";

y pues funciona sera que se pueda mejorar

saludos
espero sus comentarios
Si, .. con busquedas de texto completo (podrías probarlas) lo "bueno" que tienen es que te entregan resultados por "relevancia", es decir, .. primero los resutlados de los registros que los campos sobre los que se busca y dato a buscar coincide más y luego los que no va coincidiendo en todos o en todas partes.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 06/09/2006, 10:59
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
tengo un pequello detalle como le podre hacer en caso de que se deje todo en blanco los campos en los campos tipo select deja la opcio cualquiera(es decir todos los formatos y todo los colores)

en ese caso el query seria
$sqlbusqueda="SELECT * FROM $ATRIBUTOS_IMAGENES";

donde me aconsejan que ponga alguna validacion sobre poner el where o no ponerlo
sera que exista algun comando como el like que me indique sinimportar caracter??
saludos espero sus comentarios
y gracias por la ayuda



Cita:
Iniciado por chalchis Ver Mensaje
Hola amigos lo puese de esta forma
$tipo=trim($_POST['tipotx']);
$color=trim($_POST['colortx']);

$comando=null;

if($palabra_clave!=null)
{
$comando=$comando."PALABRAS_FOTO LIKE '%$palabra_clave%' and ";
}

if($tipo!=null)
{
$comando=$comando."TIPO_FOTO='$tipo' and ";
}

if($color!=null)
{
$comando=$comando."COLOR_FOTO='$color' and";
}

$comandofi=rtrim(trim($comando),"and");
$sqlbusqueda="SELECT * FROM $ATRIBUTOS_IMAGENES WHERE $comandofi";

y pues funciona sera que se pueda mejorar

saludos
espero sus comentarios
__________________
gerardo
  #9 (permalink)  
Antiguo 06/09/2006, 11:28
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
creo que esta es mi solucion no se que opinen

if($tipo!='tds')
{
$comando=$comando."TIPO_FOTO='$tipo' and ";
}
else
{
$comando=$comando."TIPO_FOTO IS NOT NULL and ";
}

if($color!='tds')
{
$comando=$comando."COLOR_FOTO='$color' and ";
}
else
{
$comando=$comando."COLOR_FOTO IS NOT NULL and
__________________
gerardo
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 15:34.