Ir para conteúdo
Andrelirasp

Filtrar por categoria + input

Recommended Posts

Tenho uma página onde dados de um banco são exibidos em uma table, eu gostaria de criar um filtro que o usuário seleciona a categoria (via select) e depois há uma opção para ele escrever e buscar algo dentro daquela categoria(a categoria vai de acordo com as colunas) e aparecer os dados na tabela. Por onde começo?


 

<div class="op">
                <select name="opcao_filtro" class="form-control" style="width:150px; height:30px;">
                    <option value="nulo">---</option>                
                    <option value="titulo">Título</option>
                    <option value="autor">Autor</option>
                    <option value="tema">Tema</option>
                    <option value="editora">Editora</option>
                    <option value="indice">Índice</option>
                </select>
 </div>



<input type="search" class="form-control" name="busca" id="busca" placeholder="Busca" style="width:200px; float:left;" autocomplete="off">    
            <input type="submit" value="Procurar" class="btn btn-default btn-info" style="float:right;"> 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - A função get_categories() retornar as categorias para popular o select;

2 - Coloca o ID no value de cada option e com ele faz um onChange (javascript) para passar o id para outra pagina, ou como preferir.;

3 - Resgata esse id e coloca na função wp_query() através do uso de metas (veja aqui: https://code.tutsplus.com/pt/tutorials/wp_query-arguments-categories-and-tags--cms-23070)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu consegui fazer um código aqui, só que ele não executa  a página fica em branco:

<?php

  include_once 'init.php';

  $PDO = db_connect();

  $opcao_filtro = $_POST['opcao_filtro']; // Pego a opção selecionada de um select
  $busca = $_POST['busca']; // input text
  
  $sql = 'SELECT * FROM tablet AS t WHERE';

  //idlivro, titulo, tipo, e cor.
  switch($opcao_filtro)
  {
      case 'titulo': {
          $sql .= ' t.titulo=?';
          break;
      }
      case 'autor': {
          $sql .= ' t.autor=?';
          break;
      }
      case 'tema': {
          $sql .= ' t.tema=?';
          break;
      }
      case 'editora': {
          $sql .= ' t.editora=?';
          break;
      }
  }

  $stmt = $PDO->prepare($sql);
  $stmt->execute([$busca]);
  $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
  $result = array_unique($rows);

        foreach($rows as $row)
        {
            echo $row['titulo'];
            echo $row['autor'];
            echo $row['tema'];
            echo $row['editora'];
        }

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por fellipe.arakaki
      Boa tarde, sou novo no php e estou tentando listar os produtos do banco na pagina web que fiz, porém eu ja tentei listar os dados colocando a table dentro da tag <?php> e fora da tag php, e nenhum dos dois jeitos exibe os dados, eu tambem testei a query e quando dei echo no array ele esta imprimindo todos os valores os dados das tabelas bo banco porem nao mostra na tabela, alguem poderia me ajudar com esse problema? Nos dois casos as colunas são exibidas mas os dados não.
      Segue anexo o código da pagina e da query que eu criei:
       
       




    • Por Adriano Weverton
      Necessito de ajuda em relação a como gerar um pdf pegando imagens do banco de dados utilizando a biblioteca fpdf e se for possível colocar um limite de resolução padrão.
    • Por andersonx
      Galera, estou desenvolvendo um sistema, e estou mexendo agora, na parte de recuperação de senha, segui um tutorial que achei bem interessante, no YT, fiz tudo que o cara fez, mas esta aparecendo um erro , na hora de enviar o email, usando um sistema de hospedagem externo, 
       
      Código para recuperação: 
       
      <head>
        <?php 
                date_default_timezone_get("America/Ponta_Pora");
              include "../includes/inc_head.php"; 
              include "../../helpers/conexao.php";  
            
              if(isset($_POST['acao']) && $_POST['']=='recuperar'):
                  $email = strip_tags(filter_input(INPUT_POST,'emailrecupera',FILTER_SANITIZE_STRING));
                  $verificar = mysqli_query($conexao,"SELECT email FROM educadores  WHERE email='$email'");
                  if(mysqli_num_rows($verificar==1)){
                      
                  $codigo = base64_encode($email);
                  $data_expirar= date('Y-m-d H:i:s', strtotime('+ 1 day'));
                  
                  $mensagem='<p>Recebemos uma tentativa de redefiniçao de senha  para esse email, causo não foi voce que enviou,'
                          . ' desconsidere esse email, caso  contrário clique no link abaixo <br /> '
                          . '<a href="nomedosite/recuperar_senha.php?codigo='. $codigo.'  ">Recuperar Senha </a>    </p>';
                  $email_remetente='andersonshipuden@gmail.com';
                  
                  
                  
                          $headers = "MINE-Version: 1.1\n";
                          $headers .= "Content-type: text/html; charset-iso-8859-1\n";
                          $headers .= "From: $email_remetente\n";
                          $headers .= "Return-Path: $email_remetente\n";
                          $headers .= "Reply-To: $email\n";
                          $inserir= mysqli_query($conexao,"INSERT INTO codigos  SET codigo='$codigo', data='$data_expirar'");
                         if($inserir){
                           if (mail("$email", "Assunto", "$mensagem", $headers, "-f$email_remetente")){
                            echo 'Enviamos um email com um link para a recuperaçao de senha para o endereço de e-mail, que enviou';
                            
                        
                             
                         }                    
                       }
                  
                  }
                  
                
                 
               
                  
                  endif;
              
         /*$headers = "MINE-Version: 1.1\n";
         $headers .= "Content-type: text/plain; charset-iso-8859-1\n";
         $headers .= "From: $email_remetente\n";
         $headers .= "Return-Path: $email_remetente\n";
         $headers .= "Reply-To: $email_usuario\n";
         mail("$email_usuario", "Assunto", "$mensagem", $headers, "-f$email_remetente");
         
              */
              
              ?>
         
             
             
              
              
              
             
      </head>
      <body  >
        <div class="container-fluid">
                  <?php include "../includes/inc_nav.php"; ?>
              </div>
          
         
          
          <div class="form-horizontal" id="img" >
            <div class="row">
                  
                   
                     
                       
                       <center>    <h4 id="tit"><strong>Recuperar Senha</strong></h4> </center>
                     
                       <form id="f"  class="form-horizontal" method="POST" enctype="multipart/form-data">
                    
                           
                          <img src="../img/logo.png" id="fff">
                         <br>
                         <br>
                         <br>
                          <br>
                           <br>
                         <br>
                         <center>    <h6 id="recs"><strong>Para recuperar sua  Senha inseira o seu Email Cadastrado!</strong></h6> </center>
                         <br>
               
                         
                        <div class="control-group">
                          <label class="control-label">Email:</label>
                          <div class="controls glyphicon glyphicon-envelope" >
                              <input type="text" name="emailrecupera" value="" class="form-control"  placeholder="Email" required>
                              <input type="hidden" name="acao" value="recuperar" class="form-control" required>
                               
                          </div>
                        </div>
                     
                     
                        <div class="control-group">
                          <div class="controls">
                              <button type="submit"  value="recuperar Senha" id="submit" class="btn-success" >Enviar</button>
                          </div>
                            <br>
                            <div class="controls" >
                                      <button type="reset"  id="reset" class="btn-warning">Limpar Campos</button>
                          </div>
                          
                        </div>
                           <br>
                         <br>
                         <br>
                          <p class="aligncenter margintop500" id="registrar" >
                            Nao Possui uma  conta? <a href="registrar.php"  aria-hidden="true" >Registre-se</a>
                          </p>
                          
                      </form>
                    </div>  
          </div>
       
      ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
      Essa é a segunda tela, quando ele clicar no codigo enviado por email par aele
      <head>
       

        <?php 
               
              include "../includes/inc_head.php"; 
              include "../../helpers/conexao.php";        
              
               if(isset($_GET['codigo'])){
                   $codigo= $_GET['codigo'];
                   $email_codigo= base64_decode($codigo);
                   $selecionar = mysqli_query($conexao,"SELECT * FROM codigos WHERE codigo = '$codigo' AND  data > NOW()");
                   if(mysqli_num_rows($selecionar)>=1){
                       if(isset($_POST['acao']) && $_POST['acao']=='mudar'){
                           $nova_senha= $_POST['novasenha'];
                           $atualizar= mysqli_query($conexao,"UPDATE educadores SET senha ='$nova_senha' WHERE email='$email_codigo'");
                           if($atualizar){
                               $mudar= mysqli_query($conexao,"DELET FROM codigos WHERE codigo='$codigo'");
                                    
                               echo 'Sua senha foi modificada com sucesso';
                           }
                       }
             ?>
          
          <div class="row">
                  
                   
                     
                       
                       <center>    <h4 id="tit"><strong>Por Favor, insira a sua  nova senha:</strong></h4> </center>
                       <form id="f"  class="form-horizontal" method="POST" enctype="multipart/form-data">
                    
                           
                          <img src="../img/logo.png" id="fff">
                         <br>
                         <br>
                         <br>
                          <br>
                           <br>
                         <br>
                         <center>    <h6 id="recs"><strong>Para atualizar sua  Senha insira sua nova senha no campo abaixo!</strong></h6> </center>
                         <br>
               
                        <div class="control-group">
                          <label class="control-label">Nova Senha:</label>
                          <div class="controls glyphicon glyphicon-envelope" >
                              <input type="password" name="novasenha" value="" class="form-control"  placeholder="Nova Senha" required>
                              <input type="hidden" name="acao" value="mudar" class="form-control" required>
                               
                          </div>
                        </div>
                     
                     
                        <div class="control-group">
                          <div class="controls">
                              <button type="submit"  value="Mudar Senha" id="submit" class="btn-success" >Salvar Senha</button>
                          </div>
                            <br>
                            <div class="controls" >
                                      <button type="reset"  id="reset" class="btn-warning">Limpar Campos</button>
                          </div>
                          
                        </div>
                           <br>
                         <br>
                         <br>
                          
                      </form>
                    </div>  
          
          
          
          <?php 
                       
                   }else {
                       echo 'Desculpe mais esse link já expirou';
                       
                   }
                   
               }
                  
                ?>  
        
              
         Esta dando um erro, na seguinte linha :    if(mysqli_num_rows($verificar==1))
       
      esse erro: 
       
      Notice: Object of class mysqli_result could not be converted to int in /storage/ssd4/199/6565199/public_html/EducAtiv/view/home/recuperarSenha.php on line 14

      Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /storage/ssd4/199/6565199/public_html/EducAtiv/view/home/recuperarSenha.php on line 14
       
             
             
              
          
    • Por BryanSamuel
      Eu preciso somar a coluna SOMA onde a coluna A e a coluna B(ao outro registro, por exemplo A do registro 1 e A do registro 2 forem iguais) forem iguais, após isso dividir por 3 e em seguida inserir em outra tabela.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.