Curso de PHP – Como fazer consulta com pesquisa de dados em banco MySQL

Efetuar consulta com pesquisa de dados em banco MySQL

Em nossa aula anterior mostramos como efetuar uma consulta a um banco de dados MySQL por meio de um script PHP, a qual retornava todo o conteúdo de uma das tabelas do banco. Agora, criaremos uma consulta que permitirá pesquisar os dados a serem retornados, aplicando um filtro à consulta.

Nossa pesquisa nos permitirá exibir os cadastros realizados no banco de dados filtrando os registros por sexo - sendo 'M' = Masculino, 'F' = Feminino, ou ainda 'N' = Não Declarado'.

Vamos criar dois arquivos: um para realizar a pesquisa, que chamaremos de pesquisa.html, e outro para processar a pesquisa e exibir seu resultado, de nome pesquisa-resultado.php. Além disso, usaremos um arquivo para conexão ao banco de dados (conectar.php), e uma folha de estilos CSS para controlar a aparência da tabela de dados gerada (estilos.css).

O banco de dados que será consultado recebeu o nome de banco_teste, e consiste em duas tabelas relacionadas, de nomes cadastro e listas.

Criando os arquivos

Primeiramente vamos criar a página de pesquisa (pesquisa.html):

<html>
<head>
<title> Pesquisando Cadastros pelo Sexo </title>
</head>
<body>
<h3>Pesquisa</h3><br>
<form name="Cadastro" action="pesquisa-resultado.php" method="POST">
<label>Selecione o Sexo do Cliente:</label>
<select name="Sexo">
  <option value="M">Masculino</option>
  <option value="F">Feminino</option>
  <option value="N">Não Declarado</option>
</select><br>
<input type="submit" name="enviar" value="Enviar">
</form>
</body>
</html>

Esta página possui um formulário onde  usuário pode selecionar o sexo que deseja consultar, em um menu suspenso, e a consulta é enviada ao script pesquisa-resultado.php para processamento.

Script de processamento

Vamos então criar o script de processamento da pesquisa (pesquisa-resultado.php):

<?php
 // Conectando ao banco de dados:
 include_once("conectar.php");
 
 // Recebendo os dados a pesquisar
 $pesquisa = $_POST['Sexo'];
?>

 <html>
 <head>
 <link href="estilos.css" rel="stylesheet" type="text/css">
 <title>Resultado da pesquisa</title>
 </head>
 <body>
 
 <!-- Criando tabela e cabeçalho de dados: -->
 <table border="1" style='width:50%'>
 <tr>
 <th>NOME</th>
 <th>SOBRENOME</th>
 <th>SEXO</th>
 </tr>
 
 <!-- Preenchendo a tabela com os dados do banco: -->
 <?php
 $sql = "SELECT * FROM cadastro WHERE Sexo = '$pesquisa'";
 $resultado = mysqli_query($strcon,$sql) or die("Erro ao retornar dados");
 
 // Obtendo os dados por meio de um loop while
 while ($registro = mysqli_fetch_array($resultado))
 {
   $nome = $registro['NomeCliente'];
   $sobrenome = $registro['SobrenomeCliente'];
   $sexo = $registro['Sexo'];
   echo "<tr>";
   echo "<td>".$nome."</td>";
   echo "<td>".$sobrenome."</td>";
   echo "<td>".$sexo."</td>";
   echo "</tr>";
 }
 mysqli_close($strcon);
 echo "</table>";
?>
</body>
</html>

O script de processamento recebe os dados a pesquisar oriundos da página pesquisa.html, e realiza a pesquisa solicitada no banco de dados da aplicação. O resultado retornado é então exibido na página em uma tabela, contendo três colunas: nome, sobrenome e sexo.

Arquivo de conexão ao banco de dados (conectar.php):

<?php
 /* Dados do Banco de Dados a conectar */
$Servidor = 'localhost';
$nomeBanco = 'banco_teste';
$Usuario = 'fabio';
$Senha = '123';
$strcon = mysqli_connect($Servidor, $Usuario, $Senha, $nomeBanco); 
?>

Folha de estilos CSS (arquivo estilos.css - opcional):

table, th, td {
 width: 50%;
 border: 1px solid blue;
 border-collapse: collapse;
 padding: 3px;
 background-color: #CC8623;
}

Após criar os arquivos de pesquisa e processamento da pesquisa, vamos criar o banco de dados que será usado nos testes.

O Banco de Dados para testes

A seguir temos o código para criação do banco de dados utilizado em nossos testes, exportado a partir do phpMyAdmin:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
-- Database: `banco_teste`:
CREATE DATABASE IF NOT EXISTS `banco_teste` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `banco_teste`;
-- Estrutura da tabela `cadastro`:
CREATE TABLE IF NOT EXISTS `cadastro` (
 `NomeCliente` varchar(20) DEFAULT NULL,
 `SobrenomeCliente` varchar(30) DEFAULT NULL,
 `Sexo` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Extraindo dados da tabela `cadastro`:
INSERT INTO `cadastro` (`NomeCliente`, `SobrenomeCliente`, `Sexo`) VALUES
('Fábio', 'dos Reis', 'M'),
('Ana', 'Paulo', 'F'),
('Ana', 'Maria', 'F'),
('Jonas', 'Batista', 'M');
-- Estrutura da tabela `listas`:
CREATE TABLE IF NOT EXISTS `listas` (
 `ID_item` smallint(6) NOT NULL AUTO_INCREMENT,
 `Item` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
 PRIMARY KEY (`ID_item`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;
-- Extraindo dados da tabela `listas`:
INSERT INTO `listas` (`ID_item`, `Item`) VALUES
(1, 'Laranja'),
(2, 'Banana'),
(3, 'Maçã'),
(4, 'Uva'),
(5, 'Caqui'),
(6, 'Caju');

Testando o script

Vamos efetuar uma consulta aos registros cujo sexo é o feminino:

Pesquisa de registros com php e mysql

A tabela a seguir mostra o resultado da pesquisa realizada:

Resultado da consulta ao banco MySQL com PHP e filtro WHERE

O valor enviado pelo formulário - no caso, a letra 'F' - é usado para compor a consulta SQL realizada no banco de dados, e o resultado retornado é usado para preencher a tabela exibida na página.

Próximo: Como inserir dados em um banco de dados MySQL usando um script PHP.

 

Sobre Fábio dos Reis (1209 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*