I was able to search 1 more query in the database with PHP

Asked

Viewed 45 times

-1

I’m trying to do a search in my code, searching other fields, for example, looking for people who were registered with the mother’s name " so-and-so", but I’m not getting a logic... I can only search 1 field, which is the name.

 <?php
            if(isset($_POST['nome'])) {
            $pesquisar = $_POST['nome'] ;
           
            $result_msg_contatos = "SELECT * FROM cadastro WHERE nome LIKE '%$pesquisar%' LIMIT 30";

            $resultado_msg_contatos = mysqli_query($conn , $result_msg_contatos);
   
            
         } else {
            //Verificar se esta sendo passado na URL a página atual, senão é atribuido a pagina
            $pagina=(isset($_GET['pagina'])) ? $_GET['pagina'] : 1;
            
            //Selecionar todos os itens da tabela 
            $result_msg_contato = "SELECT * FROM cadastro";
            $resultado_msg_contato = mysqli_query($conn , $result_msg_contato);
            
            //Contar o total de itens
            $total_msg_contatos = mysqli_num_rows($resultado_msg_contato);
            
            //Seta a quantidade de itens por página
            $quantidade_pg = 20;
            
            //calcular o número de páginas 
            $num_pagina = ceil($total_msg_contatos/$quantidade_pg);
            
            //calcular o inicio da visualizao   
            $inicio = ($quantidade_pg*$pagina)-$quantidade_pg;
            
            //Selecionar  os itens da página
            $result_msg_contatos = "SELECT * FROM cadastro limit $inicio, $quantidade_pg";
            $resultado_msg_contatos = mysqli_query($conn , $result_msg_contatos);
            $total_msg_contatos = mysqli_num_rows($resultado_msg_contatos);
         }



<form method="POST" action="gerar_planilha_especifica.php">
            <div class="row espaco">
               <div class="pull-right">                 
                  <a href="../../index.php"><button type='button' class='btn btn-sm btn-success'>Cadastrar</button></a>
                  <a href="gerar_planilha.php"><button type='button' class='btn btn-sm btn-danger'>Gerar Excel</button></a>
                  <input type="submit" value="Excel Especifico" class='btn btn-sm btn-warning'>
               </div>
            </div>
            <div class="row">
               <div class="col-md-12">
                  <table class="table">
                     <thead>
                        <tr>
                           <th class="text-center">Id</th>
                           <th class="text-center">Nome </th>
                           <th class="text-center">Nome da mãe</th>
                           <th class="text-center">Nome do Pai</th>
                           <th class="text-center">cpf</th>
                           <th class="text-center">rg</th>
                           <th class="text-center">email</th>
                           <th class="text-center">Data Nasc</th>
                           <th class="text-center">telefone</th>
                           <th class="text-center">Whatsapp</th>
                           <th class="text-center">rua</th>
                           <th class="text-center">numero</th>
                           <th class="text-center">bairro</th>
                           <th class="text-center">cidade</th>
                           <th class="text-center">estado</th>
                           <th class="text-center">indicacao</th>
                           <th class="text-center">cep</th>
                        </tr>
                     </thead>
                     <tbody>
                        <?php while($row_msg_contatos = mysqli_fetch_assoc($resultado_msg_contatos)){?>
                        <tr>
                           <?php $id = $row_msg_contatos["id"]; ?>
                           <td class="text-center">
                              <?php echo "<input type='radio' name='msg_contato[$id]' value='1'" ?>
                           <td class="text-center"><?php echo $row_msg_contatos["id"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["nome"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["mae"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["pai"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["cpf"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["rg"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["email"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["dtnasc"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["telefone"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["zap"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["rua"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["numero"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["bairro"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["cidade"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["estado"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["indicacao"]; ?></td>
                           <td class="text-center"><?php echo $row_msg_contatos["cep"]; ?></td>
                           <td class="text-center"> 
                              <?php echo
                                 "<a href='proc_apagar_usuario.php?id=" . $row_msg_contatos['id'] . "'>Apagar</a><br><hr>";
                                 ?>
                        </tr>
                        <?php } ?>
                     </tbody>
                  </table>
               </div>
            </div>
      </form>

I did this after the reply of @Ademir-Mazer-Jr-Nuno, and I still could not filter :/

<?php
$sql = "SELECT * FROM cadastro";
$where = "";

if(isset($_POST['nome'])) {
     $pesquisar = $_POST['nome'] ;
        
     $where .= " nome LIKE '%$pesquisar%'";
}

if(isset($_POST['mae'])) {
     $pesquisar = $_POST['mae'] ;           

     // esta linha testa se a variável where já tem conteúdo, se sim adiciona o 
     // AND caso não inicia ela vazia
     $where = isempty($where) ? "" : $where . " AND ";
     $sql .= " mae LIKE '%$pesquisar%'";
}

if(isset($_POST['cidade'])) {
     $pesquisar = $_POST['cidade'] ;           

     // esta linha testa se a variável where já tem conteúdo, se sim adiciona o 
     // AND caso não inicia ela vazia
     $where = isempty($where) ? "" : $where . " AND ";
     $sql .= " cidade LIKE '%$pesquisar%'";




    // finaliza a construção da query, se where for vazio somente limita o resultado
   // caso contrário adiciona a cláusula
   $sql .= empty($where) ? "" : " WHERE " . $where;
   $sql .= " LIMIT 30 ";
     
}else{

//Verificar se esta sendo passado na URL a página atual, senão é atribuido a pagina
$pagina=(isset($_GET['pagina'])) ? $_GET['pagina'] : 1;
                
//Selecionar todos os itens da tabela 
$result_msg_contato = "SELECT * FROM cadastro";
$resultado_msg_contatos = mysqli_query($conn , $result_msg_contato);

//Contar o total de itens
$total_msg_contatos = mysqli_num_rows($resultado_msg_contatos);

//Seta a quantidade de itens por página
$quantidade_pg = 20;

//calcular o número de páginas 
$num_pagina = ceil($total_msg_contatos/$quantidade_pg);

//calcular o inicio da visualizao   
$inicio = ($quantidade_pg*$pagina)-$quantidade_pg;

//Selecionar  os itens da página
$result_msg_contatos = "SELECT * FROM cadastro limit $inicio, $quantidade_pg";
$resultado_msg_contatos = mysqli_query($conn , $result_msg_contatos);
$total_msg_contatos = mysqli_num_rows($resultado_msg_contatos);

       }
          
                    ?>
  • Your Else logic leads you to always enter it if you don’t have a city in the parameter. You understand how If Else works ???

1 answer

-1

You are testing if there is a post parameter for name, if it exists, it only mounts the query for this field. If it does not exist you assemble what seems to me a copmplet return to all paginated records of the table.

A possible solution would be to build the query base, and then test each of the possible parameters as filters and concatenate in the query.

In the following example I am considering only 3 parameters and changing only the PHP part posed in the question related to filtering with criteria, so that you understand the logic of the solution and complement in its context, also note that I don’t know your database so field names are suggestions.

   $sql = "SELECT * FROM cadastro";
   $where = "";

   if(isset($_POST['nome'])) {
        $pesquisar = $_POST['nome'] ;
           
        $where .= "nome LIKE '%$pesquisar%'";
   }

   if(isset($_POST['nome_mae'])) {
        $pesquisar = $_POST['nome_mae'] ;           

        // esta linha testa se a variável where já tem conteúdo, se sim adiciona o 
        // AND caso não inicia ela vazia
        $where = empty($where) ? "" : $where . " AND ";
        $sql .= "nome_mae LIKE '%$pesquisar%'";
   }

   if(isset($_POST['cidade'])) {
        $pesquisar = $_POST['cidade'] ;           

        // esta linha testa se a variável where já tem conteúdo, se sim adiciona o 
        // AND caso não inicia ela vazia
        $where = empty($where) ? "" : $where . " AND ";
        $sql .= "cidade LIKE '%$pesquisar%'";
   }

   // finaliza a construção da query, se where for vazio somente limita o resultado
   // caso contrário adiciona a cláusula
  $sql .= empty($where) ? "" : " WHERE " . $where;
  $sql .= " LIMIT 30";


   $resultado_msg_contatos = mysqli_query($conn , $result_msg_contatos);
   

If you don’t know the ternary operator I used in the variable tests $where take a look at the documentation.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.