dominios y alojamiento web en hostalia

Programar un buscador con PHP y MySQL.

22 de julio de 2005
Compartir en redes sociales
Valoración del artículo:
0 votos
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 en redes sociales

Comentarios
Fueron enviados 49 comentarios al artículo
19 comentarios no revisados
30 comentarios revisados:
Por: Miguel Anguita
30/7/2005
0 votos
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.
Pincha si este comentario es spam
Por: NeoRod
24/10/2007
0 votos
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>
Pincha si este comentario es spam
Por: despistao
10/1/2008
0 votos
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
Pincha si este comentario es spam
Por: despistao
11/1/2008
0 votos
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
Pincha si este comentario es spam
Por: El Hispano
29/2/2008
0 votos
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.
Pincha si este comentario es spam
Por: Toni
19/9/2008
0 votos
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


Pincha si este comentario es spam
Por: Ana
07/10/2008
0 votos
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>"

?>
Pincha si este comentario es spam
Por: Dinno
20/1/2009
0 votos
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???
Pincha si este comentario es spam
Por: Rafael Navas
12/2/2009
0 votos
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
Pincha si este comentario es spam
Gracias
Por: Franco
30/4/2009
0 votos
Gracias despistao, utilize IN BOOLEAN MODE y anda perfecto!!!!
Pincha si este comentario es spam
varios errores
Por: aka
02/6/2009
0 votos
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
Pincha si este comentario es spam
Como evitar que busque en enlaces? (por ejemplo)
Por: Miquel
26/8/2009
0 votos
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
Pincha si este comentario es spam
por fa ayendenme
Por: nestor raul
26/8/2009
0 votos
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>";
}
}
}
?>
Pincha si este comentario es spam
Perfeccionar busqueda php y mysql
Por: ivan
09/12/2009
0 votos
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
Pincha si este comentario es spam
Diferencias entre MACH y el LIKE
Por: Mariano
18/12/2009
0 votos
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
Pincha si este comentario es spam
Para que un MACH funcione igual que un LIKE
Por: Mariano Ore
18/12/2009
0 votos
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
Pincha si este comentario es spam
Duda del buscador
Por: CLAUDIA
10/1/2010
0 votos
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??????
Pincha si este comentario es spam
error
Por: cephes5
09/3/2010
0 votos
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
Pincha si este comentario es spam
disculpas
Por: cephes5
09/3/2010
0 votos
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
Pincha si este comentario es spam
gracia buen aporte
Por: backboot
15/4/2010
0 votos
Amigo gracias por tu aporte me fue muy util..........
Pincha si este comentario es spam
Excelente aporte
Por: Federico
15/4/2010
0 votos
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.
Pincha si este comentario es spam
hola me pueden ayudar
Por: mil
20/4/2010
0 votos
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>
Pincha si este comentario es spam
Busqueda PHP obteniendo valores de mi MySql
0 votos
28/4/2010
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
Pincha si este comentario es spam
quiero editar un registro
0 votos
28/4/2010
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
Pincha si este comentario es spam

guiller...
Correccion que agrega BOOLEAN MODE
0 votos
08/5/2010
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");
Pincha si este comentario es spam

jm2c
DESDE EL PRINCIPIO
0 votos
02/2/2011
#1214 - The used table type doesn't support FULLTEXT indexes
ni me dejo intentar el PHP
Pincha si este comentario es spam

Zurfy
Grácias
0 votos
10/7/2011
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í!
Pincha si este comentario es spam

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

Loteria
chances
Tiempos

Porfa ayudemen MI email info@sliner.net
Pincha si este comentario es spam
Estupenda
0 votos
24/8/2011
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
Pincha si este comentario es spam

merlyn3...
¿Cuál es el código que concluye este ejercicio?
0 votos
08/11/2011
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.
Pincha si este comentario es spam

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Ranking Distribuciones Linux Octubre 2012La última clasificación mensual de sistema operativos libres basados en GNU/Linux coincide...
#linuxIO segunda parte de la clase de VIM En este hangout sobre #linuxIO, tendremos la segunda parte de la clase de VIM, donde vimos...
#XcodeIO resumen del Lexcode1 y más!Tenemos el lunes un genial directo sobre #XcodeIO, resumen del Lexcode1 y en el que...
Hackers & Developers: todo sobre Software Libre, Hacking y...Nace una nueva revista electrónica de publicación mensual sobre Software Libre, Hacking y...
jBar, haz que un usuario lleve a cabo una acción en tu web...Este sencillo plugin nos permite mejorar las posibilidades de que nuestros usuarios lleven...
Gmail versus HotmailEl servicio de correo electrónico de Google se convierte en el más usado en todo el mundo...
#SocialIO, crear una estrategia online en el sector de la...Un nuevo webcast sobre #SocialIO, donde veremos como crear una estrategia online en el...
¿Problemas con la conexión a Internet de tu iPhone?Apple libera una actualización de su sistema operativo con la que poner solución a varios...
#w8IO y los contratos Tenemos otro directo sobre #w8IO y el mundo de los contratos dentro de W8...
#windowsphoneIO Introducción al Windows PhoneTenemos un primer hangout sobre #windowsphoneIO, que servirá de inicio a una serie de...
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...