Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con filtrado de productos en Jquery

Estas en el tema de Problema con filtrado de productos en Jquery en el foro de PHP en Foros del Web. Buenas, tengo un catalogo de productos que hice con un while para mostrar todos los productos que tengo en la db, la cosa es que ...
  #1 (permalink)  
Antiguo 24/10/2016, 04:36
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 10 años, 4 meses
Puntos: 2
Problema con filtrado de productos en Jquery

Buenas, tengo un catalogo de productos que hice con un while para mostrar todos los productos que tengo en la db, la cosa es que la plantilla que uso trae unos <select> que me gustaría aprovechar para filtrar los productos, la cosa es. Buscando hice algo que medio quedo funcionando, pero al presionar cualquiera de las dos opciones en el option, solo queda el que tiene class=1.

Lo que hice fue con la misma data del while poner:

<div class="<?php echo $r["moneda"], ?>">

Entonces en el select si yo elijo la opcion Dolares tiene un value=1 por lo que si el campo 'moneda' de ese producto es 1 deberia quedar y los que sean 2 desaparecer. La cosa es que asi yo elija la opcion del value=1 o la del value=2 siempre aparece a cualquier cosa. No se a que se puede deber eso les dejo mi codigo

Mostrar productos:

Código PHP:
<?php  

while ($r $query->fetch_array()) { ?>
    <div id="productos">
        <div class="<?php echo $r["moneda"]; ?>">
            <div class="inventory margin-bottom-20 clearfix scroll_effect fadeIn">
                <input type="checkbox" name="a" class="checkbox compare_vehicle input-checkbox" id="vehicle_1"/>
                <label for="vehicle_1"></label>
                <a class="inventory" href="inventory-listing.html">
                    <div class="title"><?php echo $r["nombre"]; ?></div>
                    <img src="../images/productos/<?php echo $r["img"]; ?>" class="preview" alt="preview">
                    <table class="options-primary">
                        <tr>
                            <td class="option primary">Body Style:</td>
                            <td class="spec">Sport Utility Vehicle</td>
                        </tr>
                        <tr>
                            <td class="option primary">Drivetrain:</td>
                            <td class="spec">4WD</td>
                        </tr>
                        <tr>
                            <td class="option primary">Engine:</td>
                            <td class="spec">4.8L V8</td>
                        </tr>
                        <tr>
                            <td class="option primary">Transmission:</td>
                            <td class="spec">8-Speed Tiptronic</td>
                        </tr>
                        <tr>
                            <td class="option primary">Mileage:</td>
                            <td class="spec">19,585</td>
                        </tr>
                    </table>
                    <table class="options-secondary">
                        <tr>
                            <td class="option secondary">Exterior Color:</td>
                            <td class="spec">Dark Blue Metallic</td>
                        </tr>
                        <tr>
                            <td class="option secondary">Interior Color:</td>
                            <td class="spec">Black / Titanium Blue</td>
                        </tr>
                        <tr>
                            <td class="option secondary">MPG:</td>
                            <td class="spec">15 city / 21 hwy</td>
                        </tr>
                        <tr>
                            <td class="option secondary">Stock Number:</td>
                            <td class="spec">590497</td>
                        </tr>
                        <tr>
                            <td class="option secondary">VIN Number:</td>
                            <td class="spec">WP1AD29P09LA65818</td>
                        </tr>
                    </table>
                    <img src="http://demo.themesuite.com/automotive/images/carfax.png" alt="carfax" class="carfax"/>
                    <div class="price"><b>Precio:</b><br>
                        <div class="figure"><?php if ($r["moneda"] == 1) {
                                echo 
"$ " $r["precio"];
                            } elseif (
$r["moneda"] == 2) {
                                echo 
"Cr " $r["precio"];
                            } 
?><br>
                        </div>
                    </div>
                    <div class="view-details gradient_button"><i class='fa fa-plus-circle'></i> Ver Detalles</div>
                    <div class="clearfix"></div>
                </a>
                <div class="view-video gradient_button" data-youtube-id="3oh7PBc33dk"><i class="fa fa-video-camera"></i>
                    Ver Video
                </div>
            </div>
        </div>
    </div>
<?php ?>
Jquery que use:

Código HTML:
$(function(){
    var $tabla = $('#productos');

    $('#filtro_moneda').change(function(){
        var value = $(this).val();
        if (value){
            $('div.' + value, $tabla).show();
            $('div:not(.' + value + ')', $tabla).hide();
        }
        else{
            // Se ha seleccionado All
            $('div', $tabla).show();
        }
    });
})
Y aqui les dejo el <option>
Código HTML:
<select name="price" class="css-dropdowns" tabindex="1" id="filtro_moneda">
    <option value="">Metodo de Pago</option>
    <option value="1">Dolares</option>
    <option value="2">Créditos</option>
</select> 
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]
  #2 (permalink)  
Antiguo 24/10/2016, 07:51
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 6 meses
Puntos: 127
Respuesta: Problema con filtrado de productos en Jquery

te falta un hide... (esconder todo al principio)

debes ocultar todo con jquery y en html las clases no pueden ser solo numericas

Código PHP:
<?php  

while ($r $query->fetch_array()) { ?>
    <div id="productos">
        <div class="filtro f_<?php echo $r["moneda"]; ?>">
            <div class="inventory margin-bottom-20 clearfix scroll_effect fadeIn">
                <input type="checkbox" name="a" class="checkbox compare_vehicle input-checkbox" id="vehicle_1"/>
                <label for="vehicle_1"></label>
                <a class="inventory" href="inventory-listing.html">
                    <div class="title"><?php echo $r["nombre"]; ?></div>
                    <img src="http://www.forosdelweb.com/f18/images/productos/<?php echo $r["img"]; ?>" class="preview" alt="preview">
                    <table class="options-primary">
                        <tr>
                            <td class="option primary">Body Style:</td>
                            <td class="spec">Sport Utility Vehicle</td>
                        </tr>
                        <tr>
                            <td class="option primary">Drivetrain:</td>
                            <td class="spec">4WD</td>
                        </tr>
                        <tr>
                            <td class="option primary">Engine:</td>
                            <td class="spec">4.8L V8</td>
                        </tr>
                        <tr>
                            <td class="option primary">Transmission:</td>
                            <td class="spec">8-Speed Tiptronic</td>
                        </tr>
                        <tr>
                            <td class="option primary">Mileage:</td>
                            <td class="spec">19,585</td>
                        </tr>
                    </table>
                    <table class="options-secondary">
                        <tr>
                            <td class="option secondary">Exterior Color:</td>
                            <td class="spec">Dark Blue Metallic</td>
                        </tr>
                        <tr>
                            <td class="option secondary">Interior Color:</td>
                            <td class="spec">Black / Titanium Blue</td>
                        </tr>
                        <tr>
                            <td class="option secondary">MPG:</td>
                            <td class="spec">15 city / 21 hwy</td>
                        </tr>
                        <tr>
                            <td class="option secondary">Stock Number:</td>
                            <td class="spec">590497</td>
                        </tr>
                        <tr>
                            <td class="option secondary">VIN Number:</td>
                            <td class="spec">WP1AD29P09LA65818</td>
                        </tr>
                    </table>
                    <img src="http://demo.themesuite.com/automotive/images/carfax.png" alt="carfax" class="carfax"/>
                    <div class="price"><b>Precio:</b><br>
                        <div class="figure"><?php if ($r["moneda"] == 1) {
                                echo 
"$ " $r["precio"];
                            } elseif (
$r["moneda"] == 2) {
                                echo 
"Cr " $r["precio"];
                            } 
?><br>
                        </div>
                    </div>
                    <div class="view-details gradient_button"><i class='fa fa-plus-circle'></i> Ver Detalles</div>
                    <div class="clearfix"></div>
                </a>
                <div class="view-video gradient_button" data-youtube-id="3oh7PBc33dk"><i class="fa fa-video-camera"></i>
                    Ver Video
                </div>
            </div>
        </div>
    </div>
<?php ?>
Código Javascript:
Ver original
  1. $(function(){
  2.     $('#filtro_moneda').change(function(){
  3.         var value = $(this).val();
  4.         if (value){
  5.             $(".filtro").hide();
  6.             $(".f_"+value).show();
  7.         }
  8.         else{
  9.             // Se ha seleccionado All
  10.             $(".filtro").show();
  11.         }
  12.     });
  13. })


usa las clases para ocultar y mostrar y recuerda que en html puedes usar mas de una sola clase.
  #3 (permalink)  
Antiguo 24/10/2016, 18:14
 
Fecha de Ingreso: julio-2014
Ubicación: Montevideo
Mensajes: 78
Antigüedad: 10 años, 4 meses
Puntos: 2
Respuesta: Problema con filtrado de productos en Jquery

Muchas gracias amigo, quedo andando perfecto. Gracias por colaborar, saludos / regrads.
__________________
¿Necesitas Hosting Web? - [JSFIDDLE="www.intechservers.com/hosting"]Intech Servers Hosting[/JSFIDDLE]
¿Necesitas Sitio Web? - [JSFIDDLE="www.intechservers.com/web"]Intech Servers Web[/JSFIDDLE]

Etiquetas: html, jquery, productos, select, tabla
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 14:44.