Foros del Web » Programando para Internet » PHP »

Buscar Por Indice O Contenido

Estas en el tema de Buscar Por Indice O Contenido en el foro de PHP en Foros del Web. Hola, tengo una pagina en la cual debo implementar un sistema de busqueda. manejo un bd con varias tablas como usuarios, municipios, artistas,obras,sitios turisticos, entre ...
  #1 (permalink)  
Antiguo 29/05/2006, 11:56
 
Fecha de Ingreso: agosto-2005
Mensajes: 17
Antigüedad: 18 años, 8 meses
Puntos: 2
Buscar Por Indice O Contenido

Hola,

tengo una pagina en la cual debo implementar un sistema de busqueda.
manejo un bd con varias tablas como usuarios, municipios, artistas,obras,sitios turisticos, entre otras. el caso en que me piden que el sistema de busqueda me permita buscar por índice, osea colocando la palabra a buscar, o por contenido, es decir que me meustre por carpetas los temas o contenidos a buscar.

El problema es que no tengo ni idea como hacer la busqueda por contenido para que me muestre las carpetas que son los temas que contiene la bd.

lo que se quiere es un sistema de busqueda como el que traen muchos programas, incluso fireworks, dreamweaver.

quisiera saber si hay un programa que haga esto o alguien que me guíe y me diga como empezar.

se los agradezco si me pueden ayudar.

Muchas gracias...
__________________
:-) Alexa
  #2 (permalink)  
Antiguo 29/05/2006, 13:26
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
De acuerdo

Pues va a resultar una tarea muy pesada para el servidor y mas si varios usuarios estas hacindo busqueda por contenido y ademas son demasiadas carpetas.
Creo que deberias reconsiderar la busqueda por contenido.

Saludillos.

PD. No repitas los post's. No esta permitido en el foro
  #3 (permalink)  
Antiguo 30/05/2006, 14:16
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
buscador o filtro por contenido en consulta de BD

lo primero es generar un formulario de busqueda.......
esto debe estar en tu pagina donde se ubicara el filtro...ademas lleva un script para transformar lo que escriba en minuscula... optimiza la busqueda...

------------------------------------------------------------------------
<form method="POST" name="form" action="pagina.php" ALIGN="top">

FILTRAR POR:

Nº documento
<input type="text" name="numero" maxlength="15" size="12" onChange="javascript:this.value=this.value.toLower Case();">

Nombre
<input type="text" name="nombre" maxlength="25" size="25" onChange="javascript:this.value=this.value.toLower Case();">

departamento
<input type="text" name="departamento" maxlength="15" size="11" onblur="valFecha(this)">*

Organismo
<select name="selorganismo">
<option value=""></option>
<option value="estado">SEC</option>
<option value="gobieno">CNE</option>
<option value="publico">CDEC</option>
</select>

<input type="submit" value="Filtrar" >

</form>


---------------------------------------------------------------------

si te das cuenta en esta linea

<form method="POST" name="form" action="pagina.php" ALIGN="top">

es necesario la direcciones a la pagina donde realizas las consultas a las base datos... o bien a un nuevo frame... esta vez lo haremos en la misma pagina

action="pagina.php"

primero seleccionamos ya los datos de la base datos y los listamos....
luego es necesario rescatar los datos del formulario... esto lo haremos antes del tag del <HTML> de la pagina misma.... seria mas o menos asi

---------------------------------------------------------------------

despues de conectarnos... realizamos la consulta...

<?php

$strsql = "SELECT numero, nombre, departamento , organismo FROM tutabla";

$numero=$_POST["numero"];
$nombre=$_POST["nombre"];
$departamento=$_POST["departamento"];

$organismo=$_POST["selorganismo"];

--------------------------------------------------------------------------
ahora generaremos el filtro... espero entiendas....
------------------------------------------------------------------------

//GENERAMOS FILTRO

if(strlen($numero)> 0) {
$strsql= $strsql.= " WHERE numero= '".$numero."'";
}
else {
if(strlen($nombre)>0 ){
$strsql.= " WHERE nombre LIKE '%".$nombre."%' ";

if(strlen($departamento)>0){
$strsql.= " AND departamento LIKE '%".$departamento."%' "; }
if(strlen($organismo)>0){
$strsql.= " AND organismo= '".$organismo."'";
}
}
----------------------------------------------------------------------
lo unico k hace es tomar la clave y preguntar por una id en el select... si esta vacio muestra todo lo k ahi en la base datos... asi cada vez k habras listara todo ya k no has llenado nada del filtro, luego podras aplicar filtro... si no ahi id (que en este caso es numero) no hace nada ... luego pregunta ahi nombre o algo k exista dentro de nombre.... EJ: filtrar por nombre: a ... mostrara todos los nombres de la base datos donde se encuentre contenida la vocal "a" en el nombre.... tambien puedes mezclar los criterios.... ej: nombre y departamento... etc.... y los lista... asi susecivamente... mmmm! si lo encuentra le suma otro criterio si es k lo has llenado claro en el filtro....con un AND y asi sucesivamente...
debes generar mas consultas anidadas por cuantos campos de filtro tengas... sino no podras mezclar todas los criterios de buskeda y se caera tu sistema ...
----------------------------------------------------------------------
de esta manera .. veras k solo invierto los dos primeros criterios....



if(strlen($departamento)>0 ){
$strsql.= " WHERE departamento LIKE '%".$departamento."%' ";

if(strlen($nombre)>0){
$strsql.= " AND nombre LIKE '%".$nombre."%' "; }
if(strlen($organismo)>0){
$strsql.= " AND organismo= '".$organismo."'";
}
}


asi sucesivamente con todos los campos de tu filtro..... espero sirva aios ;)

se me olvidava.... depues debes poner mas abajo la impresion de la ocnsulta de la base datos po... para ver el listado claro.... eso...aios ;)
atte seik -chile-
  #4 (permalink)  
Antiguo 30/05/2006, 21:20
 
Fecha de Ingreso: agosto-2005
Mensajes: 17
Antigüedad: 18 años, 8 meses
Puntos: 2
muchas gracias a las personas que me respondieron, intentaré seguir sus consejos.
__________________
:-) Alexa
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 09:44.