Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Como criar um formulário de Pesquisa com PHP?

Olá pessoal, tudo bem? Sou um breve estudante de PHP, meu primeiro contato com "programação" de maneira geral, foi aqui no ALURA. Já fiz alguns cursos, inclusive MySQL e PHP I e II. E um amigo meu, me pediu para elaborar uma aplicação WEB para fazer registro de Cadastros utilizado NOME, CPF e DATA de NASCIMENTO. Eu consegui elaborar tudo, mas dai ele me perguntou se teria como criar uma função de pesquisa deste cadastros. Eu tentei elaborar um código aqui, tomando como base os códigos já vistos nos cursos que fiz e a pouca lógica que tenho sobre o mesmo. Mas acho que ta faltando um IF para mandar os dados para a página...

O que eu elaborei ta da seguinte forma:

função para procurar os dados no MySQL:

function encontraCadastro($conexao, $nome) {
    $query = "select * from cadastros where nome = {$nome}";
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);
}

E o código da pagina para fazer a pesquisa ficou assim:

<?php require_once("cabecalho.php");
      require_once("banco-cadastro.php");
      require_once("logica-usuario.php");

verificaUsuario();
?>

<table class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>Nome</th>
            <th>C.P.F</th>
            <th>Data de nascimento</th>
            <th></th>
            <th></th>
        </tr>
    </thead>

    <?php
        $cadastro = encontraCadastro($conexao, $nome);
    ?>

    <tbody>
        <tr>
            <td><?= $cadastro['nome'] ?></td>
            <td><?= $cadastro['cpf'] ?></td>
            <td><?= $cadastro['data_nascimento'] ?></td>
            <td><a class= "btn btn-primary" href="cadastro-altera-formulario.php?id=<?=$cadastro['id']?>">alterar</a></td>
            <td>
                <form action="remove-cadastro.php" method="post">
                    <input hidden="text" name="id" value="<?=$cadastro['id']?>" />
                    <button class="btn btn-danger">remover</button>
                </form>
            </td>
        </tr>
    </tbody>    
</table>

<?php include("rodape.php"); ?>

Eu sei que ta faltando alguma coisa pra chamar os dados do Mysql e coloca-los na tabela. Talvez um IF... alguém pode ajudar?

4 respostas

Boa noite.

Cara, tente substituir sua querie da linha 6 de:

$query = "select * from cadastros where nome = {$nome}";

para:

$query = "select * from cadastros where nome = ".$nome.";";

Ainda não funciona, e o erro é esse:

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\jean\banco-cadastro.php on line 36
Call Stack
#
Time
Memory
Function
Location
1
0.0003
404984
{main}( )
...\encontra-cadastro.php:0
2
0.0022
421744
encontraCadastro( )
...\encontra-cadastro.php:20
3
0.0023
421968
mysqli_fetch_assoc ( )
...\banco-cadastro.php:36
alterar 

Tente fazer desta forma:

function encontraCadastro($conexao, $nome) {
     $query = "select * from cadastros where nome = '" . $nome . "'";  
    $resultado = mysqli_query($conexao, $query);
    return mysqli_fetch_assoc($resultado);
}
solução!

Daniel, depois de ver alguns vídeos e ver a sua ajuda aqui, eu conseguir criar a função da seguinte forma:

function pesquisaCadastro($conexao) {
    $pesquisar = $_POST['pesquisar'];
    $cadastros_pesquisados = array();
    $query = "SELECT * FROM cadastros WHERE nome LIKE '%$pesquisar%'";
    $resultado_pesquisa = mysqli_query($conexao, $query);
    while ($nomes_cadastros = mysqli_fetch_assoc($resultado_pesquisa)) {
        array_push($cadastros_pesquisados, $nomes_cadastros);

    }

    return $cadastros_pesquisados;
}

E acho que todo o problema, foi o que estava sendo recebido no input onde o usuário digita o nome que quer ser pesquisado, eu não tinha uma variável para receber a palavra pesquisada...