Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Buscador Avanzado Ajax Live search

Estas en el tema de Buscador Avanzado Ajax Live search en el foro de Frameworks JS en Foros del Web. Hola Saludos !! Estoy tratando de hacer un buscador web en ajax, encontre un codigo muy bueno y he tratado de modificarlo para que pueda ...
  #1 (permalink)  
Antiguo 23/03/2010, 12:31
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 10
Antigüedad: 15 años, 7 meses
Puntos: 0
Buscador Avanzado Ajax Live search

Hola Saludos !!

Estoy tratando de hacer un buscador web en ajax, encontre un codigo muy bueno y he tratado de modificarlo para que pueda buscar segun varios criterios.

Por ejemplo, tengo en una tabla los datos Nombre, Descripcion, Ciudad. Entonces la idea es que en el buscador alguien busque un nombre, si no especifica la ciudad pues que salgan todos los nobres segun la busqueda, pero que si el usuario quiere, pueda filtrar los nombres por ciudad. Por ejemplo buscar Eduardo en bogota. Entonces despligue los resultados si hay eduardos en bogota. Espero que me puedan colaborar.

Aui dejo lo que llevo trabajado.

Buscador.php:

Código PHP:
<?php
/*
 * Buscador en AJAX. Ejemplo creado por Victor De la Rocha [http://www.mis-algoritmos.com]
 * http://www.mis-algoritmos.com/?p=169
 */
require('config.php');
require(
'include/conexion.php');
require(
'include/funciones.php');
require(
'include/pagination.class.php');

$items 10;
$page 1;

if(isset(
$_GET['page']) and is_numeric($_GET['page']) and $page $_GET['page'])
        
$limit " LIMIT ".(($page-1)*$items).",$items";
    else
        
$limit " LIMIT $items";

if(isset(
$_GET['q']) and !eregi('^ *$',$_GET['q'])){
        
$q sql_quote($_GET['q']); //para ejecutar consulta
        
$c sql_quote($_GET['c']);
        
$busqueda htmlentities($q); //para mostrar en pantalla

        
$sqlStr "SELECT * FROM preguntas WHERE pregunta LIKE '%$q%' OR ciudad ='%$c%'";
        
$sqlStrAux "SELECT count(*) as total FROM preguntas WHERE pregunta LIKE '%$q%' OR ciudad ='%$c%'";
    }else{
        
$sqlStr "SELECT * FROM preguntas";
        
$sqlStrAux "SELECT count(*) as total FROM preguntas";
    }

$aux Mysql_Fetch_Assoc(mysql_query($sqlStrAux,$link));
$query mysql_query($sqlStr.$limit$link);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Buscador en AJAX</title>
<link rel="stylesheet" href="pagination.css" media="screen">
<link rel="stylesheet" href="style.css" media="screen">
<script src="include/buscador.js" type="text/javascript" language="javascript"></script>
</head>

<body>
    <form action="index.php" onsubmit="return buscar()">
      <label>Buscar</label> <input type="text" id="q" name="q" value="<?php if(isset($q)) echo $busqueda;?>" onKeyUp="return buscar()">
      <label>
        <select name="c" id="c">
          <option value="bogota">bogota</option>
          <option value="medellin">medellin</option>
        </select>
      </label>
      <input type="submit" value="Buscar" id="boton">
      <span id="loading"></span>
    </form>
    
    <div id="resultados">
    <p><?php
        
if($aux['total'] and isset($busqueda)){
                echo 
"{$aux['total']} Resultado".($aux['total']>1?'s':'')." que coinciden con tu b&uacute;squeda \"<strong>$busqueda</strong>\".";
            }elseif(
$aux['total'] and !isset($q)){
                echo 
"Total de registros: {$aux['total']}";
            }elseif(!
$aux['total'] and isset($q)){
                echo
"No hay registros que coincidan con tu b&uacute;squeda \"<strong>$busqueda</strong>\"";
            }
    
?></p>

    <?php 
        
if($aux['total']>0){
            
$p = new pagination;
            
$p->Items($aux['total']);
            
$p->limit($items);
            if(isset(
$q))
                    
$p->target("index.php?q=".urlencode($q));
                else
                    
$p->target("index.php");
            
$p->currentPage($page);
            
$p->show();
            echo 
"\t<table class=\"registros\">\n";
            echo 
"<tr class=\"titulos\"><td>Titulo</td></tr>\n";
            
$r=0;
            while(
$row mysql_fetch_assoc($query)){
          echo 
"\t\t<tr class=\"row$r\"><td><a href=\"http://www.mis-algoritmos.com/?p={$row['id']}\" target=\"_blank\">".htmlentities($row['pregunta'])."</a></td></tr>\n";
          if(
$r%2==0)++$r;else--$r;
        }
            echo 
"\t</table>\n";
            

            
$p->show();
        }
    
?>
    </div>
</body>
</html>
Busqueda.php

Código PHP:
<?php
require('config.php');
require(
'include/conexion.php');
require(
'include/funciones.php');
require(
'include/pagination.class.php');

$items 10;
$page 1;

if(isset(
$_GET['page']) and is_numeric($_GET['page']) and $page $_GET['page'])
        
$limit " LIMIT ".(($page-1)*$items).",$items";
    else
        
$limit " LIMIT $items";

if(isset(
$_GET['q']) and !eregi('^ *$',$_GET['q'])){
        
$q sql_quote($_GET['q']); //para ejecutar consulta
        
$c sql_quote($_GET['c']);
        
$busqueda htmlentities($q); //para mostrar en pantalla

        
$sqlStr "SELECT * FROM preguntas WHERE pregunta LIKE '%$q%' OR ciudad ='%$c%'";
        
$sqlStrAux "SELECT count(*) as total FROM preguntas WHERE pregunta LIKE '%$q%' OR ciudad ='%$c%'";
    }else{
        
$sqlStr "SELECT * FROM preguntas";
        
$sqlStrAux "SELECT count(*) as total FROM preguntas";
    }

$aux Mysql_Fetch_Assoc(mysql_query($sqlStrAux,$link));
$query mysql_query($sqlStr.$limit$link);
?>    <p><?php
        
if($aux['total'] and isset($busqueda)){
                echo 
"{$aux['total']} Resultado".($aux['total']>1?'s':'')." que coinciden con tu b&uacute;squeda \"<strong>$busqueda</strong>\".";
            }elseif(
$aux['total'] and !isset($q)){
                echo 
"Total de registros: {$aux['total']}";
            }elseif(!
$aux['total'] and isset($q)){
                echo
"No hay registros que coincidan con tu b&uacute;squeda \"<strong>$busqueda</strong>\"";
            }
    
?></p>

    <?php 
        
if($aux['total']>0){
            
$p = new pagination;
            
$p->Items($aux['total']);
            
$p->limit($items);
            if(isset(
$q))
                    
$p->target("index.php?q=".urlencode($q));
                else
                    
$p->target("index.php");
            
$p->currentPage($page);
            
$p->show();
            echo 
"\t<table class=\"registros\">\n";
            echo 
"<tr class=\"titulos\"><td>Titulo</td></tr>\n";
            
$r=0;
            while(
$row mysql_fetch_assoc($query)){
          echo 
"\t\t<tr class=\"row$r\"><td><a href=\"http://www.mis-algoritmos.com/?p={$row['id']}\" target=\"_blank\">".htmlentities($row['pregunta'])."</a></td></tr>\n";
          if(
$r%2==0)++$r;else--$r;
        }
            echo 
"\t</table>\n";
            
$p->show();
        }
    
?>
buscador.js

Código PHP:
function xmlhttp(){
        var 
xmlhttp;
        try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
        catch(
e){
            try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
            catch(
e){
                try{
xmlhttp = new XMLHttpRequest();}
                catch(
e){
                    
xmlhttp false;
                }
            }
        }
        if (!
xmlhttp
                return 
null;
            else
                return 
xmlhttp;
    }

function 
buscar(){
        var 
query document.getElementById('q').value;
        var 
query2 document.getElementById('c').value;
        var 
document.getElementById('resultados');
        var 
document.getElementById('loading');
        var 
ajax xmlhttp();

        
ajax.onreadystatechange=function(){
                if(
ajax.readyState==1){
                        
B.innerHTML "<img src='images/loading.gif' alg='Loading...'>";
                    }
                if(
ajax.readyState==4){
                        
A.innerHTML ajax.responseText;
                        
B.innerHTML "";
                    }
            }
        
ajax.open("GET","busqueda.php?q="+encodeURIComponent(query),true);
        
ajax.send(null);
        return 
false;
    } 
Funciones.php

Código PHP:
<?php
function sql_quote$value )
{
    if( 
get_magic_quotes_gpc() )
    {
          
$value stripslashes$value );
    }
    
//check if this function exists 
    
if( function_exists"mysql_real_escape_string" ) )
    {
          
$value mysql_real_escape_string$value );
    }
    
//for PHP version < 4.3.0 use addslashes 
    
else
    {
          
$value addslashes$value );
    }
    return 
$value;
}
?>

Esos son los archivos que interactua el buscador. Ya la conexion a la base de datos me funciona, pero no logro hacer el filtro segun los criterios que el usuario escoja, en este caso, buscar solo por ciudad.

Aqui pueden ver el buscador corriendo:

http://www.grupoedal.com/b/buscador.php

Espero me puedan colaborar !! Gracias !!!

Etiquetas: ajax, live, search, buscadores
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:16.