Pues con lo de la primera pregunta, te quedaria de esta forma:
Código PHP:
$consulta="SELECT nombre, aficiones FORM amigos WHIERE nombre LIKE '%".$busqueda."%' OR aficiones LIKE '%".$busqueda."%'";
Con lo anterior buscará la palabra en los dos campos que tu quieres.
Con la segunda pregunta, podes hacer lo siguiente:
Código PHP:
$wordmagic=$_POST['wordmagic']; // Para obtener el valor del campo de texto
$wordmagic = strip_tags($wordmagic); //Elimina etiquetas HTML y PHP de la cadena, esto por si a caso meten en el campo de texto etiquetas de este tipo
$trozos = explode(" ", $wordmagic); //Separa por cadenas la frease.. en una cadena "toño" y en la siguente "futbol"
Con lo anterior solamente se han separado las palabras, ahora tienes que armar la consulta, la cual puede ser asi (puedes modificarla)
Código PHP:
$valor=1; //esta es una bandera
foreach ($trozos as $trozo) { //con esto leeremos cada palabra de la oracion original
if ($valor==1){ $condicion.="(nombre LIKE '%$trozo%' OR aficiones LIKE '%$trozo%')"; $valor=0;} //utilizamos una concatenacion para comenzar a armar la consulta y al mismo tiempo, cambiamos el valor de la bandera
else {$condicion.=" OR (nombre LIKE '%$trozo%' OR aficiones LIKE '%$trozo%')"; } //dentro del else, se termina de armar la consulta, eso por si a caso tienes una frase mas larga como: "toño loco por el futbol" eso hara que busque cada una de esas palabras en los campos
}
$query="SELECT * FROM amigos WHERE $condicion ORDER BY id DESC"; //aqui terminamos de armar la consulta donde serán ordenados descendentemente por el id
//luego haces la consulta a la base
$resultado = mysql_query($query, $conexion) or die(mysql_error());
Bueno, espero haberte ayudado un poco...podes consultar manuales de SQL para que podas armar mejor las consultas hay muchos en la red. Suerte!!!