Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/07/2013, 15:00
Avatar de ZonaRLX
ZonaRLX
 
Fecha de Ingreso: enero-2011
Mensajes: 75
Antigüedad: 13 años, 11 meses
Puntos: 2
Exclamación Busqueda con filtros PHP+MYSQL

Buen día!

Tengo un código típico para buscar en una Base de datos...
Funciona bien, con un input text, escribes lo que buscas y en un div va dando los resultados.

busqueda.php

Código HTML:
<script src="planteles/ajax.js" language="javascript"></script>
<input type="text" size="40" id="valor" onkeyup="Buscar();" /><br />
<div style="width:100%; min-height:100px; border:1px dashed #FF0000;" id="resultados"></div> 
ajax.js

function Buscador(){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 Buscar() {
q = document.getElementById('valor').value;
c = document.getElementById('resultados');
ajax = Buscador();
ajax.open("GET","planteles/procesar.php?q="+q);
ajax.onreadystatechange=function() {
if (ajax.readyState == 4) {
c.innerHTML = ajax.responseText;
}
}
ajax.send(null)
}

procesar.php

Código PHP:
<?php
include("config.php");
$c= new Buscador;
$c->Conectar();
$q $_GET['q'];
if (
$q==null) {
    print 
'';    
}else{
$c->Buscar($q);    
}
?>
config.php

Código PHP:
<?php
class Buscador {
    var 
$host='localhost',$user='USUARIO',$pass='CONTRASEÑA',$db='BASE DE DATOS',$c_Servidor='Se conecto con el servidor correctamente',$i_Servidor='No se conecto con el servidor',$c_DB='Se selecciono correctamente la DB',$i_DB='No se selecciono la DB';

    function 
Conectar() {
        if(!@
mysql_connect($this->host,$this->user,$this->pass)){
            print 
$this->i_Servidor;
        }else{
            if(!@
mysql_select_db($this->db)){
                print 
$this->i_DB;
            }
        }
    }
    
    function 
Buscar($q) {
        
$query mysql_query("SELECT * FROM registro WHERE tipo LIKE '%$q%' OR nivel LIKE '%$q%' OR nombre LIKE '%$q%'");
        if(
mysql_num_rows($query)<=0){
            print 
'No se encontro ningun resultado';
        }else{
            print 
'<table width="100%" border="1" cellspacing="0" cellpadding="0">
                    <tr>
                    <td>ID</td>
                    <td>Tipo</td>
                    <td>Nivel</td>
                    <td>Nombre</td>
                    </tr>'
;
            while (
$row mysql_fetch_assoc($query)){
                print 
'<tr>
                    <td>'
.$row['id'].'</td>
                    <td>'
.$row['tipo'].'</td>
                    <td>'
.$row['nivel'].'</td>
                    <td>'
.$row['nombre'].'</td>
                    </tr>'
;
            }
            print 
'</table>';
        }        
    }
}
?>
Como les decía, la busqueda es por medio de input text. Pero lo que necesito y no consigo es modificar el codigo de manera que funcione con SELECT como "FILTROS".

En la base de datos tengo la tabla que contiene los datos de TIPO, NIVEL, NOMBRE, MUNICIPIO.

Por lo cual, necesito que me aparesca algo asi;
<select id="tipo">
<option>A</option>
<option>B</option>
</select>

Al seleccionar el tipo, salgan los resultados de los niveles que coinciden con ese tipo:

<select id="nivel">
<option>1</option>
<option>2</option>
</select>

Al seleccionar el nivel, salgan los resultados que coinciden con ese tipo y nivel.

<select id="municipio">
<option>35</option>
<option>36</option>
</select>

Al seleccionar el municipio, salgan los resultados que coinciden con ese tipo, nivel y municipio.

<select id="nombre">
<option>NOMBRE1</option>
<option>NOMBRE2</option>
</select>

Y al final este select es el que necesito.
Si no me supe explicar o no entendieron esta un ejemplo en cinepolis.com en la parte de arriba, un cuadro amarillo... ahí esta algo como lo que necesito.
De antemano agradezco su ayuda...