Buscador con ajax php y mysql avanzado parte 2

Buscador con ajax php y mysql avanzado parte 2

Ya hablamos en la entrada anterior sobre todo lo que iba a tener este pequeño buscador con ajax, y tomamos como parte de inicio una entrada anterior sobre un buscador de palabras, ahora en esta segunda parte ya tenemos lo que es un buscador de verdad o sea un buscador de términos relacionados y que ordena los resultados por relevancia.

Ver el buscador en funcionamiento.

Si estas siguiendo el mini-tutorial, y si viste el tutorial sobre el buscador de palabras entonces podrás darte cuenta que lo que hemos hecho es modificar básicamente las consultas a la base de datos y cambiar la estructura de nuestra tabla para realizar búsqueda mucho mas relevantes.

En la entrada anterior publicamos el código de los primeros 3 archivos el index.php, style.css, resultados.php ahora vamos a colocar el código de los 3 archivos restantes y por supuesto, al final te coloco el código de la tabla que tenemos creada en nuestra base de datos.

Codigo que correponde al archivo config.php

<style>
h3{color:blue;}
</style>
<?php
error_reporting(E_ALL ^ E_NOTICE);
include('conexion.php');
$palabra = $_GET['variable'];
if($palabra == ''){
    echo 'Escribe una palabra...';
}else{
$query = "SELECT * , MATCH (titulo,ntexto) AGAINST ('$palabra') AS puntuacion FROM registro WHERE MATCH (titulo, ntexto) AGAINST ('$palabra') ORDER BY puntuacion DESC LIMIT 50";
//"SELECT registro_id, titulo, ntexto FROM registro where ntexto like '".$palabra."%'";
$respuesta = mysql_query ($query) or die(mysql_error());
if (mysql_fetch_assoc ($respuesta)<=0) {
   
echo "Ningun resultado relacionado con <b> ".$palabra.'<b>';
}else {
$respuesta = mysql_query ($query) or die(mysql_error());
while($row = mysql_fetch_array($respuesta))
{
   
echo '<p>';
    echo '<div id="vista"><b>'.'<a href=resultado.php?id='.$row['registro_id'].'>'.$row['titulo'].'</a>'.'</b><br />';
    echo $row['ntexto'].'</div>';
    echo '</p>';
}
}mysql_free_result($respuesta);
}
?>

Codigo que correponde al archivo conexion.php

<?php
//creamos la conexion a la base de datos
$host="localhost";
$usuario="root";
$password="";
$bd="noticias";
$conexion=mysql_connect($host,$usuario,$password)or die(mysql_error());
$db= mysql_select_db($bd,$conexion);
?>

Codigo que corresponde a nuestro archivos ajax.js el cual nos permitira tener un efecto de busqueda dinamica en tiempo real y sin recargar la pagina.

Nota: Actualmente ya este tipo de código está quedando obsoleto debido a que se puede realizar consultas mucho mas eficientes con lenguajes como JQuery, pero para tener la idea y si quieres implementarlo queda a tu decisión.

// creamos la conexion para los diferentes navegadores
var buscaAjax;
if(window.XMLHttpRequest)
    {
        buscaAjax = new XMLHttpRequest();
    }else{
        buscaAjax = new ActiveXOject("Microsoft.XMLHTTP");
    }
// creamos una funcion para detectar cuento se preciono la tecla enter   
function tecla(e)
    {
        var key=e.keyCode || e.which;
        if (key==13)
        { 
            setTimeout(datos(),100);
        }else{
            document.getElementById('sugerencias').style.display = 'block';
            setTimeout(buscarTermino(),10);
        }
    }
// funcion que nos permite visualizar las sugerencias de nuestra busqueda y presentarnos la en tiempo real
function buscarTermino()
    {
        buscaAjax.onreadystatechange = function(){
            if(buscaAjax.readyState==4 && buscaAjax.status==200)
            {
                document.getElementById('sugerencias').innerHTML = buscaAjax.responseText;       
                var div = document.getElementById('sugerencias');
                setTimeout(div,10);
            }
    }
        var dato = document.form1.buscar.value;
        buscaAjax.open("GET","titulos.php?variable="+dato,true);
        buscaAjax.send();
}

// funcion que nos permite realizar una busqueda si se presiona el boton de busqueda avanada.
function datos()
    {
        buscaAjax.onreadystatechange = function(){
        if(buscaAjax.readyState==4 && buscaAjax.status==200)
        {
            document.getElementById('resultados').innerHTML = buscaAjax.responseText;
            document.getElementById('sugerencias').style.display = 'none';
            }
        }
        var dato = document.form1.buscar.value;
        buscaAjax.open("GET","config.php?variable="+dato,true);
        buscaAjax.send();

    }

Nuestro archivos titulos.php el encargado de enviarle a nuestro archivo ajax todos los titulos relacionados con lo que se esta escribiendo en tiempo real.

<style>
h3{color:blue;}
</style>
<?php
error_reporting(E_ALL ^ E_NOTICE);
include('conexion.php');
$palabra = $_GET['variable'];
if($palabra == ''){
    echo 'Escribe una palabra...';
}else{
$query = "SELECT * , MATCH (titulo,ntexto) AGAINST ('$palabra') AS puntuacion FROM registro WHERE MATCH (titulo, ntexto) AGAINST ('$palabra') ORDER BY puntuacion DESC LIMIT 50";
//"SELECT registro_id, titulo, ntexto FROM registro where ntexto like '".$palabra."%'";
$respuesta = mysql_query ($query) or die(mysql_error());
if (mysql_fetch_assoc ($respuesta)<=0) {
   
echo $palabra.'<b>'.".";
}else {
$respuesta = mysql_query ($query) or die(mysql_error());
while($row = mysql_fetch_array($respuesta))
{
    echo '<p>';
    echo '<b>'.$row['titulo'].'</b>';
    echo '</p>';
}
}mysql_free_result($respuesta);
}
?>

Ahora les coloco el codigo de la tabla en la base de datos en mi caso yo cree una base de datos llamada noticias y dentro de esta base de datos cree una tabla llamada registro, ahora bien ustedes les pueden dar el nombre que quieran a la base de datos solo que tienen que cambiarlo en el archivos de conexion.php.

Nuestra tabla seria la siguiente

CREATE TABLE IF NOT EXISTS `registro` (
  `registro_id` int(11) NOT NULL AUTO_INCREMENT,
  `titulo` varchar(45) NOT NULL,
  `ntexto` text NOT NULL,
  PRIMARY KEY (`registro_id`),
  FULLTEXT KEY `titulo` (`titulo`,`ntexto`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

Si se fijan he comentado todo el código del archivo ajax.js es para no estar explicando paso por paso que hace cada código ya que tendría que crear varias entrada para eso.

Otra cosa mas que les quiero recordar es que ya este tipo de conexiones que estamos realizando con las funciones de mysql muy pronto serán cambiadas por las nuevas mysqli ya que estas permiten una mayor velocidad de conexión así como una mayor seguridad en nuestras consultas.

Bueno espero que les sirva para algo el tutorial y por supuesto que cualquier inquietud, duda, sugerencia o si necesitas ayuda con algo relacionado con programación solo tienes que avisarme a través de un correo o con un comentario.

Como siempre aquí les dejo a disposición los archivos para que lo puedan descargar y modificaros a su gusto.

Descargar buscador con ajax php y mysql

Gracias y hasta la próxima entrada…

Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,Buscador con php, buscador con ajax, buscador con jquery, buscador con mysql,

Comments

  1. By Anónimo

Deja un comentario

Tu dirección de correo electrónico no será publicada.