What is wrong with this form?

0

I've created this search form, so it's returning all blank!

Here's the form:

<h3>O que você esta procurando? Digite aqui:</h3>
        <form class="form-inline" action="busca.php" method="post">
            <div class="form-group">
                <input type="text" class="form-control" id="palavra" placeholder="Digite aqui..." name="palavra">
            </div>
            <div class="form-group">
                <label for="cidade">Selecione a cidade:</label>
                <select name="cidade" class="form-control" id="cidade">
                    <option value="sao-gabriel-da-palha">São Gabriel da Palha</option>
                    <option value="sao-domingos-do-norte">São Domingos do Norte</option>
                    <option value="vila-valerio">Vila Valério</option>
                </select>
            </div>
            <button type="submit" class="btn btn-default" value="Buscar">Buscar</button>
        </form>

And here are the codes I used to connect and search in PHP:

<?php

  $hostdb = "localhost";
        $userdb = "root";
        $passdb = "root";
        $tabledb = "empresa";

        $conecta = mysqli_connect($hostdb, $userdb, $passdb) or die(mysqli_connect_error());
        @mysqli_connect($tabledb, $conecta) or die("Erro ao se conectar com o banco de dados");

        $busca = $_POST['palavra'];
        $cidade = $_POST ['cidade'];

        $busca_query = mysqli_query($conecta,"SELECT * FROM empresa WHERE nome LIKE '%$busca%' AND cidade = '$cidade'") or die(mysqli_error());

        if (empty($busca_query)){
            echo "Nenhum resultado para a sua busca.";
        }

        if ($busca_query){
            while ($dados = mysqli_fetch_array($busca_query)){
                echo "Nome: $dados[nome]</br>";
                echo "Endereço: $dados[endereco]</br>";
                echo "Cidade: $dados[cidade]</br>";
                echo "Telefone: $dados[telefone]</br>";
                echo "email: $dados[email]</br>";
                echo "<hr>";
}
        }else{
            echo "Nenhum resultado para a sua busca.";
        }


        ?>

Could someone explain to me why the query is returning blank?

    
asked by anonymous 09.08.2017 / 22:21

2 answers

6

The main error occurs because mysqli_query() expects exactly two arguments the first is always connection and the second is the query.

Change:

 $busca_query = mysqli_query("SELECT * FROM empresa WHERE nome LIKE '%$busca%' AND cidade = '$cidade'") or die(mysqli_error());

To:

$busca_query = mysqli_query($conecta, "SELECT * FROM empresa WHERE nome LIKE '%$busca%' AND cidade = '$cidade'") or die(mysqli_error($conecta));

Other problems are the function mysqli_error() also requests the connection if it does not exist you can not check the error when calling mysqli_connect() in this case to establish the connection the correct one is to call mysqli_connect_error() or mysqli_connect_errno() .

You can eliminate the call from mysqli_select_db() by passing as the database name as the fourth argument in mysqli_connect()

Change:

$conecta = mysqli_query($hostdb, $userdb, $passdb) or die(mysqli_error());

To:

$conecta = mysqli_connect($hostdb, $userdb, $passdb) or die(mysqli_connect_error());

Improve the if if the query return is false, then the while block will execute, which will generate an error. Leave it as follows:

if ($busca_query){
    while ($dados = mysqli_fetch_array($busca_query)){
        echo "Nome: $dados['nome']</br>";
        echo "Endereço: $dados['endereco']</br>";
        echo "Cidade: $dados['cidade']</br>";
        echo "Telefone: $dados['telefone']</br>";
        echo "email: $dados['email']</br>";
        echo "<hr>";         
    }
}else{  
    echo "Nenhum resultado para a sua busca.";
}   
    
09.08.2017 / 22:34
0

Well, for me to do it right, it had to be that way here, thanks for all the help:

<?php
        $servidor = "localhost";
        $usuario = "root";
        $senha = "root";
        $tabela = "guianortecapixaba";

        $conexao = new mysqli($servidor, $usuario, $senha, $tabela);

        if ($conexao->connect_error) {
            die("Erro: " . $conexao->connect_error);
        }

        $busca = $_POST['palavra'];
        $cidade = $_POST ['cidade'];

        $sql = "SELECT * FROM empresa WHERE nome LIKE '%$busca%' AND cidade = '$cidade'";
        $resultados = $conexao->query($sql);

        if ($resultados->num_rows > 0) {
            while($linha = mysqli_fetch_array($resultados)) {
                print("Nome: " . $linha['nome'] . "</br>");
                print ("Endereço:". $linha['endereco']."</br>");
               // print ("Cidade:". $linha['cidade']."</br>");
                print ("Telefone:". $linha['telefone']."</br>");
                echo "email:". $linha['email']."</br>";
                echo "<hr>";
            }
        } else {
            echo "Nenhum resultado para a sua busca.";
        }

        $conexao->close();
    
10.08.2017 / 04:22