Pre-populating table with MySQL query

1

Does not bring what I want, can someone tell me what I'm missing looking at the code?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Sistema de busca interna com PHP/MySQL</title>
</head>

<body>
<form name="frmBusca" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar" >
    <input type="text" name="palavra" />
    <input type="submit" value="Buscar" />
</form>

<?php
// Conexão com o banco de dados
$conn = @mysqli_connect("localhost", "usuario", "senha") or die("Não foi possível a conexão com o Banco");
// Selecionando banco
$db = @mysqli_select_db("produtos", $conn) or die("Não foi possível selecionar o Banco");

// Recuperamos a ação enviada pelo formulário
$a = $_GET['a'];

// Verificamos se a ação é de busca
if ($a == "buscar") {

    // Pegamos a palavra
    $palavra = trim($_POST['palavra']);

    // Verificamos no banco de dados produtos equivalente a palavra digitada
    $sql = mysqli_query("SELECT * FROM produtos WHERE nome LIKE '%".$palavra."%' ORDER BY nome");

    // Descobrimos o total de registros encontrados
    $numRegistros = mysqli_num_rows($sql);

    // Se houver pelo menos um registro, exibe-o
    if ($numRegistros != 0) {
        // Exibe os produtos e seus respectivos preços
        while ($produto = mysqli_fetch_object($sql)) {
            echo $produto->nome . " (R$ ".$produto->valor.") <br />";
        }
    // Se não houver registros
    } else {
        echo "Nenhum produto foi encontrado com a palavra ".$palavra."";
    }
}
?>
</body>
</html>
    
asked by anonymous 17.08.2018 / 14:47

1 answer

1

There's a lot wrong with the code, for example:

The first is the order of the parameters, the correct one is the link and then db_name:

$db = @mysqli_select_db($conn, "produtos") or die("Não foi possível selecionar o Banco");

Second, when entering this page it will give $ a is undefined, because you need to check if it is set before assigning, like this:

// Recuperamos a ação enviada pelo formulário
isset($_GET['a'])? $a = $_GET['a'] : $a = '';

third the form method is POST and the PHP code expecting GET is strange, so it would need to change, but this way it works as well:

<form name="frmBusca" method="GET" action="<?php echo $_SERVER['PHP_SELF'] ?>?a=buscar" >
    <input type="text" name="palavra" />
    <input type="submit" value="Buscar" />
</form>

NOTE: I would have to create another page, because sending it to it is certainly not good practice.

fourth the mysqli_query code, expect a connection per parameter:

$sql = mysqli_query($conn, "SELECT * FROM produtos WHERE nome LIKE '%carro%' ORDER BY nome");

Now it works, it has been tested here:

database:

    
28.09.2018 / 20:41