Filtrar resultados con select

578 views
Skip to first unread message

Nicolas Ezequiel Almonacid

unread,
Aug 11, 2014, 11:25:32 AM8/11/14
to programa...@googlegroups.com
hola estimados, esperando que tengan un buen dia, y no ser inoportuno y abusar de su ayuda  con mis preguntas, queria consultarles, con su ayuda logre hacer que mi buscador trabajae, o sea, ingreso un criterio y me filtra bien, o sea funciona, ahora, aparte del buscador necesito ahcer un filtro mas, en este caso, desde un combobox, el cmbobox lo tengo cargado con las categorias desde la bd, selecciono un item del select o combobox, y que me muestre lo relacionado a esto (en este caso es un filtro por categorias), investigue y lei que con ajax se pued ehacer, pero no estoy con tiempo de implementarlo, y las rutinas ajax que tngo no me funcionan tampoco, opte por colocar un boton al lado del combobox y que al hacer click se filtre, pero no esta trabajando, creo que se por donde va el error:

logicamente, al seleccionar el select, deberia traerme la categoria, y al pinchar el boton, esa categoria seleccionada se pase al script que hace el flitro (la consulta sql)

mi codigo hasta ahora:
Funcion que tengo para hacer el filtro
function filtroCategorias(){
               
//esta variable es la que deberia capurar desde el boton del formulario              
$cat
=  htmlspecialchars($_POST['cat_aviso']);
               
               $query
="SELECT * FROM avisos WHERE categoria_aviso = ?";
               
               
//preparamos la consulta
               $stmt
=$this->con->prepare($query);
               
               
//Bindamos el parametro
               $stmt
->bindParam(1,$cat);
               
               
//Ejecutamos la consulta
               $stmt
->execute();
               
               
if (!$stmt->rowCount() == 0) { //!= 0
           
               
           
while ($row=$stmt->fetch()){
               $this
->datos[]=$row;
           
}
           
//Retornamos los Valores
           
return $this->datos;
           
}
 
           
}//Funcion Filtro Categorias              
     
y la pagina donde est el select (y que tiene el buscador:)
//Muestro todos los Datos en la pagina
if(isset($_POST['buscar'])){

   
if(empty($_POST['buscar'])){
        echo
"No se Ingreso ningun Parametro de Busqueda";
   
}else{
   
//Invoco a la funcion buscar
   $avisos
=$aviso->buscarAviso();
   
   
//Muestro el lotal de avisos que coinciden con la busqueda
   $totalavisos
=count($avisos);
   
   
}
} else{
   
//cargo por defecto los avisos
    $avisos
=$aviso->listadoAvisos();
   
   
//Lleno el Combobox desde la Base de Datos
    $av
=$aviso->cargarCombo();
   
   
//Cuento el total de avisos que hay en la base de Datos
    $totalavisos
=count($avisos);
   
}

?>

<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
<head>
   
<meta charset="utf-8">
   
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
   
<title>Plataforma de Avisos Gratuitos.- ChiloeAvisos</title>
    <!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
        <link rel="stylesheet" href="css/
normalize.min.css">
        <link rel="
stylesheet" href="css/bootstrap.css">
        <link rel="
stylesheet" href="css/main.css">
        <script src="
js/vendor/modernizr-2.6.2.min.js"></script>
       
        <!--Filtrar segun Item Combobox-->
        <script>
            $(document).ready(function(){
                $("
#cat").change(function(){

                   
// get the selected user's id
                   
var categoria_aviso = $(this).find(":selected").val();

                   
// load it in the userInfo div above
                    $
('.row').load('avisos.php?categoria_aviso=' + categoria_aviso);

               
});
           
});
       
</script>
     
</
head>

<body>
<!--Contenedor Principal-->
<div class="container">

   
<div class="row">
       
<h3 class="text-center">Avisos Publicados</h3>
        <p class="text-right alert-info">Tenemos <strong><?php echo $totalavisos; ?> </
strong> avisos publicados
         en nuestra
Base de Datos</p>
    </
div>
   
   
<!--Busqueda y Filtros-->
   
<div class="row">
       
<section class="col-lg-12 buscadorAvisos">
           
<form method="POST" id="search" class="form-inline" action="">
               
<div class="form-group">
               
<label for="buscador">Titulo del Aviso:</label>
               
<input type="text" name="buscador" class="form-control"/>
               
<input type="submit" class="btn btn-default" name="buscar" value="Buscar"/>
               
</div>
                <div class="form-group">
                <label for="categorias">Mostrar Avisos de:</
label>
               
<select name="categorias" class="form-control" id="cat" >
                 
                   
<?php foreach($av as $row) : ?>
                   
<option value="<?php echo $row['id_categoria']; ?>"><?php echo $row['categoria']; ?></option>
               
<?php endforeach ?>

               
</select>
                <input type="submit" class="btn btn-default" name="cat_aviso" value="Filtrar"/
>
               
</div>
            </
form>
       
</section>
       
       <!--<section class="col-lg-8">
        Filtros de Busqueda
        </
section>-->
       
   
</div><!--Fin Busqueda y Filtros-->
   
    <!--Presentación de Avisos-->
    <div class="row">
       
        <!--Avisos-->
        <?php foreach($avisos as $row)
            {
                echo "<article class='col-lg-12 listadoAvisos'>";
       
        echo "<div class='col-lg-5 imagenListaAviso'>";
                    if($row['img1']==NULL){
            echo "<img src='img/
noimage.jpg'  class='img-rounded' />";
            }else{
                                echo "<img src=".$row['
img1']." height='200px' width='350px' />";}
        echo "</div>";
       
                //contenido
               echo "<div class='
col-lg-6 text-left contenidoListaAviso'>";
                   
        //Titulo del Aviso
        echo "<h3 class='
text-center'>".$row['titulo_aviso']."</h3>";
        //Parrafo parte Aviso
        echo "<p class='
text-justify'>".$row['aviso_completo']."</p>";
        //Fecha de Publicación
        echo "<p class='
text-justify'>".$row['fecha_publicacion']."</p>";
        //Categoria
        echo "<p class='
text-justify'>".$row['categoria_aviso']."</p>";
        //Boton Leer Aviso Completo
        echo "<a class='
text-center btn btn-info' href='detalleaviso.php?cod_aviso=".$row['cod_aviso']."'>Ver Aviso</a>";
                   
                echo "</div>";
                                                 
                echo "</article>";
       
                }?>
       
                </div>
               
               
        </div>
               
                <!--aca muestro el listado de avisos-->
   
    </div><!--Fin Presentación de Avisos-->
   
    <!--Paginacion de Resultados-->
    <div class="text-center paginas">
        paginacion
        <a href="?pos=<?php echo $inicio-$cantAvisos; ?>">Anterior</a>
        <a href="?pos=<?php echo $inicio+$cantAvisos; ?>">Siguiente</a>
       
       
    </div> <!--Fin Paginacion de Resultados-->

</div><!--Fin Div Contenedor Principal-->
</body>
</html>

Muchisimas gracias nuevamente por su tiempo y  sus comentarios y ayuda...

Jonathan Morales Salazar

unread,
Aug 11, 2014, 11:33:47 AM8/11/14
to programa...@googlegroups.com


--
--
Publicar: programa...@googlegroups.com
Anular suscripción: programando-an...@googlegroups.com
Webs: http://www.blonder413.com/ - http://www.cesarcancino.com/ - http://www.oscar-gomez.net/ - http://www.keyphercom.com/blog/

---
Has recibido este mensaje porque estás suscrito al grupo "Programando Ando" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a programando-an...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--


Jonathan Morales Salazar
Ingeniero de Sistemas
www.blonder413.com

Nicolas Ezequiel Almonacid

unread,
Aug 11, 2014, 7:04:10 PM8/11/14
to programa...@googlegroups.com
gracias maestro, revisare los ejemplos a ver si puedo adaptar a lo que necesito....
Reply all
Reply to author
Forward
0 new messages