Foros del Web » Programando para Internet » PHP »

buscador varias palabras-HECHO!.

Estas en el tema de buscador varias palabras-HECHO!. en el foro de PHP en Foros del Web. Hola, Esta web me a dado mucha ayuda y quiero empezar a devolver el favor con una pequeña aportacion. Yo mismo he buscado en este ...
  #1 (permalink)  
Antiguo 01/11/2004, 11:11
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Mensaje buscador varias palabras-HECHO!.

Hola,
Esta web me a dado mucha ayuda y quiero empezar a devolver el favor con una pequeña aportacion. Yo mismo he buscado en este foro el codigo que a continuacion les pongo: un buscador hecho en PHP con base de datos MySQL de varias palabras ordenado por uno de los campos.

Código PHP:
<?
include ('conex.php');//este sera tu script de conexion a la base de datos
//cogemos las variables
$buscar=$_GET['buscar'];

//----------------------

?>
<?
if(!isset($buscar)){//si la variable esta vacia, osea no nos mando buscar nada
    
echo "No introducido creiterios de busqueda";
}

$longi=strlen($buscar);//cogemos la longitud de la cadena
//echo $longi."<br>";
$buscar[$longi]="$";//finalizamos la cadena

$cont=0;//cuenta los caracteres que llevamos leidos
$cont2=0//nos sirve para indicar en que posicion numerica empezara la siguiente cadena
$cad=" "//hay que inicializarlas en blanco, sino sale la palabra "array"
$cadena[]=" "//inicializamos el que va a ser el array de cadenas
$ncadenas=0;//cuenta el nº de cadenas, condicionado por el espacio en blanco
for($x=0;$x<=$longi;$x++){
    if(
$buscar[$x]==' ' OR $buscar[$x]=='$'){ //si encuentra espacio en blanco o fin de cadena
        
$ncadenas++; //aumentamos el nº de cadenas que vamos creando
        
for($y=0;$y<$cont;$y++){
            
$cad[$y]=$buscar[$y+$cont2];//pasamos a una cadena nueva cada carater
        
}
        
$cad=ltrim($cad);//eliminamos los posibles espacios en blanco al principio
        
$cadena[$ncadenas]=$cad;//pasamos cada cadena creada al final de un array de cadenas
        //echo "cadena buscada: ".$cad."<br>";
        
$cont2+=$cont;
        
$cont=0;//ponemos el contador a 0
        
$cad=" "//hay que ponerla en blanco otra vez porque sino quedan caracteres de la ultima cadena que tuvo ésta variable
    
}
    
//echo $cadena[$ncadenas];
    
$cont++; //aumentamos el contador
}

//creamos la "super consulta"
$consulta="SELECT * FROM empresas WHERE";
for(
$x=1;$x<=$ncadenas;$x++){
    
//echo $cadena[$x];
    
$consulta.=" nombre LIKE '%$cadena[$x]%' OR sector LIKE '%$cadena[$x]%' OR calle LIKE '%$cadena[$x]%' OR numero LIKE '%$cadena[$x]%' OR cp LIKE '%$cadena[$x]%' OR localidad LIKE '%$cadena[$x]%' OR concejo LIKE '%$cadena[$x]%' OR provincia LIKE '%$cadena[$x]%' OR telefono LIKE '%$cadena[$x]%' OR movil LIKE '%$cadena[$x]%' OR fax LIKE '%$cadena[$x]%' OR email LIKE '%$cadena[$x]%' OR url LIKE '%$cadena[$x]%' OR observaciones LIKE '%$cadena[$x]%' OR";
//estos son los campos que yo use, puedes poner los que quieras
}
$longiconsulta=strlen($consulta);

$consulta=substr($consulta,0,($longiconsulta-2));//esto es para quitarle el ultimo OR
$consulta.="ORDER BY $orden";//para que haga la ordenacion

$buscar=substr($buscar,0,$longi);//para corregir un defecto al finalizar la cadena con $
//echo $buscar;

//echo $consulta;
$ejecuta=mysql_query($consulta,$conex);
//Hacemos la consulta de un solo SELECT
$filas=mysql_affected_rows();
//echo "Afectadas: $filas";
Naturalmente este codigo lo podeis modificar, usar y ampliar todo lo que queráis. Tambien deciros que el codigo no esta muy depurado y por supuesto pueden hacerse algunas cosas mejor.
No soy ningun GURU pero esta es mi pequeña aportacion.

Un saludo a todos!.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #2 (permalink)  
Antiguo 02/11/2004, 13:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Este tipo de aportes .. podrías hacerlos en las FAQ's de este foro (en el mensaje que veras de FAQ's al principio de este).

Así no se perderá y quedará localizable más fácilmente (que usando el buscador tal vez). Intenta seguir las normas de uso referentes a como publicar una FAQ. El mensaje está completamente abierto para que publiquen ahí sus FAQ's.

Un saludo,
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:47.