En esta pagina se explica don detalle el uso de esta técnica
http://deckerix.tuxfamily.org/leerArticulo.php?post=92
15/4/2009
Otra formaPor: POPCORNEn esta web plantean otra forma de hacer esto.
http://www.programacionweb.net/articulos/articulo/?num=50
Saludis
29/4/2010
CODIGO UN POCO MEJORADOPor: lrojasHOLA. 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> </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>";
}
}
?>
23/7/2010
Busqueda en phpPor: CarlosAmigos 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
01/8/2010
Buscador un poco mas complejo...Por: SantiagoEste 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.
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> </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> </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> </td>
<td><%=colorear(Recordset1.Fields.Item("Extensiones").value)%> </td>
<td><%=colorear(Recordset1.Fields.Item("numenlace").Value)%> </td>
<td width="10%"><%=colorear(Recordset1.Fields.Item("ciudad").Value)%> </td>
<td width="10%"><%=colorear(Recordset1.Fields.Item("dependencia").Value)%> </td>
<td><%=colorear(Recordset1.Fields.Item("direccion").Value)%> </td>
<td><%=colorear(Recordset1.Fields.Item("departamento").Value)%> </td>
<!-- <td><%=(Recordset1.Fields.Item("Domicilio").Value)%> </td> -->
<!-- <td><%=(Recordset1.Fields.Item("Ubicacion").Value)%> </td>
<td><%=(Recordset1.Fields.Item("Area").Value)%> </td> -->
<td><%=colorear(Recordset1.Fields.Item("puesto").Value)%> </td>
<!-- <td width="10%"><%=(Recordset1.Fields.Item("Observaciones").Value)%> </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 %>">
04/11/2010
Duda de este ejemploPor: LieslieHe 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...
09/12/2010
En BlancoPor: ErausiHola
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?
14/12/2010
varias dudas porfaPor: Auxihola 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 :)
30/12/2010
>LOLPor: dadada<script>alert()</script>
08/6/2011
Deberia aclarar el motor de la base de datosPor: Daniel Vergara UrrutiaSi 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
17/6/2011
graciasPor: d3nngracias por la ayuda, me sirvio de mucho.
18/9/2011
Urge codigo HTLMPor: OSCARHola: Necesitaria un codigo HTLm para mi pagina web como busqueda de pisos; precio desde, metros, zona , comunidad autonoma, ciudad, habitaciones, etc. Estaria muy agradecido
21/9/2011
Solo le falta el paginadorPor: MarceloBueno, es simplemente para decirles que si el resultado devuelve 200 registros, lo mejor sería agregarle un paginador. Con eso estaría perfecto. Gracias.
29/11/2011
problemas con el matchPor: ronalcasel 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
17/12/2011
quiero que me ayuden espero no sea tardePor: david juarez velazquezmiren 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>";
}
16/2/2012
preguntaPor: kenelbueno, 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.
17/4/2012
SOBRE teleformacionPor: nacho"TELEFORMACION" es el nombre de la base de datos!!!
05/10/2012
No me muestra nadaPor: peter_aYa 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??
18/2/2013
No me funciona el BuscadorPor: Karenjs<?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>";;
}
}
?>
18/2/2013
No me funciona el BuscadorPor: KarenjsHola 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>";;
}
}
?>