Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2013, 18:54
chubse
 
Fecha de Ingreso: marzo-2012
Mensajes: 84
Antigüedad: 12 años, 8 meses
Puntos: 3
Generar consulta o filtros dinámicos con ajax

Que tal amigos del foro, les agradezco su tiempo y la ayuda que siempre proporcionan. Les explico lo que tengo hecho y lo que quisiera hacer:
en estos momentos generé un formulario en el cual tengo un textbox que se encarga de filtrar una tabla que jalo desde una base de datos mysql según la palabra que escriba, sin embargo si escribo por ejemplo "Plantas", me filtra la consulta sin problemas pero si quiero hacer otro filtro consecutivo como por ejemplo "Estípulas", me borra el primer filtro que hice y ahora sólo me toma el segundo filtro.
* Lo que quisiera hacer es que me dejara el primer filtro y ahora a su vez se sumara un segundo filtro y así sucesivamente, es decir, ir haciendo filtros sobre filtros.

index.php
Código HTML:
Ver original
  1. <form name="frmbusqueda" action="" >
  2.     <div align="center">Termino a buscar:
  3.     <input type="text" name="dato" onkeyup="buscarDato(); return false"/>
  4.     </div>
  5.     </form>
  6.     <fieldset><legend>Resultado</legend>
  7.     <div id="resultado"></div>
  8.     </fieldset>

busqueda.php
Código PHP:
<?php
   
include('conexion_mysql.php');
   
$busqueda=$_POST['busqueda'];
   if (
$busqueda<>''){
        
//numero de palabras
        
$trozos=explode(" ",$busqueda);
        
$numero=count($trozos);
        if (
$numero==1) {
                
$cadbusca="SELECT * FROM cat_estado_copy WHERE estado LIKE '%$busqueda%' OR estado_dsc LIKE '%$busqueda%';";
        } elseif (
$numero>1) {
                
$cadbusca="SELECT * , MATCH ( estado, estado_dsc ) AGAINST ( '$busqueda' ) FROM cat_estado_copy WHERE MATCH ( estado, estado_dsc ) AGAINST ( '$busqueda' );";
        }
   
        function 
limitarPalabras($cadena$longitud$elipsis "..."){
        
$palabras explode(' '$cadena);
        if (
count($palabras) > $longitud)
                return 
implode(' 'array_slice($palabras0$longitud)) . $elipsis;
        else
        return 
$cadena;
        }
?>
<table>
<tbody>
        <tr>
        <td class="titulo">Titulo</td>
        <td class="contenido">Contenido</td>
        <td class="autor">Autor</td>
        </tr>
<?php
        $result
=mysql_query($cadbusca$conexion);
        
$i=1;
        while (
$row mysql_fetch_array($result)){
           echo 
"
           <tr>
           <td class='titulo'>"
.$row[3]."</td>
           <td class='contenido'>"
.limitarPalabras($row[4],20)."</td>
           <td class='autor'>"
.$row[5]."</td>
           </tr>"
;
           
$i++;
        }
?>
</tbody>
</table>
<?php
        
//cierra el if inicial
        
}
?>&nbsp;
funciones.js
Código Javascript:
Ver original
  1. unction nuevoAjax(){
  2.         var xmlhttp=false;
  3.         try{
  4.                 xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.         }catch(e){
  6.                 try {
  7.                         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.                 }catch(E){
  9.                         xmlhttp = false;
  10.                 }
  11.         }
  12.        
  13.         if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.                 xmlhttp = new XMLHttpRequest();
  15.         }
  16.    
  17.         return xmlhttp;
  18. }
  19.  
  20. function buscarDato(){
  21.         resul = document.getElementById('resultado');
  22.         bus=document.frmbusqueda.dato.value;
  23.    
  24.         ajax=nuevoAjax();
  25.         ajax.open("POST", "busqueda.php",true);
  26.         ajax.onreadystatechange=function() {
  27.                 if (ajax.readyState==4) {
  28.                         resul.innerHTML = ajax.responseText
  29.                 }
  30.         }
  31.         ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  32.         ajax.send("busqueda="+bus)
  33. }