Estoy filtrando los datos

  • Autor Autor xcodex
  • Fecha de inicio Fecha de inicio
X

xcodex

Hey!

Les cuento como estoy haciendo un filtrado de articulos y luego cual es el problema:

El menú es así:
HTML:
            <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
                <!-- Rubros -->
                <span class="seccion-ofertas d-block p-1"> <i class="fas fa-user-md"></i> Filtrar: </i></a></span>
                    <div class="control-group">
                        <label class="control control-radio">
                        Art 1
                            <input type="radio" name="rubro" value="articulo1"/>
                            <div class="control_indicator"></div>
                        </label>

                        <label class="control control-radio">
                        Art 2
                            <input type="radio" name="rubro" value="articulo2"/>
                            <div class="control_indicator"></div>
                        </label>

                        <label class="control control-radio">
                        Art 3
                            <input type="radio" name="rubro" value="articulo3"/>
                            <div class="control_indicator"></div>
                        </label>
                    </select>
                    </div>
                    <hr>
                    <button type="submit" name="aplicarfiltros" class="btn btn-success btn-sm btn-block">Aplicar filtros</button>
                    <button type="reset" name="borrarfiltros" class="btn btn-light btn-sm btn-block">Borrar filtros</button>                
            </form>

Como vieron, en el action dice: PHP_SELF, por lo que al comienzo del archivo dice:
PHP:
    if (isset($_POST['aplicarfiltros'])) {
        if ($_POST['rubro']) {
            $rubro_consulta = $_POST['rubro'];
        } else {
            $rubro_consulta = null;
        }
    }

Y luego se hace un llamado a la BD para finalmente mostrar los artículos utilizando un foreach:
PHP:
include "conectarbd.php";
 if ($rubro_consulta == null) {
        $sql_articulos = "SELECT * FROM articulos WHERE publicado = 'si'";
        $sentencia_articulos = $pdo->prepare($sql_articulos);
        $sentencia_articulos->execute();
        $resultado_articulos = $sentencia_articulos->fetchAll();
    } else {
        $sql_articulos = "SELECT * FROM articulos WHERE publicado = 'si' AND rubro = :rubro";
        $sentencia_articulos = $pdo->prepare($sql_articulos);
        $sentencia_articulos->bindParam(':rubro', $rubro_consulta, PDO::PARAM_STR);
        $sentencia_articulos->execute();
        $resultado_articulos = $sentencia_articulos->fetchAll();
    }

HTML:
            <?php foreach($resultado_articulos as $articulo):?>            
                <div class="row">
                    <div class="col">
                        <span class="d-inline"><?php echo $oferta ['titulo']?></span> - <span class="d-inline"><?php echo $oferta ['ciudad']?></span>

                        <p>
                            <?php echo $oferta ['descripcion']?></span>
                        </p>
                            
                            
                    </div>
                </div>
            <?php endforeach ?>

El problema: NO FUNCIONA!.
Los artículos se muestran, pero NO cuando se filtran. :-(

PD: Valoren que ahora cuando pregunto ya coloco todo el código 😛
 
Última edición por un moderador:
Hola

Yo diria que tu error esta en

$sentencia_articulos->bindParam(':rubro', $rubro_consulta, PDO:😛ARAM_STR);

Diria que pusieras algún valor fijo y vieras que es lo que estas enviando en $rubro_consulta

La verdad casi no uso PDO me voy más por Mysqli, pero prueba a hacer eso que menciono.

Ademas mira que esta llegando en $_POST['rubro'] algunas veces no llega lo que esperamos.

Saludos
 
Hola

Yo diria que tu error esta en

$sentencia_articulos->bindParam(':rubro', $rubro_consulta, PDO:😛ARAM_STR);

Diria que pusieras algún valor fijo y vieras que es lo que estas enviando en $rubro_consulta

La verdad casi no uso PDO me voy más por Mysqli, pero prueba a hacer eso que menciono.

Ademas mira que esta llegando en $_POST['rubro'] algunas veces no llega lo que esperamos.

Saludos

¿Valor fijo?, lo que recibe es un texto (las opciones que seleccione el usuario).

- - - Actualizado - - -

Ya lo pude solucionar. Tenía errores de lógica en otra parte del código.
Cierren topic. :-D
 
Atrás
Arriba