Remove character to search the database

0

I'm having problems creating a function to search the database and from zip fill in the fields related to it, such as address, neighborhood, city and state.

Obs : I have a mask in the zip

function.php

<?php include("conn.php");

  /* Inicio da função para retornar campos a partir do CEP  GLOBAL */

       function cep($cep, $conn){
          $result = "SELECT * FROM cadcep WHERE cep = '$b_cep' LIMIT 1";
          $resultado = $conn->query($result);

          if($resultado){

              $row = mysqli_fetch_assoc($resultado);
              $valores['tipo_logr'] = $row['tipo_logr'];
              $valores['nome_logr'] = $row['nome_logr'];
              $valores['bairro'] = $row['bairro'];
              $valores['cidade'] = $row['cidade'];
              $valores['estado'] = $row['estado'];


          } else {
              return json_encode(array( 'error' => mysqli_error($conn) ));        
          }

              return json_encode($valores);

      }


      if(isset($_GET['cep'])){
              echo cep($_GET['cep'], $conn);
      }
   /* Fim da função para retornar campos a partir do CEP GLOBAL */

?>

JS to search from zip code

$(document).ready(function(){
          $("#cep").on("change", function(){

               var $tipo_logr = $("select[name='tipo_logr']");
               var $nome_logr = $("input[name='nome_logr']"); 
               var $bairro = $("input[name='bairro']"); 
               var $cidade = $("input[name='cidade']"); 
               var $estado = $("input[name='uf']");

               $.getJSON('function_cep.php',{ 
                       cep: $( this ).val() 
               },function( json ){
                       $tipo_logr.val ( json.tipo_logr );
                       $nome_logr.val ( json.nome_logr );
                       $bairro.val ( json.bairro );
                       $cidade.val ( json.cidade );
                       $estado.val ( json.estado );

               });
       });
});   
    
asked by anonymous 07.12.2017 / 20:22

3 answers

1

Please note that I've created comments to help you understand the answer. I created an array so I did not have any problems in the return, and at the beginning of the function I used replace to remove character, you can use this for other situations, just use this way

function cep($cep, $conn){
   $chars = array(".","/","-","(", ")");
   $b_cep = str_replace($chars, "", $a_cep); 

Now complete code solving your problem

<?php include("conn.php");

/* Inicio da função para retornar campos a partir do CEP  GLOBAL */
    function cep($cep, $conn){
        /* Inicio removendo caracteres da mascara do campo cep para efetuar busca no banco de dados */
        $a_cep = str_replace(".", "", $cep);
        $b_cep = str_replace("-", "", $a_cep);
        /* Fim Removendo caracteres da mascara do campo cep para efetuar busca no banco de dados */
        $result = "SELECT * FROM cadcep WHERE cep = '$b_cep' LIMIT 1";

        $resultado = $conn->query($result);

        // DECLARA A VARIAVEL
        $valores = array();

        if($resultado){

            $row = mysqli_fetch_assoc($resultado);
            $valores['tipo_logr'] = $row['tipo_logr'];
            $valores['nome_logr'] = $row['nome_logr'];
            $valores['bairro'] = $row['bairro'];
            $valores['cidade'] = $row['cidade'];
            $valores['estado'] = $row['estado'];


        } else {
            return json_encode(array( 'error' => mysqli_error($conn) ));        
        }

            return json_encode($valores);

    }


    if(isset($_GET['cep'])){
            echo cep($_GET['cep'], $conn);
    }
/* Fim da função para retornar campos a partir do CEP GLOBAL */

?>
    
07.12.2017 / 20:26
0

Try this:

$.getJSON('function_cep.php?cep=' + $(this).val(), function(data) {
    console.log(data);
});
    
07.12.2017 / 20:28
0

Create a method that returns you only digits with Regex for better readability, say to create a method because you may need it elsewhere, add in a Helper class or any other you store your help methods :

function apenasDigitos($value)
{
    return preg_replace('/[^0-9]/','',$value);
}

So before sending the zip field to the database call this method. in its $b_cep variable, thus:

$b_cep = apenasDigitos($b_cep);

Your variable will now have nothing but numbers so you can go ahead and query the database.

    
07.12.2017 / 20:42