Como fazer uma busca limitada a palavras de um filtro? Php+Mysql
Estou criando um site php junto com banco de dados, e estou querendo saber como mesclar a busca por palavras junto com o busca por filtro/categoria. Meu site irá ser o seguinte, o usuário digita algum termo no campo de busca e clica em alguma opção do filtro, que esta dividido por cidades. Ex: digito "Construtor" e seleciono o filtro "cidade A", como eu junto essas duas variáveis e exibo somente os resultados que tenha a palavra "construtor" na "cidade a"? Sendo que cada bloco terá sua cidade e terá também alguma informação encontrada pela busca. Segue meu código até o momento.
<?php
include_once("conexao.php");
/aqui eu criei algumas variaveis para usar lá embaixo, esse $filtro é a palavra que o usuario digitar, o codigo está funcionando sem erros, só que não sei como juntar o $filtro + %categoria e exibir somente os resultados que conter as palavras de ambos/
$filtro = isset($_GET['filtro'])?$_GET['filtro']:""; /* chave de busca */
$sql= "select * from empresas where servicos like '%$filtro%' union select * from empresas where cidade like '%$filtro%' union select * from empresas where nome like '%$filtro%' union select * from empresas where igreja like '%$filtro%'"; /* comando em mysql */
$consulta = mysqli_query($conexao, $sql);
$registros = mysqli_num_rows($consulta); /mostra quantas linhas existem no BD/
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Sistema de Cadastro</title>
<link rel="stylesheet" href="_css/estilo.css">
</head>
<body>
<div class="menutop">
<img src="imagens/dafe.png" height="50px" width="240px" align="left" style="position: absolute; margin-left: 80px;"/>
<div class="separar"></div>
<form method="get" action="">
<div class="buscador">
<input type="text" placeholder="Faça uma busca"name="filtro" class="busca">
<input type="image" class="buscaimg"style="width: 21px" height="21px" src="imagens/busca.png">
<select name="categoria">
<option value="">Categoria</option>
<?php
/* Nessa parte, ele busca no banco de dados todas as cidades */
$getcategories = "SELECT cidade FROM empresas";
$getcategoriesquery = mysqli_query($conexao, $getcategories) or die(mysqli_error());
while($getcategoriesline = mysqli_fetch_array($getcategoriesquery)) {
$categoria = $getcategoriesline['cidade'];
$categoria_id = $getcategoriesline['cidade'];
echo "<option value='$categoria_id'>$categoria</option>";
}
?>
</select>
</div>
</form>
</div>
<div class="container">
<nav>
<ul class="menu">
</ul>
</nav>
<section>
<?php
include_once("conexao.php");
print "<h1><div id='resultadosx'>Resultados</div></h1><h3><div id='topox'>Foram encontrados $registros registros para a busca '$filtro' </div></h3><hr class='hr1'><br><br>";
/* aqui ele só está retornando os resultados da busca por palavras e ignorando o "filtro" de cidades, como eu faço para que ele pegue a variavel "$filtro" e junte com a variavel "$categoria" e retorne apenas esses resultados? */
print "<div id='topox'>Dê sempre a preferência ao Doméstico da Fé. Gal 6.10</div>";
print "<br><br>";
while($exibirRegistros = mysqli_fetch_array($consulta)) { /* verifica registro por registro e coloca na tela até acabar */
$idempresa = $exibirRegistros [0];
$nome = $exibirRegistros[1];
$servicos = $exibirRegistros[2];
$cidade = $exibirRegistros[3];
$bairro = $exibirRegistros[4];
$endereco = $exibirRegistros[5];
$telefone = $exibirRegistros[6];
$email = $exibirRegistros[7];
$igreja = $exibirRegistros[8];
$obs = $exibirRegistros[9];
$link = $exibirRegistros[10];
$logo = $exibirRegistros[11];
print "<article>";
print "<div id='logox'><img width=160 height=160 src= $logo></div>";
print "<div id='segmentox'><strong>SEGMENTO: $servicos</strong><br></div>";
print "<div id='igrejax'>IGREJA:<br><strong>$igreja</strong> </div>";
print "<div id='nomex'>Nome: $nome<br>End: $endereco<br>Bairro: $bairro<br>Cidade: $cidade<br></div>";
print "<div id='nomex'>Tel: $telefone<br>E-mail: $email<br>Site/Facebook: $link<br> </div>";
print "</article>";
print "<hr size='2' width='98%' align='center' noshade>";
print"<br>";
}
mysqli_close($conexao);
?>
</section>
</div>
</body>
</html>Discussão (4)
Carregando comentários...