Programar un buscador con PHP y MySQL.

Pasos a seguir para la creación de un buscador con PHP y MySQL.
Supongo al lector familiarizado con la programación en php y la administración básica de Mysql.

Como punto de partida, la información a buscar la tenemos que tener almacenada en una tabla de nuestra base de datos. Pongamos como ejemplo una tabla con artículos técnicos que llamaremos ARTICULOS. Esta tabla ARTICULOS tendrá como mínimo dos campos llamados TITULO y DESARROLLO, que almacenarán el título del artículo y su contenido respectivamente.


Los tipos de los campos a buscar deberán ser CHAR, VARCHAR o TEXT con sus variantes.

Ahora diseñaremos una página con un formulario y una caja de texto para escribir la cadena de consulta "busqueda" y llamar al script de búsqueda "buscar.php". Ejemplo:

<FORM METHOD=POST ACTION="buscar.php">
Buscar: <INPUT TYPE="text" NAME="busqueda">
</FORM>


En el fichero buscar.php es donde está el click de la cuestión.
Hay que hacer la consulta que busque las palabras y devuelva como resultado los registros coincidentes. Hasta aquí parece fácil y podríamos resolverlo así:

SELECT * FROM ARTICULOS WHERE DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'

Pues esta consulta nos mostrará todos los artículos que en su titulo o en su contenido aparezca la frase de búsqueda tal y como nosotros la introducimos. Esto es muy limitado ya que un cambio en el orden de las palabras o un artículo de separación dará al traste con nuestra búsqueda no mostrando los resultados deseados.
Si bien podríamos depurar y mejorar la sintaxis de nuestra búsqueda utilizando el operador LIKE las búsquedas resultarían muy lentas y no tendrían el resultado esperado.

La solución mas eficiente es utilizar los índices FULLTEXT específicamente indicados para estos menesteres. Pues bien esto implica ir a nuestra base de datos, y crear un indice FULLTEXT con todos los campos que deseamos incluir en nuestra busqueda, que en nuestro caso son TITULO y DESARROLLO. Para ello basta con el phpmyadmin o bien escribir la instrucción directamente:

ALTER TABLE ARTICULOS ADD FULLTEXT(TITULO, DESARROLLO);


Una vez creado el índice la instrucción SQL para buscar será:

SELECT * FROM ARTICULOS WHERE MATCH(TITULO, DESARROLLO) AGAINST ('$busqueda')

Esta línea utiliza la función MATCH ... AGAINST ... que encuentra el texto buscado, usando consultas en lenguaje natural parecido a como lo hacen los motores de búsqueda. Además, se calcula internamente una puntuación en función de como aparecen los términos buscados dentro de nuestro artículo.

Perfeccionando la búsqueda:

SELECT * , MATCH (TITULO,DESARROLLO) AGAINST ('$busqueda') AS puntuacion FROM ARTICULOS WHERE MATCH (TITULO, DESARROLLO) AGAINST ('$busqueda') ORDER BY puntuacion DESC LIMIT 50

Esta línea devuelve los 50 primeros resultados encontrados ordenados de mas a menos puntuación. El valor de la puntuacion es un número decimal comprendido entre 0 y 1 por cada ocurrencia del patrón de búsqueda, que se irá sumando si ese patrón es encontrado en varias ocasiones. De cualquier forma esta puntuación es un algoritmo interno de la base de datos.

Algunos problemas. Las búsquedas realizadas con MATCH ...AGAINST en ocasiones fallan cuando el término a buscar contiene una sola palabra. Por el contrario son unas búsquedas rapidísimas que producen mejores resultados que otros métodos mas rudimentarios como el LIKE cuando se trata de varias palabras o frases.

La solución que le he dado a ese problema de las búsquedas con MATCH...AGAINST has sido chequear el número de palabras a buscar, utilizando una búsqueda simple con LIKE en el caso de una sola palabra, y el método MATCH...AGAINST en el caso de varias. Ejemplo del fichero buscar.php

<?php
//cadena de conexion
mysql_connect("host","usuario","password");
//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 REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO LIKE '%$busqueda%' OR TITULO 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 REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql("teleformacion", $cadbusca);
While($row=mysql_fetch_object($result))
{
   //Mostramos los titulos de los articulos o lo que deseemos...
  $referencia=$row->REFERENCIA;
   $titulo=$row->TITULO;
   echo $referencia." - ".$titulo."<br>";;
}
?>


Enlaces para completar esta información:
http://www.fabio.com.ar/verpost.php?id_noticia=959
http://dev.mysql.com/doc/mysql/en/Fulltext_Search.html

Compartir

Comentarios

Miguel Anguita

30/7/2005
La instrucción utilizada es muy rápida pero he encontrado problemas:
SELECT * FROM ARTICULOS WHERE MATCH(TITULO, DESARROLLO) AGAINST ('$busqueda')

Se trata de buscar distintas palabras en varios campos, pero no he logrado que todas las palabras aparezcan en las búsquedas. Solamente aparecen registros que contienen alguna (o bien todas) de las palabras, pero lo útil (o elegible con alguna opción) es que "todas" las palabras estén en todos los registros seleccionados.
¿Tenésis alguna solución para resolver este problema?.
Gracias por vuestra ayuda y adelante con vuestro magnífico portal.
Muguel Anguita.

NeoRod

24/10/2007
Me parece muy bonito pero solo sirve para bases de datos y no para archivos comunes he aqui les paso el codigo fuente de un buscador dentro de un directorio web.
Minibuscador php de NeoRod
Busca un texto, dentro de archivos de un directorio web, y lista los resultados con algun contenido del archivo.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>by NeoRod</title>
</head>
<body>
<h1>Minibuscador php de NeoRod</h1>
<p>Busca un texto, dentro de archivos de un directorio web, y lista los resultados con algun contenido del archivo. </p>
<form id="form1" name="form1" method="get">
Buscar Texto en pagina<input type="text" name="q"/>
<input type="submit" value="Buscar" />
</form>
<p>
<?php

$dir = "../colegio"; //colocas la carpeta donde va a buscar los temas
$directorio= @opendir($dir);
if(@opendir($dir)==TRUE)
{
$i=0;
while ($archivo = readdir($directorio))
{
if($archivo != '.')
{
if(!is_dir("$dir/$archivo"))
{
$neo[$i]=$archivo;
$i++;}
}

}
closedir($directorio);
if($_GET["q"]!="")
{
for($j=0;$j<count($neo);$j++)
{
$archivo=$neo[$j];
$fp = fopen($archivo,'r');
//leemos el archivo
$texto = fread($fp, filesize($archivo));

if(eregi($_GET["q"],$texto)==1)
{
$lugar=strpos($texto,"<p>");
echo $prueba;
echo "<p><a href=$archivo>$archivo</a><br>";
echo substr($texto, $lugar, 200);
}
}
}
}
else
echo "no puede abrirse el directorio o no existe<br>"
?>
</p>
<p>Atte. NeoRod </p>
</body>
</html>

visitame en la web: http://gloriososancarlos.org
<a href="http://gloriososancarlos.org">http://gloriososancarlos.org</a>

despistao

10/1/2008
Hola a tod@s

tengo un problema

creo que phpMyAdmin no me reconoce el algoritmo Match Against

Hace un par de años inserté un buscador como éste en una web que tenía y funcionaba perfectamente...

Desde hace un tiempo estoy trabajando en otra web e inserté el buscador pero no me funciona, luego probé en local el buscador de mi web antigua, qué hace tiempo funcionaba perfectamente, y tampoco funciona.
también ejecuté la consulta sql con el match against, pero phpMyAdmin no encuentra ningún registro y hace la consulta bien...

¿a que se puede deber?

gracias por adelantado

Un saludo

despistao

11/1/2008
Hola de nuevo,

he encontrado la solución al problema:

insertando “IN BOOLEAN MODE” después de la cadena de búsqueda del AGAINST de la cláusula WHERE. De este modo:

“SELECT distinct id_pelicula, titulo, titulo_original, MATCH (titulo, titulo_original)
AGAINST ( ‘%”.$search.”%’ ) AS Criterio FROM peliculas WHERE
MATCH (titulo, titulo_original) AGAINST ( ‘%”.$search.”%’ IN
BOOLEAN MODE ) ORDER BY Criterio DESC LIMIT 50&#8243;

Un saludo

El Hispano

29/2/2008
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.

Toni

19/9/2008
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


Ana

07/10/2008
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>"

?>

misel

25/10/2008
En esta pagina se explica don detalle el uso de esta técnica

http://deckerix.tuxfamily.org/leerArticulo.php?post=92

Dinno

20/1/2009
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???

Rafael Navas

12/2/2009
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

POPCORN

15/4/2009
Otra forma
En esta web plantean otra forma de hacer esto.

http://www.programacionweb.net/articulos/articulo/?num=50

Saludis

Franco

30/4/2009
Gracias
Gracias despistao, utilize IN BOOLEAN MODE y anda perfecto!!!!

aka

02/6/2009
varios errores
encima 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

Miquel

26/8/2009
Como evitar que busque en enlaces? (por ejemplo)
El 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

nestor raul

26/8/2009
por fa ayendenme
tengo 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>";
}
}
}
?>

ivan

09/12/2009
Perfeccionar busqueda php y mysql
Q tal amigos no soy experto en esto de los buscadores y est tutorial me parecio favorable y efectivo pero tengo un problema en la consulta
$cadbusca="SELECT cve_producto,descripcion,precio, MATCH (cve_producto,descripcion) AGAINST ( '$busqueda' ) AS Score FROM productos WHERE MATCH(cve_producto,descripcion) AGAINST ('$busqueda') ORDER BY Score DESC LIMIT 50";

se supone que debe buscar y lo hace pero quiero que busque solo la frase correcta es decir por ejemplo si busco molino grande me deberia sacar solo estos resultados:

Clave Descripción precio Agregar
1027 molino electrico grande 128.0
267j molino de granos 2023.99
6025 molino electrico chico 578.4

pero me saca esto:

Clave Descripción precio Agregar
1027 molino electrico grande 1280 Carro
7777 podadora grande 8964 Carro
267j molino de granos 2099 Carro
6025 molino electrico chico 1231 Carro
ae789 SOQUET DE PORCELANA REDONDO GRANDE 134 98 Carro

como se dieron cuenta tomo la podadora y el soquet solo por contener la palabra grande y estoy de acuerdo en la busqueda pero como le hago para que solo me encuentre en el orden molino ---> grande ---> y que me omita las otras espero una respuesta de ante mano gracias

Mariano

18/12/2009
Diferencias entre MACH y el LIKE
aca se plantea que es mejor usar un MACH cuando lo que se busca es una cadena de caracteres ya que es mas rapido, e echo las pruebas y si es mas rapido pero no trae los misms resultados aqui va el ejemplo.

Aca estan las dos consultas que en teoria funcionan igual, estan echas para encontrar la frace "es auto" dentro de la tabla 'tb_imagenes'

SELECT *
FROM tb_imagenes
WHERE MATCH (
`titulo_img` , `descrip_img` , `tag_img`
)
AGAINST (
'es auto'
IN BOOLEAN
MODE
)

SELECT *
FROM tb_imagenes
WHERE
`titulo_img` like '%es auto%' or
`descrip_img` like '%es auto%' or
`tag_img` like '%es auto%'


Bueno si la cadena que tengo en el campo es "mi robot es automatico no manual"

el LIKE encuentra "es auto" y el MACH no encuentra nada.

probe ponerle comodines al mach pero no funciono:

SELECT *
FROM tb_imagenes
WHERE MATCH (
`titulo_img` , `descrip_img` , `tag_img`
)
AGAINST (
'%es auto%'
IN BOOLEAN
MODE
)

Asi que tengo para pensar 2 cosas, la sentensia del mach le falta algo apra hacerla mas funcional o definitivamente el like tarda mas porque compara y el mach no

Mariano Ore

18/12/2009
Para que un MACH funcione igual que un LIKE
Para obtener los mismos resultados con un Mach que con un Like debemos tener en cuanta algunos aspectos.

1) con el like usamos el comodin "%" para que traiga lo que contiene y no la frase escata con el mach usamos el asterisco

2) Si queremos que todas las palabras se encuentren en todos los resultados deberemos utilizar el modo booleano "AGAINST ('es auto' IN BOOLEAN MODE)", por defecto esta en AGAINST ('es auto' IN NATURAL LANGUAGE MODE);

3) En 'modo booleano' se pueden aplicar también modificadores, por ejemplo, si queremos las tuplas con contenido 'texto' y sin 'basura'.
SELECT * FROM tabla WHERE match(campo) against('+texto -basura' in boolean mode);


Les dejo dos ejemplos uno conlike y otro con Mach ambos traen los mismos resultados pero en cadenas de texto es mas eficiente el MACH

SELECT *
FROM tb_imagenes
WHERE
`titulo_img` like '%es auto%' or
`descrip_img` like '%es auto%' or
`tag_img` like '%es auto%'

-----------------------------------------------------

SELECT *
FROM tb_imagenes
WHERE MATCH (
`titulo_img` , `descrip_img` , `tag_img`
)
AGAINST ('*es auto*'IN BOOLEAN MODE)

Espero les sirva

CLAUDIA

10/1/2010
Duda del buscador
Hola! Estoy siguiendo el ejemplo de tu buscador y me manda el siguiente error:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:AppServwwwpruebauscador.php on line 35

Tengo la duda en la línea que dice
$result=mysql("teleformacion", $cadbusca);
La palabra "teleformacion" a que se refiere? es el nombre de mi campo? Esta es mi línea 34 y el error me lo da en la línea 35, supongo que es porque no encuentra nada en mi BD, pero ya cambie "teleformacion" por el nombre de mi campo y aún así sigue el error. Me puedes ayudar por favor??????

cephes5

09/3/2010
error
preguntas idiotas, pero por ahi no tanto jeje

bueno a mi me da error en la linea de else "{"

veoque usas ir y else pero en el cofigo figura como elseif (por ahi es asi perocalculoque debe ser solo else)

Hay una llave que no cierra, yo conjeturo que va al final despues de mostrar los resultados y antes de cerrar el php, pero por mas que lomodifico no me funciona y cada vez qaue lo pongode manera logica me da el error "Parse error: parse error, unexpected '{' in c:foxservwwwunouscar.php on line 23" que es justamene la del else o elseif, si lo dejo como elseif no me da error, pero tampoco hace nada niencuentra nada.
Tambien vi que hay en una parte del codigo dos ;; "cho $referencia." - ".$titulo."<br>";; " esto puede ser un error o es asi tambien?
preguntotodo estoporqu eme sigue sinfuncionar a pesar de haberlo revisado bastante

Bueno seguramente hay algo que se me esta pasando pero realmente no lo estoy viendo, agradeceria tu respuesta

muchas gracias

cephes5

09/3/2010
disculpas
antes que sea leido mi comentari opido disculpas porla forma que esta escxrit, pero mi teclado no esta funcionandobien la barra espaciadora y aveces sale todo junto

backboot

15/4/2010
gracia buen aporte
Amigo gracias por tu aporte me fue muy util..........

Federico

15/4/2010
Excelente aporte
Es una aporte extraordinariamente util, felicitaciones. Tanto el articulo como la mayoria de los comentarios han sido de gran utilidad para mi, que soy novato.
Gracias a todos.

mil

20/4/2010
hola me pueden ayudar
estaba viendo el ejemplo Programar un buscador con php y mysql y me da error, por favor me puede ayudar soy novata y tengo que hacer un buscador donde se teclee la matricula del estudiante y salga su nombre
este es mi codigo:
<html>
<head>
<title>Buscador simple en PHP</title>
</head>
<body>
<form action="buscar.php" method="post">
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 co_estudiantes WHERE nombre like '%$buscar%' ORDER BY id DESC";
mysql_select_db("base_de_datos", $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="nombre.php?id=<?=$row['id'];?>"><?=$row['apellidos'];?></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>";
}
}
}
?>
</body>
</html>

exis

28/4/2010
Busqueda PHP obteniendo valores de mi MySql
Buenos tardes, soy nuevo en esto mejor dicho un novato mas y estoy en aprietos estoy queriendo hacer una busqueda ejem:

__________ ______
Ingrese Codigo:|_________| - es un textbox- y que al momento dar clik |buscar| en otra pantalla me muestre todos los campos solo de ese codigo




tabla:producto
-codigo
-descripcion
-modelo
-marca
-condicion
-fecha registro

ya tengo varios registros ingresados en mi BD

exis

28/4/2010
quiero editar un registro
tabla : empresa
numactivo / nitem / descripcion / modelo / marca / categoria / ubicacion 123456 / 9.214 /Tornillo /TF 02 /Forte /41 - Herramientas /Plataforma H

cond / obs / fecreg
activo / dar mantenimiento 2010-04-27 05:04:18

Ya hize la busqueda por N°Activo y me muestran los datos con esta programacion

<?php
include ("connect.php");
//conectarse al gestor de la BD
$enlace=mysql_connect('localhost', 'root', 'foot');
//selecionando la BD
mysql_select_db('MIBD', $enlace);
//establecer query
$registro=mysql_query("select * from empresa where numactivo LIKE '%$buscar%'",$enlace);
//selecionando la BD
$fila=@mysql_fetch_array($registro);
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
body {
background-color: #99FFCC;
}
.Estilo1 {
font-size: 18px;
font-weight: bold;
}
-->
</style></head>

<body>
<form name="form1" method="post" action="">

<p align="center">EMPRESA S.A.</p>
<p align="center" class="Estilo1">FORMULARIO DE EDICION </p>
<p align="left">&nbsp;</p>
<table width="414" border="2" align="center">
<tr>
<td width="116"><div align="right">N&deg; Activo:</div></td>
<td width="280"><input name="c1" type="text" id="c1" value ="<? echo $fila[0] ?>" size="8" maxlength="6"></td>
</tr>
<tr>
<td><div align="right">N&deg; Item:</div></td>
<td><input name="c2" type="text" id="c2" value ="<? echo $fila[1] ?>"size="30" maxlength="30"></td>
</tr>
<tr>
<td><div align="right">Descripci&oacute;n: </div></td>
<td><input name="c3" type="text" id="c3" value ="<? echo $fila[2] ?>" size="30" maxlength="30"></td>
</tr>
<tr>
<td><div align="right">Modelo:</div></td>
<td><input name="c4" type="text" id="c4" value ="<? echo $fila[3] ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Marca:</div></td>
<td><input name="c52" type="text" id="c52" value ="<? echo $fila[4] ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Categoria:</div></td>
<td><input name="c6" type="text" id="c6" value ="<? echo $fila[5] ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Ubicacion:</div></td>
<td><input name="c53" type="text" id="c53" value ="<? echo $fila[6] ?>" size="20" maxlength="20"> <a href="edita.php"></a></td>
</tr>
<tr>
<td><div align="right">Condici&oacute;n:</div></td>
<td><input name="c54" type="text" id="c54" value ="<? echo $fila[7] ?>" size="20" maxlength="20"></td>
</tr>
<tr>
<td><div align="right">Observaciones:</div></td>
<td><input name="c5" type="text" id="c5" value ="<? echo $fila[8] ?>" size="30" maxlength="230"></td>
</tr>
</table>
</body>
</html>

//---> lo que quisiera saber es como hago para editar los registros y que se guarden en mi MD que tengo en MySQL= http://localhost/phpMyAdmin/

Gracias

lrojas

29/4/2010
CODIGO UN POCO MEJORADO
HOLA. HE ESTADO DIAS EN ESTO Y HOY POR FIN LOGRE QUE MEDIO FUNCIONARA. AQUI SE LOS DEJO PORQUE SE QUE ES DIFICIL ENCONTRAR UN BUSCADOR QUE FUNCIONE.
ESTA ES LA PAGINA DEL FORMULARIO

<body>
<FORM METHOD=POST ACTION="buscar.php">
Buscar:
<input type="text" name="busqueda" />
<label>
<input type="submit" name="button" id="button" value="Enviar" />
</label>
</FORM>

<p>&nbsp;</p>
</body>

CODIGO PHP

<?php
//cadena de conexion
mysql_connect("localhost","root","12345");
// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
mysql_select_db("test");

if (!empty($_POST['busqueda'])){
$busqueda=$_POST['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 articulos WHERE REFERENCIA LIKE '%$busqueda%' OR DESARROLLO LIKE '%$busqueda%' OR TITULO LIKE '%$busqueda%'";

} 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 *, MATCH ( TITULO, DESARROLLO, REFERENCIA )
AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE
MATCH ( TITULO, DESARROLLO, REFERENCIA ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql_query($cadbusca) or die (mysql_error());

while ( $row = mysql_fetch_object ($result)){
echo $row ->REFERENCIA."<br>";
echo $row ->TITULO."<br>";
echo $row ->DESARROLLO."<br>";
}
}
?>

guillermo_perez-601069

08/5/2010
Correccion que agrega BOOLEAN MODE
Para los que tienen error al ejecutar el buscador: el truco está en agregar la frase IN BOOLEAN MODE las dos veces. Queda así:

$result = mysql_query("SELECT chapter_id,page_id,section_id,sections, MATCH(sections) AGAINST ('$search' IN BOOLEAN MODE) AS score FROM manual_contents WHERE MATCH (sections) AGAINST ('$search' IN BOOLEAN MODE) AND language LIKE '$language' ORDER BY score DESC LIMIT 30");

Carlos

23/7/2010
Busqueda en php
Amigos lei detalladamente todo los comentarios, soy nuevo en php, tengo un problema estoy modificando ostick que en reemplaz q me genere tikets me genere busqueda de archivos para lo cual al subir el archivo coloco palabras claves pero en la busqueda que tiene solo se limita a siertas palabras pero quiero incluir otro que me permita hacer mas precisa la busqueda como puedo hacer eso osea en el campo busqueda que ya tiene prediseñado y otro campo busqueda que coloque otro texto como puedo hacer eso etoy usando xampp y dreamweaver para modificar. Ej, si un archivo lo subo con nombre carta y en la nota interna tiene como nota 10, osea al hacer la busqeuda por carta me figurara muchas cartas pero si coloco carta y en otro item 10 que encuentre este archivo directamente. Favor espero que alguien me pueda dar alguna pauta.
Gracias

Santiago

01/8/2010
Buscador un poco mas complejo...
Este artículo está bueno, pero ahora quiero hacer lo siguiente.
¿cómo logro que un buscador me devuelva los artículos que tienen palabras acentuadas y no acentuadas?
Explico mejor:

Si en mi buscador ponen la palabra "México" (con acento), la buscará pero solo encontrará los artículos que la contengan, eso está bien, pero excluirá a los artículos que contengan la palabra "Mexico" (sin acento).
Quisiera quie mi buscador encuentre los artículos que contengan México y Mexico. ¿Es eso posible?
Gracias.

Luis m

04/8/2010
php
hola a todos soy nuevo en utilizar php necesito ayuda por tengo un codigo en asp que lo quiero que sea algo parecido en php.
el codigo es el siguiente:
<%
Response.Buffer=FALSE
Dim Recordset1
Dim Recordset1_numRows
Dim Criterio, Nombre, Paterno, Materno
dim bandera, prefijo

Dependencias = request.form("Dependencias")
Criterio1 = UCase(QuitaAcentos(request.form("criterio1")))
Criterio2 = UCase(QuitaAcentos(request.form("criterio2")))
Criterio3 = UCase(QuitaAcentos(request.form("criterio3")))
Nombre = UCase(QuitaAcentos(Request.form("nombre")))
Paterno = UCase(QuitaAcentos(request.form("Paterno")))
Materno = UCase(QuitaAcentos(request.form("Materno")))
bandera = 0
prefijo = " where "

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_Dir_STRING
Recordset1.Source = "Select * from directorio"
if Dependencias <> "" then
recordset1.source = Recordset1.source & prefijo & "dependencia = '" & Dependencias & "'"
prefijo = " and "
bandera = 1
end if
if criterio1 <> "" then
recordset1.source = Recordset1.source & prefijo & "(nombre like '%" & Criterio1 &"%' or paterno like '%" & Criterio1 & "%' or materno like '%" & Criterio1 & "%' or titulo like '%" & Criterio1 & "%' or conmutador like '%" & Criterio1 & "%' or fax like '%" & Criterio1 & "%' or extensiones like '%" & Criterio1 & "%' or telefonos like '%" & Criterio1 & "%' or ambito like '%" & Criterio1 & "%' or observaciones like '%" & Criterio1 & "%' or ciudad like '%" & Criterio1 & "%' or dependencia like '%" & Criterio1 & "%' or direccion like '%" & Criterio1 & "%' or departamento like '%" & Criterio1 & "%' or domicilio like '%" & Criterio1 & "%' or ubicacion like '%" & Criterio1 & "%' or area like '%" & Criterio1 & "%' or puesto like '%" & Criterio1 & "%') "
prefijo = " and "
bandera = 1
end if
if criterio2 <> "" then
recordset1.source = Recordset1.source & prefijo & "(nombre like '%" & Criterio2 &"%' or paterno like '%" & Criterio2 & "%' or materno like '%" & Criterio2 & "%' or titulo like '%" & Criterio2 & "%' or conmutador like '%" & Criterio2 & "%' or fax like '%" & Criterio2 & "%' or extensiones like '%" & Criterio2 & "%' or telefonos like '%" & Criterio2 & "%' or ambito like '%" & Criterio2 & "%' or observaciones like '%" & Criterio2 & "%' or ciudad like '%" & Criterio2 & "%' or dependencia like '%" & Criterio2 & "%' or direccion like '%" & Criterio2 & "%' or departamento like '%" & Criterio2 & "%' or domicilio like '%" & Criterio2 & "%' or ubicacion like '%" & Criterio2 & "%' or area like '%" & Criterio2 & "%' or puesto like '%" & Criterio2 & "%') "
prefijo = " and "
bandera = 1
end if
if criterio3 <> "" then
recordset1.source = Recordset1.source & prefijo & "(nombre like '%" & Criterio3 &"%' or paterno like '%" & Criterio3 & "%' or materno like '%" & Criterio3 & "%' or titulo like '%" & Criterio3 & "%' or conmutador like '%" & Criterio3 & "%' or fax like '%" & Criterio3 & "%' or extensiones like '%" & Criterio3 & "%' or telefonos like '%" & Criterio3 & "%' or ambito like '%" & Criterio3 & "%' or observaciones like '%" & Criterio3 & "%' or ciudad like '%" & Criterio3 & "%' or dependencia like '%" & Criterio3 & "%' or direccion like '%" & Criterio3 & "%' or departamento like '%" & Criterio3 & "%' or domicilio like '%" & Criterio3 & "%' or ubicacion like '%" & Criterio3 & "%' or area like '%" & Criterio3 & "%' or puesto like '%" & Criterio3 & "%') "
prefijo = " and "
bandera = 1
end if

if nombre <> "" then
recordset1.source = Recordset1.source & prefijo & "nombre like '%" & request.form("nombre") & "%' "
prefijo = " and "
bandera = 1
end if
if paterno <> "" then
recordset1.source = Recordset1.source & prefijo & "paterno like '%" & request.form("paterno") & "%' "
prefijo = " and "
bandera = 1
end if
if materno <> "" then
recordset1.source = Recordset1.source & prefijo & "materno like '%" & request.form("materno") & "%'"
prefijo = " and "
bandera = 1
end if

Recordset1.source = recordset1.source & " order by paterno, materno, nombre"
Recordset1.CursorType = 3
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0

%>

y este otro que sea algo parecido pero en php

</table>
<p align="center">
<% if bandera = 1 then %>
</p>
<p align="center"><strong><font size="4">Se encontraron<font color="#993333">
<%= recordset1.recordcount%></font> coincidencias</font></strong></p>
<center>
<table width="95%" border="1" cellspacing="0" bordercolor="#999933" style = "margin-bottom: 80px">
<tr bordercolor="#999933" bgcolor="#999933">
<td width="10%">PATERNO</td>
<td width="10%">MATERNO</td>
<td width="10%">NOMBRE</td>
<td width="7%">EXTENSIONES</td>
<td width = "5%">NÚMERO ENLACE</td>
<td width="7%">CIUDAD</td>
<td width="7%">DEPENDENCIA</td>
<td width = "7%">DIRECCIÓN</td>
<td width = "7%">DEPARTAMENTO</td>
<!-- <td width = "7%">DOMICILIO</td> -->
<!-- <td width = "7%">UBICACIÓN</td>
<td width = "7%">AREA</td> -->
<td width = "7%">PUESTO</td>
<!-- <td width="7%">OBSERVACIONES</td> -->
</tr>
<% while not recordset1.eof %>
<% 'Paterno = "Con Reyes BAEZA la gente progresa" & (Recordset1.Fields.Item("paterno").Value) %>
<tr>
<td width="10%"><a style = "color : #993333" href="Despliega.asp?id=<%=(Recordset1.Fields.Item("row_id").Value)%>&criterio1=<%= criterio1 %>&criterio2=<%= criterio2 %>&criterio3=<%= criterio3 %>&paterno=<%= paterno %>&materno=<%= materno %>&nombre=<%= nombre %>"><%=colorearSi(colorear(Recordset1.Fields.Item("paterno").Value), "Paterno")%></a>&nbsp;</td>
<td width="10%"><a style = "color : #993333" href="Despliega.asp?id=<%=(Recordset1.Fields.Item("row_id").Value)%>&criterio1=<%= criterio1 %>&criterio2=<%= criterio2 %>&criterio3=<%= criterio3 %>&paterno=<%= paterno %>&materno=<%= materno %>&nombre=<%= nombre %>"><%=colorearSi(colorear(Recordset1.Fields.Item("materno").Value), "Materno")%></a>&nbsp;</td>
<td width="10%"><a style = "color : #993333" href="Despliega.asp?id=<%=(Recordset1.Fields.Item("row_id").Value)%>&criterio1=<%= criterio1 %>&criterio2=<%= criterio2 %>&criterio3=<%= criterio3 %>&paterno=<%= paterno %>&materno=<%= materno %>&nombre=<%= nombre %>"><%=colorearSi(colorear(Recordset1.Fields.Item("nombre").Value), "Nombre")%></a>&nbsp;</td>
<td><%=colorear(Recordset1.Fields.Item("Extensiones").value)%>&nbsp;</td>
<td><%=colorear(Recordset1.Fields.Item("numenlace").Value)%>&nbsp;</td>
<td width="10%"><%=colorear(Recordset1.Fields.Item("ciudad").Value)%>&nbsp;</td>
<td width="10%"><%=colorear(Recordset1.Fields.Item("dependencia").Value)%>&nbsp;</td>
<td><%=colorear(Recordset1.Fields.Item("direccion").Value)%>&nbsp;</td>
<td><%=colorear(Recordset1.Fields.Item("departamento").Value)%>&nbsp;</td>
<!-- <td><%=(Recordset1.Fields.Item("Domicilio").Value)%>&nbsp;</td> -->
<!-- <td><%=(Recordset1.Fields.Item("Ubicacion").Value)%>&nbsp;</td>
<td><%=(Recordset1.Fields.Item("Area").Value)%>&nbsp;</td> -->
<td><%=colorear(Recordset1.Fields.Item("puesto").Value)%>&nbsp;</td>
<!-- <td width="10%"><%=(Recordset1.Fields.Item("Observaciones").Value)%>&nbsp;</td> -->
</tr>
<%
recordset1.movenext
wend
%>
</table>
</center>
<%end if%>
<input name="hiddenCriterio1" type="hidden" id="hiddenCriterio1" value="<%= Criterio1 %>">
<input name="hiddenCriterio2" type="hidden" id="hiddenCriterio2" value="<%= Criterio2 %>">
<input name="hiddenCriterio3" type="hidden" id="hiddenCriterio3" value="<%= criterio3 %>">
<input name="hiddenPaterno" type="hidden" id="hiddenPaterno" value="<%= Paterno %>">
<input name="hiddenMaterno" type="hidden" id="hiddenMaterno" value="<%= Materno %>">
<input name="hiddenNombre" type="hidden" id="hiddenNombre" value="<%= Nombre %>">

Lieslie

04/11/2010
Duda de este ejemplo
He reutilizado ese codigo, pero me da este error:Notice: Undefined variable: busqueda in C:wampwwwBDVBscriptsphpuscar.php
pero ya declare la variable y me sigue dando el mismo problema...
por favor pudiera ayudarme con esto...

Erausi

09/12/2010
En Blanco
Hola
Cuando hago una consulta en blanco me salen todos los datos de la bbdd. ¿como puedo hacer para que no salga nada cuando se hace la consulta en Blanco?

Auxi

14/12/2010
varias dudas porfa
hola como estan?, no me funciona el codigo, debe ser por estas dudas q tengo:
- qué significa "teleformacion" ? es un campo? una tabla? o qué ? especificamente porfa
- y VISIBLE=1 qué significa? hay q declarar esa variable? disculpen pero es q no me funciona, gracias de antemano por la ayuda q me puedan dar porfa, soy novata haciendo buscadores, es la primera vez q me toca hacer un buscador, muchas gracias de antemano :)

dadada

30/12/2010
>LOL
<script>alert()</script>

jm2c

02/2/2011
DESDE EL PRINCIPIO
#1214 - The used table type doesn't support FULLTEXT indexes
ni me dejo intentar el PHP

Daniel Vergara Urrutia

08/6/2011
Deberia aclarar el motor de la base de datos
Si van a dejar estos articulos en linea, que ya tiene varios años, deberian aclarar que el indice FULLTEXT solo esta disponible para bases de datos MyISAM porque el nuevo motor de MySQL, InnoDB, no soporta esto y obviamente no es posible ni modificar ni crear campos con ese indice.

Saludos

d3nn

17/6/2011
gracias
gracias por la ayuda, me sirvio de mucho.

Zurfy

10/7/2011
Grácias
Tutorial rapido de seguir si ya tienes conocimientos prévios de Mysql.
Además és fácil i rapido de entender. Muy bien explicado.

Sigue así!

elloco366

29/7/2011
Buenas Por que no me sale
Chiscos Como Haria Yo para POner 3 Tablas en ese Buscador las Tablas serian

Loteria
chances
Tiempos

Porfa ayudemen MI email info@sliner.net

reyvi

24/8/2011
Estupenda
Me parece muy bueno este artículo, pues solamente buscaba con LIKE y cuando habías búsquedas de más de una palabra no era muy efectivo. Con este ya he visto grandes resultados. FELICITACIOS y ....... GRACIAS MIL

OSCAR

18/9/2011
Urge codigo HTLM
Hola: Necesitaria un codigo HTLm para mi pagina web como busqueda de pisos; precio desde, metros, zona , comunidad autonoma, ciudad, habitaciones, etc. Estaria muy agradecido

Marcelo

21/9/2011
Solo le falta el paginador
Bueno, es simplemente para decirles que si el resultado devuelve 200 registros, lo mejor sería agregarle un paginador. Con eso estaría perfecto. Gracias.

merlyn333

08/11/2011
¿Cuál es el código que concluye este ejercicio?
Saludos:

Sería bueno mostrar en algún lugar un enlace de descarga de los archivos necesarios para visualizar el funcionamiento del ejercicio propuesto... incluyendo paginación.

Agradezco que se haya compartido éste artículo.

Que tengan buen día.

ronalcas

29/11/2011
problemas con el match
el codigo match me da un error con mi paginador, es decir, todo funciona muy bien si aplico la sentencia tradicional "selec * from tabla........", en el momento que cambio la sentencia a un select * match (es decir, para hacer un buscador), en ese momento el paginador ya entra en conflicto, el problema es, que cuando doy buscar algo me muestra los resultados, sin embargo me muestra una 2da pagina en blanco, cuando NO deberia ponerme el enlace a la segunda pagina, ahora bien, configuro el paginador reduciendo la cantidad de registro por paginas para probar , y me sigue mostrando en blanco la segunda pagina

david juarez velazquez

17/12/2011
quiero que me ayuden espero no sea tarde
miren tengo un algoritmo de busqueda mi objetivo es cargar los archivos en una carpeta y sus nombres en una base de datos ya hace lo que quiero pero tengo que repetir la ultima letra para que aparezca mi archivo alguien puede decirme como puedo hacerle para que al pulsar una tecla me mande archivos relacionados a lo que busco este es mi algoritmo.
formulario.html
<form name="b" method="post">
Buscar:
<input type="text" name="x" onkeypress="consulta()" />

</form>
///////////////////////ajax.js///////////////////////////////////
function nuevoAjax(){
var xmlhttp=false;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
} }
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;}






function consulta(){


capa = document.getElementById('g');
variable=document.b.x.value;
ajax=nuevoAjax();
ajax.open("POST", "buscar.php",true);
ajax.onreadystatechange=function() {
if (ajax.readyState==4) {
capa.innerHTML = ajax.responseText
} }
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send("z="+variable)


}

///////////////////////////////busqueda.php////////////////////////////////

require("conexion.php");
$path="arc/";
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
}
}
$consul=mysql_query("select*from pdf where descripcion='$_POST[z]'") or die ("error en la sentencia");
while($row=mysql_fetch_array($consul)){
//$file=$row["nombre"];
$enlace = "http://davis.com/sistema/casi/busqueda/arc/".$row["nombre"];
echo "<a href="$enlace">".$row["nombre"]."</a><br>";
}

kenel

16/2/2012
pregunta
bueno, me dices k para hacer la busqueda por match mis tablas deben tener un indice antes, podrias darme un ejemplo sencillo de codigo para poder crear esas tablas con indices, un ejemplo por favor, lo mas ismple posible aunque sea con solo dos columnas.

nacho

17/4/2012
SOBRE teleformacion
"TELEFORMACION" es el nombre de la base de datos!!!

peter_a

05/10/2012
No me muestra nada
Ya cree los archivos con los codigos y les hice los cambios necesarios, ademas de seguir con los consejos de los comentarios anteriores para ver si me funcionaba y no
el problema es que al redireccionar a la pagina buscar.php no me muestra nada ni me marca ningun error
he intendado ejecutar la sentencia directamente en phpmyadmin cambiando por supuesto el parametro y me marca error de sintaxis
alguien me puede ayudar o darme una idea del por que me pasa esto??

Karenjs

18/2/2013
No me funciona el Buscador
<?php
$busqueda=isset($_POST['busqueda']) ? $_POST['busqueda'] : null;
//si la cadena existe
if ($busqueda<>''){
//Cuenta el num de palabras
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//Si sollo hay una se establece el LIKE
$cadbusca=mysql_query("SELECT nombre, cedula FROM cliente WHERE VISIBLE =1 AND cedula LIKE '%$busqueda%' OR nombre LIKE '%$busqueda%' LIMIT 50");
} elseif ($numero>1) {
//Si es una frase usa MATCH AGAINST
//busqueda de frases con mas de una palabra
$cadbusca=mysql_query("SELECT nombre, cedula , MATCH ( nombre, cedula ) AGAINST ( '$busqueda' IN BOOLEAN MODE ) AS Score FROM cliente WHERE MATCH ( nombre, cedula ) AGAINST ( '$busqueda' IN BOOLEAN MODE ) ORDER BY Score DESC LIMIT 50");
}
while($row=mysql_fetch_object($cadbusca))
{
//Muestra los nombres de los clientes que deseemos...
$cedula=$row->Cedula;
$nombre=$row->Nombre;
echo $cedula." - ".$nombre."<br>";;
}
}
?>

Karenjs

18/2/2013
No me funciona el Buscador
Hola a todos este es el codigo, adaptado a mi bd pero no me funciona ni siquiera genera error, al pulsar enviar solo muestra la pag en blanco.
<?php
$busqueda=isset($_POST['busqueda']) ? $_POST['busqueda'] : null;
//si la cadena existe
if ($busqueda<>''){
//Cuenta el num de palabras
$trozos=explode(" ",$busqueda);
$numero=count($trozos);
if ($numero==1) {
//Si sollo hay una se establece el LIKE
$cadbusca=mysql_query("SELECT nombre, cedula FROM cliente WHERE VISIBLE =1 AND cedula LIKE '%$busqueda%' OR nombre LIKE '%$busqueda%' LIMIT 50");
} elseif ($numero>1) {
//Si es una frase usa MATCH AGAINST
//busqueda de frases con mas de una palabra
$cadbusca=mysql_query("SELECT nombre, cedula , MATCH ( nombre, cedula ) AGAINST ( '$busqueda' IN BOOLEAN MODE ) AS Score FROM cliente WHERE MATCH ( nombre, cedula ) AGAINST ( '$busqueda' IN BOOLEAN MODE ) ORDER BY Score DESC LIMIT 50");
}
while($row=mysql_fetch_object($cadbusca))
{
//Muestra los nombres de los clientes que deseemos...
$cedula=$row->Cedula;
$nombre=$row->Nombre;
echo $cedula." - ".$nombre."<br>";;
}
}
?>

Daniel

10/6/2013
Gracias
Genio! Solo vine a comentar para darte las gracias, sensacionales tus aportes. Éxitos!