2
good morning. I have a little problem I’m having trouble solving. The situation is as follows: I have 2 selects (State and city), I would like that when selecting a state the system did a search in my BD to find distributors of that state and when selecting the city the system further refines the search for distributors of that particular state + certain city. All this without needing a button and without refreshing the page.
I tried to adapt a code I found on the Internet, but there is no error, nor appears any result.
States and cities are automatically populated:
<select class="select-onde-comprar" onchange="buscarOndeComprar()" id="estado" name="estado"></select>
<select class="select-onde-comprar" onchange="buscarOndeComprar()" id="cidade" name="cidade"></select>
Javascript function that should link to the search. I believe this is where the problem lies.
var req;
// FUNÇÃO PARA BUSCA NOTICIA
function buscarOndeComprar() {
// Verificando Browser
if(window.XMLHttpRequest) {
req = new XMLHttpRequest();
}
else if(window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
// Arquivo PHP juntamente com o valor digitado no campo (método GET)
var estado = document.getElementById('estado').value;
var cidade = document.getElementById('cidade').value;
var url = "busca-onde-comprar.php?estado="+estado+"&cidade="+cidade;
// Chamada do método open para processar a requisição
req.open("Get", url, true);
// Quando o objeto recebe o retorno, chamamos a seguinte função;
req.onreadystatechange = function() {
// Exibe a mensagem "Buscando Distribuidores e Revendedores..." enquanto carrega
if(req.readyState == 1) {
document.getElementById('resultado').innerHTML = 'Buscando Distribuidores e Revendedores...';
}
// Verifica se o Ajax realizou todas as operações corretamente
if(req.readyState == 4 && req.status == 200) {
// Resposta retornada pelo busca.php
var resposta = req.responseText;
// Abaixo colocamos a(s) resposta(s) na div resultado
document.getElementById('resultado').innerHTML = resposta;
}
}
req.send(null);
}
SEARCH PAGE:
<?php
// Incluir aquivo de conexão
include("bd.php");
// Recebe o valor enviado
$estado = $_GET['estado'];
$cidade = $_GET['cidade'];
// Procura titulos no banco relacionados ao valor
if(!empty($cidade)){
$sql = mysql_query("SELECT * FROM distribuidor WHERE estado = ".$estado." and cidade = ".$cidade."");
}else {
$sql = mysql_query("SELECT * FROM distribuidor WHERE estado = ".$estado."");
}
// Exibe todos os valores encontrados
if (!empty($sql)){
while ($ondecomprar = mysql_fetch_object($sql)) {
?>
<div class="row-fluid">
<div class="col-lg-4 col-md-4 col-sm-6 col-xs-12 onde-comprar">
<h4 class=""><?php echo $ondecomprar->nome?></h4>
<p><?php echo $ondecomprar->endereco?>, <?php echo $ondecomprar->numero?> - <?php echo $ondecomprar->bairro?><p>
<p><strong>Cidade:</strong> <?php echo $ondecomprar->cidade?> - <?php echo $ondecomprar->estado?></p>
<p><strong>Telefone:</strong> <?php echo $ondecomprar->telefone?></p>
<p><strong>Celular:</strong> <?php echo $ondecomprar->celular?> <i class="fa fa-whatsapp" aria-hidden="true"></i></p>
</div>
</div>
<?php}
} else{
?>
<div class="row-fluid">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 titulos text-center">
<h4>Ainda não possuímos nenhum distribuidor ou revendedor cadastrado para este estado.</h4>
</div>
</div>
<?php
}
?>
Example of a site where you have this search: https://tulipia.com.br/onde-encontrar
why it does not do so, as it selects the city it completes the state and suppliers
– Victor
For me to select a city, first I have to choose the state, because to appear the cities I depend on a selected state.
– Frederico Moreira
from what I saw you do the database search right, da para fazer uma função que a medida que selecionaque algo ele complete os fornecedores
– Victor
You do not prefer to use AJAX with Jquery?
– Andrei Coelho
Yes, but how to do it? I’m bumping into the execution
– Frederico Moreira
I will illustrate from your data.
– Andrei Coelho
@Andrei Coelho awaits your example, to see if it helps me solve the problem. Thank you
– Frederico Moreira
I’ll do it this afternoon. I’ll use exactly your parameters
– Andrei Coelho