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";
No soy ningun GURU pero esta es mi pequeña aportacion.
Un saludo a todos!.
![Stress](http://static.forosdelweb.com/fdwtheme/images/smilies/stress.png)