Foros del Web » Programando para Internet » PHP »

Advanced Search ???

Estas en el tema de Advanced Search ??? en el foro de PHP en Foros del Web. Hola a todos me gustaría que me pudieran colaborar, pues necesito realizar un buscador para una pagina de propiedades con múltiples opciones de búsqueda por ...
  #1 (permalink)  
Antiguo 29/10/2007, 16:21
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Busqueda Advanced Search ???

Hola a todos me gustaría que me pudieran colaborar, pues necesito realizar un buscador para una pagina de propiedades con múltiples opciones de búsqueda por rango de precios direcciones, ciudad etc.

La verdad ya he visto bastantes pero la mayoría que e visto solo tienen un text field y un boton submit, ya e probado tanto los de Full Text Match como los LIKE pero me gustaría encontrar algún tutorial para desarrollar alguno como comentaba antes, aprender mas sobre 'OR y 'AND' para las búsquedas avanzadas así que si alguien tiene un script de ayuda o una pagina con relación a lo que busco seria genial
  #2 (permalink)  
Antiguo 29/10/2007, 16:27
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Advanced Search ???

Hey compatriota como vas??

Pues bien, lo que necesitas es aprender a manejar Mysql... sus condicionales, sus sentencias, la manera de relacionar tablas, sabes que un math againts se hace solo con tablas Myisam no?? Las tablas innodb no lo soporta...

Yo de ti comenzarìa por ver el manual de mysql(en pdf,) o mira la página,es el principio de todo

De todas formas, acabo de programar un buscador con criterios de busqueda, si necesitas, te paso el còdigo para que lo mires y veas mas o menos como es el asunto, me avisas.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 29/10/2007, 17:47
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Advanced Search ???

Hola paisano bakan pues me pondré a mirar el manual de MySql, e visto por hay unas cositas muy interesantes como www.onlamp.com/pub/a/onlamp/2003/06/26/fulltext.html, pero te cuento que si me ayudaría bastante si me compartieras el codigo o no lo compartieras para otras personas que también tengan la misma duda que yo, por lo menos ami me ayudaría un resto a despejar ciertas dudillas por hay así que desde ya 1000 gracias
  #4 (permalink)  
Antiguo 30/10/2007, 11:15
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Advanced Search ???

El código prometido:

Código PHP:
<?php
/*FUNCION BUSCAR EN DETERMINADAS TABLAS DE LA DB
Realizada por: Carxl
Colaborador: Jorge Morales Linares

Esta función busca en las tablas que pase el programador como parámetro. Cómo último parámetro de la función se debe pasar el criterio
de búsqueda, la frase. Esta función asume que ya se validaron los datos para que quede almacenado en un array las palabras a buscar.

Explicación:

Si el programador hace lo siguiente:

$encon=buscar('archivos','contactos','direcciones','subcategorias',$palabra);

Está diciendo busque en las tablas de una db llamadas 'archivos','contactos','direcciones','subcategorias' el criterio de búsqueda
contenido en $palabra, donde $palabra puede ser un array o simplemente una palabra.

El resultado de la búsqueda queda guardado en $encon(es un array multidimensional), y arroja: la tabla donde se encontró la coincidencia, el id del registro, y el 
campo que conincidió.

Para mostrar los datos se debe llamar así:
echo $encon[0]['tabla']." ".$encon[0]['id']." ".$encon[0]['campo'];

Donde 'tabla' es el nombre de la tabla donde se encontró la coincidencia, su respectivo 'id' y 'campo' el campo que coincidió. 0(cero)
quiere decir que muestre en su posición cero, osea que para varios registros debe hacer un ciclo repetitivo cargando el indice de la 
matriz en la variable correspondiente:

//contar cuantos registros encontró;
$num_encontradas=count($encon);
//Ya se puede realizar el ciclo
for($x=0;$x<$num_encontradas;$x++)
{
    echo $encon[$x]['tabla']." ".$encon[$x]['id']." ".$encon[$x]['nomcampo']."<br>";
}

Creo que no es más...
*/
include("conexion_db.php");

function 
buscar()
{
    
//la variable $db es para realizar las consultas que vienen de conexion_db.php, para mi caso la necesitaba así. Pueden cambiar
    //la manera de conexión
    
global $db;
    
    
$f=0;
    
//obtener el número de parámetros
    
$num_parametros=func_num_args();    
    
//obtener el último parámetro para saber  cual fue la frase clave
    
$id_frase=$num_parametros-1;    
    
//con el número del parámetro, obtengo el nombre del parámetro que lo guardo en la variable $palabra
    
$palabra=func_get_arg($id_frase);    
    
//establecer en una matriz ordenada los parámetros llamada $nombre_tabla
    
$nombre_tabla=func_get_args();
    
//conexión a la DB
    
$link=conexiondb();
    
//si conecta
    
if($link!=1)
    {
        
//un ciclo for para buscar mientras el numero de tablas -1, -1 por que el último parámetro no es una tabla sino el criterio
        
for ($id_tabla 0$id_tabla $num_parametros-1$id_tabla++) 
        {     
            
//la consulta para traer todos los campos de esta tabla            
            
$i=0;
            foreach(
$palabra as $pal)
            {
                
//convierto en minúsculas las parámetros
                
$nombre_tabla[$id_tabla]=strtolower($nombre_tabla[$id_tabla]);
                
                
$sql="SHOW FIELDS FROM ".$nombre_tabla[$id_tabla];            
                
$ras=$db["mq"]($sql);
                
$numero_atributos=$db["nr"]($ras);
                
//echo "Tabla: ".$nombre_tabla[$id_tabla]."---".$pal."ºººººººººººººººººººº<br>";
                
while($raw=$db["fa"]($ras))
                {
                    
//echo $raw[0]." --> ".$pal."<br>";
                    
if($i==0)
                    {
                        
//echo "enta la primera vez!!!!!!!!!!!!!!!!!!!!!<br>";
                        
$criterio=$raw[0]." like '%$pal%'";                        
                    }
                    else
                    
//else if($i==$numero_atributos-1)
                    
{
                        
$criterio.=" or ".$raw[0]." like '%$pal%'";
                    }
                    
$i++;
                }
                
$i=0;
                
//echo "Tabla:la parte: ".$criterio."<br>";
                /*echo "Completa la consulta: SELECT * FROM ".$nombre_tabla[$id_tabla]." WHERE ".$criterio;
                echo "<br>";*/
                
$concon="SELECT * FROM ".$nombre_tabla[$id_tabla]." WHERE ".$criterio;
                
$raz=$db["mq"]($concon);
                while(
$razz=$db["fa"]($raz))
                {
                    
//echo "HUBO CONSULTA: ".$razz[0]." ".$razz[1]." ".$razz[2]."<br>";
                    //esta es la matriz donde queda almacenada la tabla donde pertenece el campo y su id...
                    
$matriz[$f]['tabla']=$nombre_tabla[$id_tabla];
                    
$matriz[$f]['id']=$razz[0];
                    
$matriz[$f]['nomcampo']=mysql_field_name($raz,0);
                    
//echo $matriz[$f]['tabla']." -|||||- ".$matriz[$f]['id']." -|||||- ".$matriz[$f]['nomcampo']."<br>";                
                    
$f++;                    
                }
                
//$numero_atributos=$db["nr"]($ras);
            
}
            
//echo "<br><br>";            
           
}
        
//retorno la matriz
        
return $matriz;
    }
}
?>
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 30/10/2007, 11:17
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Advanced Search ???

Espero te sirva asc3design!!

Cómo te dije tiene un error lógico... Pero su funcionamiento no se ve afectado.

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #6 (permalink)  
Antiguo 30/10/2007, 12:51
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Advanced Search ???

Super Carxl claro que me va a servir lo voy a probar y te aviso, también cualquier cosa que necesites me avisas vale
  #7 (permalink)  
Antiguo 30/10/2007, 18:03
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Advanced Search ???

Hola Carxl si no es mucho pedir, me gustaria ver el formulario de ese código deberás que pena contigo
  #8 (permalink)  
Antiguo 31/10/2007, 15:38
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Advanced Search ???

http://strategy.com.mx/milaberinto/

Pronto quitaré ese sitio de ahí y lo pasaré a otro dominio así que trata de aprovechar ahora que está ahí vale??

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #9 (permalink)  
Antiguo 31/10/2007, 20:35
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Advanced Search ???

Gracias de nuevo carxl, estaba mirando tu sitio es sistema de gestión de contenidos?
(CMS) o es solo con módulos, el caso es que me gusta
  #10 (permalink)  
Antiguo 31/10/2007, 20:43
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
De acuerdo Re: Advanced Search ???

Pues tiene de todo un poquito... pero no es ni lo uno ni lo otro

Tiene una parte interna para administrar el contenido, y tiene módulos para facilitar la navegación y mantenimiento.

Próximamente estará en línea, es un proyecto para una empresa de México.

Cualquier cosa me preguntas...

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 20:17.