Foros del Web » Programando para Internet » PHP »

PHP OO Buscador multinivel PHP / MySQL

Estas en el tema de Buscador multinivel PHP / MySQL en el foro de PHP en Foros del Web. Buen día a todos. Estoy realizando un buscador en mi sitio web pero me he atorado en unas especificaciones, estoy profundizando cada vez más dentro ...
  #1 (permalink)  
Antiguo 19/11/2015, 18:32
 
Fecha de Ingreso: octubre-2014
Ubicación: Distrito Federal
Mensajes: 8
Antigüedad: 9 años, 6 meses
Puntos: 0
Pregunta Buscador multinivel PHP / MySQL

Buen día a todos.

Estoy realizando un buscador en mi sitio web pero me he atorado en unas especificaciones, estoy profundizando cada vez más dentro de la programación con PHP y MySQL, así como ajax pero me gustaría solicitarles un poco de ayuda para poder resolver el tema.

De qué va:

El sitio es un directorio en el que tenemos 4 campos selects

1. el primer select nos pregunta ¿qué queremos?
Código HTML:
Ver original
  1. <option id=1>Agentes</option>
  2. <option id=2>Promotores</option>
  3. <option id=3>Aseguradoras</option>

2. el segundo select tiene una relación de tablas en MySQL y se llena en base a la primer respuesta, este segundo select se muestra si sólo seleccionamos agentes, si es otra opción, desaparece del html:
Código HTML:
Ver original
  1. <option id=1>Todos</option>
  2. <option id=2>Tradicional</option>
  3. <option id=3>Virtual</option>

3. el tercer select, tiene otra relación de tablas MySQL en donde se puede llenar tanto con la respuesta del primer select como del segundo, por aquello de que sólo con agentes se muestra el segundo select:
Código HTML:
Ver original
  1. <option id=1>Todos</option>
  2. <option id=2>Auto</option>
  3. <option id=3>Hogar</option>

4. el cuarto select, se conecta a la tabla final en donde se encuentran los resultados y muestra los estados conforme estén integrados en la base de datos:
Código HTML:
Ver original
  1. <option id=1>México</option>
  2. <option id=2>Celaya</option>
  3. <option id=3>Guadalajara</option>

La duda que tengo y que no puedo resolver es que selecciono, la opción de promotor y quiero que desaparezca el select 2 y 3 y sólo se muestre el select 4.

De igual manera, cuando seleccione Aseguradoras, debe desaparecer el select 2 y 4 y se muestra solo el select 3.

Y que al final de todo se muestre el resultado conforme lo que se está buscando.

Agrego mis códigos:

Código PHP:
<!doctype html>
<!--[if lt IE 7]> <html class="ie6 oldie"> <![endif]-->
<!--[if IE 7]>    <html class="ie7 oldie"> <![endif]-->
<!--[if IE 8]>    <html class="ie8 oldie"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="es" class="">
<!--<![endif]-->
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1"/>
<!--<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> -->
<meta name="description" content="">
<title>Directorio inteligente | Seguropedia</title>
<?php include('menu_header.php'?>
<main>

<section class="cont_general">
    <div class="gridContainer clearfix">
    <section class="principal">
    
    <section class="publicidad_superior">
    hola
    </section>
    
    <section class="menu_cintillo">
      <a href="javascript:history.back(1)">Atrás</a> | <span>Resultado</span>
      </section>
    
    <div class="form_directorio">
        <form class="contact_form" action="agentes_seguropedia.php" method="post"> 
        <ul>
        <li><label for="busqueda1">¿Qué buscas?</label>
        <select name="ente" id="ente" onChange="filltipo(this.value)">
              <?php    
              
include("php/conexion.php");  
              
$link Conectarse(); 
              
              
$sql "SELECT id,ente FROM entes ORDER BY id ASC ";
              
$Rs mysql_query($sql) or die("No se pudo conectar con la base de datos.");
              if( 
mysql_num_rows($Rs)){
                  while(
$Set mysql_fetch_row($Rs)){
                  
?>
                  <option value="<?php echo trim($Set[0]);?>"><?php echo trim($Set[1]);?></option>
                  <?php
                  
}}
                      
?>
              </select></li>
Código Javascript:
Ver original
  1. <script>
  2.               function filltipo(value){
  3.               $.post('ajax_tipo.php', { ente: value }, function (resp) {
  4.                   $('#tipo').html("<option></option>");
  5.                   if (resp.length>20){
  6.                       document.getElementById('id_tipo').style.display='block';
  7.                       $('#tipo').html(resp);
  8.                       }
  9.                       else {
  10.                           document.getElementById('id_tipo').style.display='none';
  11.                          
  12.                           }
  13.                           fillramo();
  14.                             });
  15.               }
  16.               function fillramo(){
  17.                  
  18.                   var ente=document.getElementById('ente').value;
  19.                   var tipo=document.getElementById('tipo').value;
  20.  
  21.                  
  22.               $.post('ajax_ramo.php', { tipo: tipo,ente:ente }, function (resp) {
  23.                
  24.                                 $('#ramo').html(resp);
  25.                                
  26.                            
  27.                             });
  28.               }
  29.              
  30.              
  31.               function fillestado(){
  32.                
  33.                   var ente=document.getElementById('ente').value;
  34.                   var tipo=document.getElementById('tipo').value;
  35.                   var ramo=document.getElementById('ramo').value;
  36.                   var estado=document.getElementById('estado').value;
  37.                   $.post('ajax_estado.php', { ramo: ramo, ente:ente, tipo:tipo, estado:estado }, function (resp) {
  38.                    
  39.                                 $('#estado').html(resp);
  40.                             });
  41.                   }
  42.               </script>
Código PHP:
              <li id="id_tipo">
              <label for="busqueda1">Tipo</label>
              <select name="tipo" id="tipo" onChange="fillramo()">
              <option></option>
              </select>
              </li>
              <li>
              <label for="busqueda2">Ramo / Especialidad</label>
              <select name="ramo" id="ramo" onChange="fillestado()">
              </select>
              </li>
              <li>
              <label for="busqueda4">Zona Geográfica</label>
              <select name="estado" id="estado"></select>
              </li>
              <li>
              <button type="submit" class="submit" style="margin-left:100px;width:200px;height:50px !important;font-size:1.75rem;">Buscar</button></li>
              </ul>
              </form>
              
      </div>
    
    
    </section>
    </div>
</section>

</main>
<?php include('main_footer.php'?>
Y los componentes:

ajax_tipo.php
Código PHP:
<?php
include("php/conexion.php");  
$id_ente $_POST["ente"];
        
$link Conectarse(); 
        
$response "";
        
$sql "Select id,tipo from lista_tipos where id in (SELECT id_tipo FROM relacion_ente_tipo WHERE id_ente=".$id_ente.") ";
        
$Rs mysql_query($sql) or die("No se pudo conectar con la base de datos.");
        if( 
mysql_num_rows($Rs)){
            while(
$Set mysql_fetch_row($Rs)){
            
$response .= "<option value='".$Set[0]."'>".$Set[1]."</option>";
            
            }}
            
            echo 
$response;

?>
ajax_ramo.php
Código PHP:
<?php
include("php/conexion.php");  
$ente trim($_POST["ente"]);
$tipo trim($_POST["tipo"]);
$filtro "";
$filtro1 "";
if (
$ente!=""){
    
$filtro "(select id_ramo from relacion_ente_ramo where id_ente=$ente)";
    }
    if (
$tipo!=""){
    
$filtro1 " AND id in (select id_ramo from relacion_tipo_ramo where id_tipo=$tipo)";
    }
        
$link Conectarse(); 
        
$response "";
        
$sql "SELECT id,ramo FROM lista_ramos WHERE id in ".$filtro." ".$filtro1." ORDER BY id ASC ";
        
$Rs mysql_query($sql) or die("No se pudo conectar con la base de datos.");
        if( 
mysql_num_rows($Rs)){
            while(
$Set mysql_fetch_row($Rs)){
            
$response .= "<option value='".$Set[0]."'>".$Set[1]."</option>";
            
            }}
            
            echo 
$response;

?>
ajax_estado.php
Código PHP:
<?php
include("php/conexion.php");  

$ramo =  $_POST["ramo"]; 
$ente =  $_POST["ente"];
$tipo =  $_POST["tipo"];
$estado =  $_POST["estado"];

$filtro "id_ente=$ente";

        
$link Conectarse(); 
        
$response "";
        
$sql "SELECT estado,estado FROM integrantes WHERE ".$filtro." GROUP BY estado ORDER BY estado ASC";
        
$Rs mysql_query($sql) or die("No se pudo conectar con la base de datos.");
        if( 
mysql_num_rows($Rs)){
            while(
$Set mysql_fetch_row($Rs)){
            
$response .= "<option value='".utf8_encode($Set[0])."'>".utf8_encode($Set[1])."</option>";
            
            }}
            
            echo 
$response;

?>
Agradezco su atención.

Les envío saludos!!
  #2 (permalink)  
Antiguo 19/11/2015, 20:07
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Buscador multinivel PHP / MySQL

Saludo.
Según lo que se requiere, es un tema más de javascript.
Se podría solucionar haciendo una función donde se envíe el select usado,
y con eso sabiendo tanto el id o name, y el valor seleccionado,
que muestre unos u otros selects.

Así que pasate por el foro de javascript en donde hay ejemplos
de ese tipo de comportamientos, o a buscar sobre funciones
javascript para mostrar u ocultar elementos.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: buscador, directorio, mysql, tablas
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 22:41.