Problems performing database search (Filtering)

Asked

Viewed 36 times

0

I’m having a problem running a database search. I have 3 research fields, City, Neighborhood, and Product, I want the user can filter the 3 or just City/Product or City/Neighborhood, however works only City/Product , City or Product. Follow the code: I tried to change several times however when I fix one changes the other...

            <?php include('conexao.php');

        $verifica = 0;

        $produtos = $_GET['produto'];
        $cidades = $_GET['cidade'];
        $bairros = $_GET['bairro'];


        if(!empty($_GET['produto']) && !empty($_GET['cidade']) && !empty($_GET['bairro'])){
          $result_search = "SELECT * FROM produtos WHERE nome LIKE '%$produtos%' AND cidade LIKE '%$cidades%' AND bairro LIKE '%$bairros%'";
          $resultado_search = mysqli_query($con, $result_search);
          $verifica = mysqli_num_rows($resultado_search);
        }elseif (!empty($_GET['produto'])) {
          $result_search = "SELECT * FROM produtos WHERE nome LIKE '%$produtos%'";
          $resultado_search = mysqli_query($con, $result_search);
          $verifica = mysqli_num_rows($resultado_search);
        }elseif (!empty($_GET['cidade'])) {
          $result_search = "SELECT * FROM produtos WHERE cidade LIKE '%$cidades%'";
          $resultado_search = mysqli_query($con, $result_search);
          $verifica = mysqli_num_rows($resultado_search);
        }elseif (!empty($_GET['bairro'])) {
          $result_search = "SELECT * FROM produtos WHERE bairro LIKE '%$bairros%'";
          $resultado_search = mysqli_query($con, $result_search);
          $verifica = mysqli_num_rows($resultado_search);
        }

        if($verifica > 0){
            while($row_search = mysqli_fetch_array($resultado_search)) {
           echo ; 
        }
        }else{
           echo "Nenhum resultado encontrado.";
        }

2 answers

0

It would be interesting to use a Function:

Function Dbselect($table, $params = null, $Fields = '*'){ $params = ($params) ? " {$params}" : null;

$query = "SELECT {$Fields} FROM {$table}{$params}"; $result=Dbexecute($query); if(!mysqli_num_rows($result)){ Return false; }These { while($res = mysqli_fetch_assoc($result)){ $data[] =$res; } Return $dice; } }

0

You can separate each item and add the sql in a variable, so it will be easier to get the return of sql, thus making it easier to locate the error:

    $sql_produto = '';
    $sql_cidade = '';
    $sql_bairro = '';

    if(!empty($_GET['produto']))
    {
        $sql_produto = "and nome LIKE '%$produtos%'";
    }
        if(!empty($_GET['cidade']))
        {
            $sql_cidade = "and cidade LIKE '%$cidades%'";
        }
            if(!empty($_GET['bairro']))
            {
                $sql_bairro = "and bairro LIKE '%$bairros%'";
            }


        $result_search = "
            SELECT
                *
            FROM
                produtos
            WHERE
                $sql_produto
                $sql_cidade
                $sql_bairro
        ";

        $resultado_search = mysqli_query($con, $result_search);
        $verifica = mysqli_num_rows($resultado_search);

Gives a echoin the variable $result_search and see the return, because the sql is correct

Browser other questions tagged

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