PHP

Simples código fonte para busca com filtros no PHP

Modelo básico para iniciar o desenvolvimento de um sistema de busca com filtros no PHP.

Sistema de busca com filtros no PHP

Este é um exemplo básico de código para você iniciar o desenvolvimento de um sistema de busca com filtros no PHP.

Com varias dicas de funções para que você crie um código seguro, objetivo deste conteúdo é acadêmico.

Recebendo os dados via GET

Por que GET? $_GET é um array associativo de variáveis passadas para o script atual via o método HTTP GET.

Exemplo: https://rogertakemiya.com.br?nome=Roger

  • Variável: nome
  • Valor: Roger
  • Código php para exibir o valor: echo $_GET[‘nome’]

Já para tratar os valores enviados pelos campos utilizamos a função addslashes().

addslashes: Retorna uma string com barras invertidas antes de caracteres que precisam ser tratados para serem colocados em um query no banco de dados, etc. Estes caracteres são aspas simples (‘), aspas duplas (“), barra invertida (\) e NUL.

Vamos ao código, na primeira parte recebemos os valores via GET e criamos as validações necessárias

<?php 

$nome = addslashes($_GET['nome']);
$idade = addslashes($_GET['idade']);
$email = addslashes($_GET['email']);

if(!is_null($nome) && !is_null($idade) && !is_null($email)){
    echo "Todos os campos estão enviando valor";
}else{
    echo "Algum campo nao esta correto";
}
?>

Para validar se os valores foram informados e enviados, utilizo a função is_null(), que verifica se uma variável é NULL “não foi definida”.

Em situações similares você também pode estar utilizando as funções empty() ou isset() para verificar o preenchimento dos valores.

empty: determina se uma variável é considerada vazia. Uma variável é considerada vazia se não existir ou seu valor é igual FALSE. A função empty() não gera um aviso se a variável não existir.

isset: irá verificar se a variável informada foi definida, possuí um valor, mesmo que vazio e irá retornar TRUE se sim ou FALSE caso contrário.

Banco de dados

Para conectar ao banco de dados utilizamos a extensão PDO, segue o exemplo:

$user = "usuario";
$pass = "senha";

$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

PDO: A extensão PDO (PHP Data Objects) define uma interface leve e consistente para acessar diversos tipos de bancos de dados no PHP.

Agora preparamos a nossa Query “consulta” ao banco de dados.

Atenção: Repare na utilização do bindParam() para evitar ataques de SQL Injection.

$sql = $pdo->prepare("SELECT nome, idade, email FROM usuarios WHERE nome = :nome AND idade = :idade AND email = :email");

$sql->bindParam(':nome', $nome, PDO::PARAM_STR);
$sql->bindParam(':idade', $nome, PDO::PARAM_INT);
$sql->bindParam(':email', $email, PDO::PARAM_STR);
$sql->execute();
$linha = $sql->fetch(PDO::FETCH_ASSOC);

print_r($linha);

?>

A utilização da função bindParam é essencial.

bindParam: Vincula uma variável PHP a um correspondente marcador de ponto de interrogação ou nome de pergunta na instrução SQL que foi usada para preparar a declaração (ler mais).

 

 

Post Recentes

Cron do Magento 2 não roda: status missed e pending no cron_schedule

Pedido que não fatura e e-mail que não sai porque todo job fica missed: como ler a cron_schedule, conferir o…

13 horas atrás

Gerar slug de URL em PHP: acento, espaço e símbolo fora do endereço

Uma função curta em PHP 8.3 que transforma Camiseta Preta Tamanho GG em camiseta-preta-tamanho-gg, sem depender do locale do servidor.

1 dia atrás

Log de consentimento LGPD: a tabela MySQL que guarda a prova do aceite

O banner registra o clique só no navegador e some. Veja a tabela MySQL e o endpoint que gravam a…

2 dias atrás

Comando CLI Magento 2: criar a classe e registrar no di.xml

A classe do comando existe e o bin/magento list ignora ela. Falta o registro no di.xml: aqui vai a classe…

3 dias atrás

Traduzir o pt_BR.csv do Magento 2 em lote sem perder a coluna de origem

Como traduzir duas mil linhas do pt_BR.csv do Magento 2 lendo com fgetcsv e regravando com fputcsv, sem encostar na…

3 dias atrás

Variação não está disponível no WooCommerce: limpar transients e lookup

Produto variável respondendo "Desculpe, este produto não está disponível" mesmo com a variação ativa: limpe os transients do WooCommerce e…

4 dias atrás