sábado, 22 de septiembre de 2012

Buscador en tiempo real con AJAX, PHP y MySQL

Buscador realizado en HTML utilizando como lenguaje de programación PHP, la tecnología AJAX y a MySQL como motor de base de datos.


Explicación:

Antes que todo, para el ejemplo utilizamos una base de datos llamada database que contiene una sóla tabla llamada personas. Ésta tan sólo tiene dos campos: cod y nombre.

Tenemos el archivo conexion.php para conectarse a la base de datos:


<?php

function conexion(){

$con = mysql_connect("localhost","root","");

if (!$con){

die('Could not connect: ' . mysql_error());
}

mysql_select_db("database", $con);

return($con);

}

?>


El archivo buscajax.php es la vista de nuestra aplicacion donde creamos nuestro código html. En él incluimos la hojas de estilos y el código javascript que contiene la funcion ajax. El método onkeyup() ejecuta ésta funcion.

Archivo buscajax.php


<!DOCTYPE html>
<html>

<head><title>Buscador</title>

<script type="text/javascript" src="ajax.js"></script>
<link rel="stylesheet" type="text/css" href="estilos.css" />

</head>

<body>

<center>

<h1><b>Buscador AJAX - PHP - MySQL</b></h1>

Buscar <input type="text" id="bus" name="bus" onkeyup="loadXMLDoc()" required />

<div id="myDiv"></div>

</center>

</body>

</html>


El archivo ajax.js es un archivo javascript que contiene una función llamada loadXMLDoc(), ésta se activa cada vez que el usuario suelta una tecla del teclado.

El objetivo de esta función es capturar las letras que se ingresen en la caja de texto, almacenarlas en una varibale llamado q y con el método POST se procesen através del archivo proc.php.

Archivo ajax.js


function loadXMLDoc()
{
var xmlhttp;

var n=document.getElementById('bus').value;

if(n==''){
document.getElementById("myDiv").innerHTML="";
return;
}

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","proc.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("q="+n);
}


El archivo proc.php contiene codigo php, lo que hace es capturar el valor que trae la variable q y utilizarla para hacer las consulta a la base de datos.

Por ejemplo si el valor de q es J, hacemos una consulta a la base de datos para que arroje sólo los nombres que empiezan con J y mostrar los resultados en el div con id: myDiv ubicado en el archivo buscajax.php.

Archivo proc.php


<?php

include 'conexion.php';

$q=$_POST[q];
$con=conexion();

$sql="select * from personas where nombre LIKE '".$q."%'";
$res=mysql_query($sql,$con);

if(mysql_num_rows($res)==0){

echo '<b>No hay sugerencias</b>';

}else{

echo '<b>Sugerencias:</b><br />';

while($fila=mysql_fetch_array($res)){

echo $fila['nombre'].'<br />';

}

}

?>


Por ultimo pero no menos importante el código css para darle un poco de estilo a la página.

Archivo estilos.css


div
{

margin-top: 10px;
border-style:dashed;
width: 500px;
height: 500px;
background-color:#F0FFF0;
text-align: left;
color:#00008B;
padding:10px 10px;
}

body{
color:#696969;
font-family:Arial,Helvetica,sans-serif;
}



Actualización (26/feb/2013)

Actualizaciòn al buscador. Para obtener el código completo y gratis de esta nueva versión, este es el link del repositorio en GitHub.

Demo/código fuente

92 comentarios:

  1. Nunca encontrado tan bien explicado :) muchisimas gracias, llevo dias tras buscadores con ajax... nunca los entendí ni me funcionaron, el tuyo me funcionó a la primera y lo entiendo todo :D
    otra vez muchisimas gracias.
    Me gustaría preguntarte algo tambien, lo que me gustaria hacer es un buscador como el de wikipedia, dónde los nombres son seleccionables, y con un click en INTRO, se efectua la busqueda... y poner un limite para las sugerencias tambien quisiera aprender.
    Como podría hacerlo? si haces un tutorial explicandolo se agradecería mucho.

    ResponderEliminar
  2. Hola, te recomiendo los siguientes enlaces que te pueden servir:

    Autocomplete de la biblioteca jQuery UI:
    http://jqueryui.com/autocomplete/

    Sugerencias con AJAX y PHP:
    http://www.w3schools.com/php/php_ajax_livesearch.asp

    Lo del tutorial vamos a ver!!!

    ResponderEliminar
  3. Hola, me sirvio mucho tu ayuda, pero tengo un problema al realizar la consulta me da el siguiente error :
    Notice: Use of undefined constant q - assumed 'q' in C:\proc.php on line 4 pero me muestra los resultados que se encuentran en la base de datos menos aquellos que inician con la "w". ayuda por favor

    ResponderEliminar
  4. Prueba esto:

    declara la variable primero:
    $q="";

    luego:

    if (isset($_POST[q])){
    $q=$_POST[q];
    }

    ó

    $sql="select * from personas where nombre LIKE '".$_POST[q]."%'";

    ResponderEliminar
  5. HOLA QUE TALÑ Y SIQUIERO QUE EL DIV DESAPARESCA Y SOLO APRESCA CUANDO HAY ALGUN RESULTADO COMO LO AGO

    ResponderEliminar
  6. y siquiero que me haga la busqueda en mi base de datos? como le hago, gracias

    ResponderEliminar
  7. El ejercicio está hecho con base de datos, adapta el ejemplo a tus necesidades.

    ResponderEliminar
    Respuestas
    1. El buscador me funciona correctamente. Pero tengo una base de datos de dos campos "Numero" y "Contenido". En la que deseo que al escribir "1" me muestre el "Contenido" de la fila 1 y no así la de la fila "10" y "100" tb (ya que se parecen el inicio en 1)... por favor ayuda... MUCHAS GRACIAS de antemano

      Eliminar
  8. Hola Buen dia, muy interesante el codigo estoy tratando de desarrollar algo similar y esto me ha ayudado mucho; Sin embargo tengo el problema que el compañero que ingreo como anonmo me da el siguiente error: Use of undefined constant q - assumed 'q' in..
    segui la recomendacion que se le dio pero practicamente me dice que no existe la variable q, espero me puedan ayudar de antemano muchas gracias

    ResponderEliminar
  9. Para los que le aparecen el sgte error:

    Notice: Use of undefined constant q - assumed 'q' in C:\proc.php on line 4

    Coloquelen comillas simples en la sgte línea:

    $q=$_POST[q];

    Así:

    $q=$_POST['q'];

    Esto es en el archivo proc.php

    Eso es todo.

    ResponderEliminar
  10. Hola como andas? oye una consulta talvez puedes ayudarme he implementado tu codigo y funciona perfectamente, peto tengo la dificultad que por ejemplo quiero mostrar muchos registros necesito hacer un pagina el cual aplique el estandar que tengo en mi aplicacion, sin embargo no me funciona a la hora de pasar por ejemplo a la pagina 2 donde ya no muestra ningun resultado y la caja de texto se muestra ya vacia, alguna forma de poder hacerlo o algun codigo que tengas disculpa las molestias de antemano muchas gracias

    ResponderEliminar
  11. Como se podria hacer para que se pueda desplazar por el listado instantaneo, con las flechas del teclado para seleccionar una opcion?

    ResponderEliminar
  12. Esa es la desventaja de la versión 2 del buscador, que no se puede navegar entre las sugerencias a través del teclado. En un futuro puede que solucione ese problema.

    ResponderEliminar
  13. MI estimado jerry eres bueno en el tema de php,ajax te felicito muchas gracias por compartir tu scrypter muy bueno me sirvio mucho saludos
    porfavor tendras un link en youtube ?? o tu pagina para poder visitarala

    ResponderEliminar
  14. Buen tema viejo m ayudo mucho de verdad gracias era justo lo q necesitava

    ResponderEliminar
  15. Muy bueno, lo quiero aplicar en mi web y sin tener mucho conocimiento me doy por enterada!. Gracias.

    ResponderEliminar
  16. Buen trabajo amigo , es bueno encontrar gente como tu dispuesta ayudar , que dios te lo pague ^^

    ResponderEliminar
  17. sOLUCION AL ERROR Notice: Use of undefined constant q - assumed 'q' in C:\proc.php

    OJO ES SIMPLE EL ERROR ES LA FALTA DE COMILLAS DENTREO DE ["q"] quedaria algo asi
    Usando una Tabla de nombre rep

    include 'conexion.php';
    $con=conexion();

    $q="";
    $sql="select * from REP where CEDREP LIKE '".$_POST["q"]."%'";
    $res=mysql_query($sql,$con);
    if(mysql_num_rows($res)==0){
    echo 'No hay sugerencias';
    }else{
    echo 'Sugerencias:
    ';
    while($fila=mysql_fetch_array($re

    Mi Nombre es Rubén Guerrero Espero Que les sirva mi aporte

    ResponderEliminar
  18. No hay codigo mejor explicado se agradece muchisimo, alguien me podria ayudar con lo siguiente de este mismo tema? Tengo un script de ejemplo que hace lo mismo: buscar en tiempo real pero como puedo hacer que en ves que lea de un array establecido, me lea de una tabla de una BD... llevo varios dias con esto y no puedo.. porfa alguien me ayuda?

    este es el script

    // Defino el array con los datos
    lista = new Array('Atletismo ','Aerobic','Balonmano','Beisbol','Badmi…

    function cargarLista() {
    // Cargamos el combo
    for (x=0;x…
    document.formulario.miCombo[x] = null;
    }

    // hasta aqui el Script

    body onLoad="cargarLista();"

    //cargo el FORM
    form id="formulario" name="formulario"
    label for="busca"Buscar:/label input type="text" id="busca" name="busca" onKeyUp="buscar();"
    br/
    label for="miCombo"Listado:/label select id="miCombo" name="miCombo" size=8 /select
    /form
    /body

    *Nota: Quite los "mayor que" y "menor que", pues no me dejaba publicar
    ---------------
    Funciona muy bien, pero no puedo cargar un campo de una base de datos en vez del array preestablecido que hay, intente poner un juego de registros y cargarlo directamente pero no se como modificar el script para que me lo lea..

    por su ayuda gracias

    ResponderEliminar
  19. Tengo un Ejemplo parecido y tambien quisiera saber como leer desde una BD en sql en vez del array precargado del script..

    html lang="en"
    head
    meta charset="utf-8" /
    script
    $(function() {
    var availableTags = [
    "ActionScript",
    "AppleScript",
    "Asp",
    "BASIC",
    "C",
    "C++",
    "Clojure",
    "COBOL",
    "ColdFusion",
    "Erlang",
    "Fortran",
    "Groovy",
    "Haskell",
    "Java",
    "JavaScript",
    "Lisp",
    "Perl",
    "PHP",
    "Python",
    "Ruby",
    "Scala",
    "Scheme"
    ];
    $( "#tags" ).autocomplete({
    source: availableTags
    });
    });
    /script
    /head
    body
    div class="ui-widget"
    label for="tags" Tags: /label
    input id="tags" /
    /div
    /body
    /html

    ResponderEliminar
  20. Hola Muy buena la explicacion, agarre los fuentes del 2° ejemplo. Me muestra las sugerencias pero al hacer click me dice que no hay dato. Para mi el error esta en como el proc.php envia los datos al index.php y como los recupera el proc2.php

    proc.php

    onclick="myFunction2('.$fila["cod"].')">'.$fila['nombre'].'

    index.php

    loadDoc("vcod="+cod,"proc2.php",function(){

    proc2.php

    $codigo=$_POST['vcod'];



    No logro ver por que no me envia los valores.

    ResponderEliminar
  21. Excelente ejemplo, muy detallado y explicado, gracias.

    ResponderEliminar
  22. de donde puedo bajar la vercion 2 de este exelente buscador, gracias

    ResponderEliminar
  23. Gracias bro! muy buen ejemplo. Gracias por compartir tu conocimiento.

    ResponderEliminar
  24. excelente tutorial, funciona a la primera, pero me ha surgido un problema. El caso es que lo estoy intentando implementar con jquery-mobile, y al ejecutar la busqueda, me carga los datos obtenidos de una tabla php en el div id="myDiv" perfectamente, pero sin estilo(css). He intentado refrescar css del listview con $('#lista').listview('refresh');, pero no funciona. Alguna idea? Gracias

    ResponderEliminar
  25. con postgressql seria basicamente lo mismo?

    ResponderEliminar
  26. con postgresql la variable q se declara igual?
    ya que estoy intentado realizarlo pero me da error en esta linea:

    $query="select * from public.plan_vacacional where nombre LIKE '".$q."%' LIMIT 0 , 5";

    ResponderEliminar
  27. Utilísimo este artículo! Llevo mucho tiempo queriendo hacer cosas con Ajax y nunca me había planteado que podría ser tan sencillo siguiendo algún manual como el que has hecho en este artículo.

    Mil gracias! Me ha sido de gran utilidad y a partir de ahora abre un buen abanico de posibilidades con lo que se me va ocurriendo para ponerlo en práctica. Para empezar, ya se ven resultados en tiempo real en www.byemovil.com/comparador gracias a esto.

    Saludos.

    ResponderEliminar
  28. hola y muchas gracias por compartir tus conocimientos con otras persons. Eres muy amable... Tengo una pregunta: como le hago si quiero realizar la búsqueda en mas de una tabla? Es posible? Si fuese posible como se hace?
    Saludos y muchas gracias.

    ResponderEliminar
    Respuestas
    1. No lo he hecho, pero intenta realizando varias consultas en el archivo proc.php:

      $q=$_POST['q'];
      $con=conexion();

      $res1=mysql_query("select * from tabla1 where campo LIKE '".$q."%'",$con);

      while......

      $res2=mysql_query("select * from tabla2 where campo LIKE '".$q."%'",$con);

      while......

      Eliminar
  29. Jerry muy bueno, ya tengo en practica tu ejemplo... Únicamente una super consulta, Yo quiero realizar una búsqueda por fecha, ya diseñe para que en el lugar de escribir la fecha, me despliegue un calendario... Pero la función loadXMLDoc solo detecta la escritura desde el teclado, Alguna iluminación que me brindaras.

    Un Abrazo

    ResponderEliminar
    Respuestas
    1. Intenta esto: en vez de utilizar la funcion onkeyup utiliza onchange en la caja de texto.

      Eliminar
  30. muy buenos aportes de roni,ami me funcione de 10....

    ResponderEliminar
  31. una pregunta aparte,toy matando el tiempo haciendo algo similar para chat como tipo facebook, normal puede actualizar una ventana en el mismo formulario, teniendo este 4 cuadros de busqueda,o habria algun incoveniente?...danieldcp

    ResponderEliminar
  32. Hola, estoy viendo el tutorial, muy bueno por lo menos para mi que soy principiante, lo estoy aplicando y me funsiono muy bien, pero me gustaria que me explicara como puedo mostar mas campos de la base de datos, y que pueda tener un link para poder escoger uno y que pueda abrir una ventana con ajax tambien para seguir el format y poderle hacer cambios en sus campos, muy agradecido ante de nada, cualquier comentario peudes hacerlo tambien a juan@mchsol.com

    ResponderEliminar
  33. Que excelente código, me ha ayudado muchísimo.

    sin duda alguna 10 pts.

    muchas gracias!!

    Los únicos cambios que hice fueron:

    $q=$_POST[q]; por $q=$_POST['q'];

    y

    $sql="select * from personas where nombre LIKE '".$q."%'"; por

    $sql="select * from personas where nombre ='$q'";

    y me funciona perfecto sin errores.

    ResponderEliminar
  34. Hola
    excelente aporte
    Pero como hago si quiero que cargue en una nueva pagina el resultado

    Saludos

    ResponderEliminar
  35. Excelente aporte Jerry ahora lo que me gustaría saber es como implementarlo para que busque en dos tablas distintas

    Lo he intentado con estructura de join pero me marca errores

    Espero me puedan ayudar, Saludos

    ResponderEliminar
  36. Muy buen aporte, ilustra exactamente lo que quería hacer.
    Gracias.

    ResponderEliminar
  37. Eres muy gentil, por esa utilidad de autocompletar.

    Gracias.
    juancarlosrobayopaez@gmail.com

    ResponderEliminar
  38. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  39. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  40. Que excelente aporte, la verdad es que hace un tiempo habia desarrollado algo parecido pero esto esta perfecto, muchas gracias por compartir ...!

    ResponderEliminar
  41. Hola Felicidades muy buen trabajo me funciona perfectamente tu trabajo.. pero tengo un problema a lo que quiero adjuntar una funcion para tomar una fila completa, en la parte de la consulta a la bdd presento la informacion en forma de tabla con un boton adicional en cada fila para al dar clic me seleccione la fila solo toma la primera fila cuando doy clic me seleccione dicha fila y me las presente en un alert pero solo me selecciona pa primera fila a no se proque alguien me puede ayudar aqui mi codigo para seleccionar la fila:
    //*******Funcion para tomar datos de la Fila**************
    function tomaIds(){
    document.getElementById("cgrid").onclick=function(e){
    // obtenemos el elemento sobre el que se ha hecho click
    if(!e)e=window.event;
    if(!e.target) e.target=e.srcElement;
    // e.target ahora simboliza la celda en la que hemos hecho click
    // subimos de nivel hasta encontrar un tr
    var TR=e.target;
    while( TR.nodeType==1 && TR.tagName.toUpperCase()!="TR" )
    TR=TR.parentNode;
    var celdas=TR.getElementsByTagName("TD");
    // cogemos la primera celda TD del tr (si existe)
    if( celdas.length!=0 )
    var cogeid=celdas;
    // devolvemos su contenido
    //Almaceno los valores tomados de la fila
    var codigo =celdas[0].innerHTML
    var cedula =celdas[1].innerHTML
    var nombre =celdas[2].innerHTML
    var apellido =celdas[3].innerHTML
    var fnacido =celdas[4].innerHTML
    alert(codigo+cedula+nombre+apellido+fnacido);
    }} por favor q alguien me ayude gracias de antemano

    ResponderEliminar
  42. real mente bueno yo tengo uno similar en mi sitio http://vinet.tv

    ResponderEliminar
  43. hola muy bueno tu buscador pero tengo un problema al agregar datos con tildes o la letra "ñ" no lo reconoce ya declare con meta
    "meta charset="utf8_spanish_ci""

    y luego intente con esta
    "meta http-equiv="Content-type" content="text/html; charset=utf-8" "

    note que el documento si reconoce las "ñ" pero al hacer el llamado de la tabla no, por cierto la base y la tabla estan con Cotejamiento utf8_spanish_ci

    ResponderEliminar
    Respuestas
    1. En el archivo proc.php agrega esta línea:

      mysql_query("SET NAMES utf8"); //<-----esta linea agreguela
      $sql="select * from personas where nombre LIKE '".$q."%'";
      $res=mysql_query($sql,$con);

      Debe funcionar.

      Eliminar
  44. Hola! Sabes, tengo un problema, el código funciona bien y cumple su función, pero me da problemas con los registros que tienen espacios, los muestra pero no los abre. ¿Me puedes ayudar por favor?.

    Gracias!

    ResponderEliminar
  45. Hola, estupendo tu trabajo, tengo una pregunta, en caso que requiera no usar un campo de búsqueda, sino 2 o mas, en el código Ajax al momento de enviarlas por xmlhttp.send(); de que forma lo implemento ?

    ResponderEliminar
    Respuestas
    1. Señores, les agradesco mucho, ya lo solucione, simplemente era concatenarlo en la continuación del envio con +"&k="m

      El & es la clave para seguir uniendo mas variables y pasarlas por POST

      Eliminar
    2. Como lo hiciste?

      Eliminar
  46. Muy bueno este código! Funciona muy bien perooo...! Soy bastante principiante y hay algo que no sé arreglar. En mi base de datos hay texto guardado con comillas simples y el buscador no es capaz de encontrarlo. Todos los registros que contengan comillas no los encuentra.

    ResponderEliminar
  47. olvidalo ya tengo el codigo, lo acabo de modificar completito jejeje pero gracias y sigue aportando

    ResponderEliminar
  48. Una pregunta, se puede agregar un juego de paginación ¿?

    ResponderEliminar
  49. EXCELENTE. funciona a la perfección.
    Oye tengo una duda ya me muestra las opciones de ni bd pero si quisiera que pudiera seleccionar una de ellas y llenar demas campos con la información de la opcion que selecciono como podría hacerle?

    ResponderEliminar
  50. Hola Jerry!
    Excelente tutorial.. me sirvió mucho y sinceramente lo utilizo en varias cosas, un poco modificado, claro esta..
    Pero hay algo que me han pedido y no se como hacerlo, por lo que te paso la pregunta..
    Ves que el buscador al escribir la letra "a" ya te tira todos los datos con esa letra, pero en mi caso, esas filas tienen más informacion. ejemplo:
    codigo-descripcion-precio
    Donde la letra "a" coindice con auriculares de varias marcas y modelos..
    Como hago para que al darle enter, luego de que me muestre las coincidencias, tambien me muestre como resultado todos los auriculares?
    Por que buscar de a uno lleva tiempo, y perder los resultados, no saben donde se quedaron y todo eso, se complica un poco para el usuario.
    Gracias!

    ResponderEliminar
  51. GE NIAL APORTE!!!!!! SUPER SENCILLO Y FUNCIONA PERRRRRRRFECTO
    MIL GRACIAS

    ResponderEliminar
  52. quisiera saber si
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");

    debo modificar algo?

    ResponderEliminar
  53. Buenas tardes Amigo, me agrado mucho tu publicacion y pues estoy tratando de adaptar ese autocompletar en mi formulario, pero si me gustaria saber como funciona cada instruccion de tu codigo en javascript, pues la verdad no se mucho sobre ese tema, espero me puedas apoyar en esa parte..
    saludos!

    ResponderEliminar
  54. Buen dia,

    mi tabla usuarios tiene mas campos, como hago para mostrarlos todos.?

    ResponderEliminar
    Respuestas
    1. yo lo hice mas o menos así:
      arriba del while haces una tabla con los titulos q quieres q tengan:
      ej:
      table
      thead
      tr
      th "titulo1" /th
      th "titulo2" /th
      th "titulo3" /th
      /th
      /thead

      despues la consulta... $sql...

      while($row=mysql_fetch_array($res)){

      $contador = $contador + 1;
      echo "tr td".$contador."/td";
      echo "td". $row["tipo"]."/td";
      echo "td". $row["nombre"]."/td";
      echo "td". $row["precio_compra"]."/td";
      echo "td". $row["precio_venta"]."/td";
      echo "td". $row["cantidad"]."/td";
      ...
      }
      echo "/tr /tbody /table";
      }

      Ahi le modificas lo que necesites y agregale las <>
      Espero te sirva.

      Eliminar
  55. hola que tal, me interesa saber como es el código de la v2.

    ResponderEliminar
  56. hola chicos espero me ayuden estoy haciendo lo mismo pero al correrlo me marca este error .
    Warning: oci_execute(): ORA-00933: comando SQL no terminado correctamente in.

    ResponderEliminar
    Respuestas
    1. Este blog ha sido eliminado por un administrador de blog.

      Eliminar

    2. $q=$_POST["q"];

      $stid = oci_parse($conn,"SELECT buyer_code,buyer_nm FROM trimbuyr WHERE use_yn='Y'
      order by 2 LIKE '".$q."%'");
      oci_execute($stid);

      if(oci_num_rows($stid)==0){

      echo 'No hay sugerencias';

      }else{

      echo 'Sugerencias:
      ';

      while($fila=oci_fetch_array($stid)){

      echo $fila['use_yn'].'
      ';

      }

      }

      ?>


      este es mi codigo

      Eliminar
  57. Graaaacias, he estado mucho tiempo intentando hacer un buscador así y no me resultaba.
    La mejor explicación :D

    ResponderEliminar
  58. Hola A todos quisiera saber como hacer para que me muestre las sugerencias y al darle clic en ella que me muestre el productos que ando buscado

    ResponderEliminar
  59. Para que en vez de que me muestre el codigo y el nombre me salga un href para donde el producto

    ResponderEliminar
  60. Eso no es autocompletar por que nada mas te busca con la primera letra no asi con las demas de las cadenas, Al menos eso lo es comprobado

    ResponderEliminar
  61. Eso no es autocompletar por que nada mas te busca con la primera letra no asi con las demas de las cadenas, Al menos eso lo es comprobado

    ResponderEliminar
  62. Excelente, lo adapté a otra base de datos e hice las correcciones sugeridas en los comentarios y funcionó perfecto. Ah, y para que busque coincidencias en toda la cadena de caracteres también coloqué un % antes de la $q quedando así: $sql="select * from cursotable where nombre LIKE '%".$q."%'";

    ResponderEliminar
  63. Hola!!
    Lo siento pero no me funciona el LIKE, pongo la consulta en el phpmyadmin y tampoco me encuentra nada:
    $sql="select * from jugadores_general where nombre LIKE '%".$q."%'";
    tal como ha dicho Oscar Heredia, eso si que me funciona, pero si le quito el % del principio, porque solo quiero los que empiecen por $q, entonces no me va porque no me encuentra nada.
    No sé como hacerlo...
    Muchas gracias

    ResponderEliminar
  64. Tengo un problema y es que no me funciona AJAX, ya que no me llega a proc.php.
    Hasta el xmlhttprequest todo perfecto pero a partir de hay nada.

    ResponderEliminar
  65. Hola!
    Muy buen ejemplo, muchas gracias.
    No obstante, tengo un problema y no se que es!!!
    El error es el siguiente:

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp2\htdocs\pruebabuscador\proc.php on line 19
    No hay sugerencias

    El AJAX funciona, pero no busca y me salta ese fallo.
    El codigo es exactamente el mismo, solo que he cambiado el nombre de la base de datos y lo he modificado en el codigo.
    Gracias!

    ResponderEliminar
    Respuestas
    1. Soy el mismo, no he dicho nada! JEJEJE
      Pero por si a alguien le sale el mismo error, que compruebe la consulta y el nombre de la base de datos. Lo mio fue un error en la consulta, el nombre de la tabla no era el correcto. Ya va perfecto! Gracias!!!

      Eliminar
  66. Eres grande jeje tu código me ayudo a despejar muchísimas dudas que tenia acerca de como hacer un buscador...

    ResponderEliminar
  67. me sale ese error. me ayuda no me hace consulta

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\AppServ\www\buscadorajax\proc.php on line 11
    No hay sugerencias

    ResponderEliminar
  68. El mejor buscador que he encontrado. me ayudaste, Gracias

    ResponderEliminar
  69. como puedo hacer para meter los valores que me devuelven a un radio buttoon?

    ResponderEliminar
  70. como puedo hacer para meter los valores que me devuelven a un radio buttoon?

    osea que en vez de que me muestre los valores en el div me los ingrese a un radio button

    ResponderEliminar
  71. quiero pasar dos parametro loadDoc("vcod="+cod,"proc2.php",function(){ como escribo el otro parametro

    ResponderEliminar
  72. Mil gracias!
    El mejor, me ayudaste bastante.
    Gracias!

    ResponderEliminar
  73. El buscador me funciona correctamente. Pero tengo una base de datos de dos campos "Numero" y "Contenido". En la que deseo que al escribir "1" me muestre el "Contenido" de la fila 1 y no así la de la fila "10" y "100" tb (ya que se parecen el inicio en 1)... por favor ayuda... MUCHAS GRACIAS de antemano

    ResponderEliminar
  74. Hola! me funciona pero no me encuenra coincidencias en los resultados! me dice siempre "sin sugerencias"

    ResponderEliminar