Magnifico articulo, sencillo, rapido y práctico.
No estaría mal que actualizarais con lo de IN BOOLEAN MODE ya que hasta que no añadi eso a mi sentencia, no conseguí que funcionara correctamente.
Yo tenia el mismo problema pero como usaba tablas tipo InnoDB no cree el index. para solucionarlo use una funcion que cambia los espacios en blanco (" ") de las palabras de la busqueda y las cambie por "|" (OR logico en sql) y depues pase eso como parametro y use la funcion REGEXP de sql:
ejemplo: buscar: hola que tal
despues de cambiarlo queda: hola|que|tal
entonces hago:
select * from tabla where (campo1 regexp "cadena" or campo2 regexp "cadena"...)
cadena lo paso como parametro.
Espero que les sirva :D
Hola, ayuda por favor, trate de hacer las consultas pero me marca el sig error: Parse error: parse error in c:archivos de programaeasyphp1-8wwwcopiapruebacatalogo.php on line 55
mi código es el siguiente espero me puedan ayudar:
<?
$host="localhost";
$user="root";
$password="";
$db="copiaprueba";
$conexion=mysql_connect($host,$user,$password);
$select_db=mysql_select_db($db,$conexion);
include("conecta.php");
$trozos=$_POST['area'];
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT * FROM info2000 WHERE VISIBLE =1 AND area LIKE "%$busqueda%" OR aut LIKE "%$busqueda%" LIMIT 50";
} elseif ($numero>1) {
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca="SELECT id, aut , MATCH ( aut, area ) AGAINST ( "$busqueda" ) AS aa FROM info2000 WHERE MATCH ( aut, area ) AGAINST ( '%"$busqueda"%' IN
BOOLEAN MODE ) ORDER BY aa";
}
$result=mysql("teleformacion", $cadbusca);
While($row=mysql_fetch_object($result))
{
//Mostramos los titulos de los articulos o lo que deseemos...
$area=$row->AREA;
$autor=$row->AUTOR;
echo $area." - ".$autor."<br>";;
}
?>
<hr size="3" color="808080" width="100%" align="left"> <!-- línea gris-->
<?
echo "<br>";
echo "<br>";
echo "<a href='info.php'>NUEVA CONSULTA</a>"
?>
En esta pagina se explica don detalle el uso de esta técnica
http://deckerix.tuxfamily.org/leerArticulo.php?post=92
Hola, soy novato :P
Copié el código de buscar.php que aparece como ejemplo y lo ejecuté en mi servidor (obviamente con los cambios correspondientes ^^) y me da el siguiente error "Parse error: syntax error, unexpected $end in E:local
oboty.php on line 21"
busqué que estaba mal, pero no le encuentro nada :S, probé a eliminar espacios, me fijé en que todas las llaves se cerraran, agregué el cierre de conexión con MySQL y nada :S, alguién puede ayudarme :P???
Hola a todos!
Solamente tengo una duda, antes del último while hay una llamada a la funcio mysql: "$result=mysql("teleformacion", $cadbusca);", esta no la conozco y no la encuentro por ningún lado mas.
Será un funcion personalizada?
El script me parece muy practico y sencillo.
Felicitaciones Miguel, sigue adelante, para atras ni para agarrar impulso. :)
Saludos
15/4/09
Otra formaPor: POPCORNEn esta web plantean otra forma de hacer esto.
http://www.programacionweb.net/articulos/articulo/?num=50
Saludis
30/4/09
GraciasPor: FrancoGracias despistao, utilize IN BOOLEAN MODE y anda perfecto!!!!
02/6/09
varios erroresPor: akaencima de la linea [$result=mysql("teleformacion", $cadbusca);] falta un [}] (sin llaves) he copiado todo tal cual para crear el buscador y me da los siguientes errores:
Notice: Undefined variable: busqueda in C:wampwwwusarticulosuscar.php on line 10
Notice: Undefined variable: cadbusca in C:wampwwwusarticulosuscar.php on line 23
Notice: mysql() [function.mysql]: This function is deprecated; use mysql_query() instead. in C:wampwwwusarticulosuscar.php on line 23
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:wampwwwusarticulosuscar.php on line 24
alguna sugerencia?? gracias
26/8/09
Como evitar que busque en enlaces? (por ejemplo)Por: MiquelEl código me funciona perfectamente y es rapidísimo.
Lo he codificado para que la palabra o palabras buscadas salgan en color rojo y en negrita. Pero tengo un problema. Busca dentro del texto de un campo TEXT de una base de datos MySql. En algunos de esos campos hay enlaces para que al escribir en pantalla dicho campo aparezcan fotografias.
Si en ese enlace aparece la palabra que busco encuentra el campo perfectamente, pero me causa dos problemas.
Si esa palabra no aparece también en el texto no la remarca, pero... es que además impide que aparezca la fotografia.
Hay alguna forma de que no busque dentro de los enlaces?
Gracias
26/8/09
por fa ayendenmePor: nestor raultengo el siguiente codigo pero megenera errores
<table width="100%" border="0" cellspacing="0" cellpadding="0">
Buscar: <input name="palabra">
<input type="submit" name="buscador" value="Buscar">
</form>
<?
if ($_POST['buscador'])
{
// Tomamos el valor ingresado
$buscar = $_POST['palabra'];
// Si está vacío, lo informamos, sino realizamos la búsqueda
if(empty($buscar))
{
echo "No se ha ingresado una cadena a buscar";
}else{
// Conexión a la base de datos y seleccion de registros
$con=mysql_connect("localhost","root","");
$sql = "SELECT * FROM datose WHERE nombre like '%$buscar%' ORDER BY nombre";
mysql_select_db("estudiante", $con);
$result = mysql_query($sql, $con);
// Tomamos el total de los resultados
$total = mysql_num_rows($result);
// Imprimimos los resultados
if ($row = mysql_fetch_array($result)){
echo "Resultados para: <b>$buscar</b>";
do {
?>
<p><b><a href="noticia.php?id=<?=$row['id'];?>"><?=$row['titulo'];?></a></b></p>
<?
} while ($row = mysql_fetch_array($result));
echo "<p>Resultados: $total</p>";
} else {
// En caso de no encontrar resultados
echo "No se encontraron resultados para: <b>$buscar</b>";
}
}
}
?>