Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

anacss

Usar opção escolhida na combobox em uma query

Recommended Posts

Olá!

Bom, eu tenho 2 comboboxes populadas à partir do que está no banco de dados, da seguinte forma:




<form name="busca" method="post" action="pesquisa.php">
Estou em</br>
<label for="cod_cidades">Cidade:</label>
<select name="cod_cidades" id="cod_cidades">
<option value=""></option>
<?php
$sql = "SELECT cod_cidades, nome
FROM cidades
ORDER BY nome";
$res = mysql_query( $sql );
while ( $row = mysql_fetch_assoc( $res ) ) {
echo '<option value="'.$row['cod_cidades'].'">'.(utf8_encode($row['nome'])).'</option>';
}
?>
</select>


<label for="cod_bairros">Bairro/região:</label>
<span class="carregando">Carregando...</span>
<select name="cod_bairros" id="cod_bairros">
<option value="">Escolha uma cidade</option>
</select>


<script src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3');
</script>


<script type="text/javascript">
$(function(){
$('#cod_cidades').change(function(){
if( $(this).val() ) {
$('#cod_bairros').hide();
$('.carregando').show();
$.getJSON('bairros.ajax.php?search=',{cod_cidades: $(this).val(), ajax: 'true'}, function(j){
var options = '<option value=""></option>';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].cod_bairros + '">' + j[i].nome + '</option>';
}
$('#cod_bairros').html(options).show();
$('.carregando').hide();
});
} else {
$('#cod_bairros').html('<option value="">Escolha uma cidade</option>');
}
});
});
</script>
<input name="enviar" type="submit" id="enviar" value="Enviar">
</form>



Eu quero pegar o que o usuário selecionar e, ao clicar em Enviar, fazer uma consulta SQL usando esses valores.

Tentei atribuir os valores à variáveis, como demonstrado abaixo, mas deu o erro:


Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\pesquisa.php on line 47




$cod_cidades = $_POST['cod_cidades'];
$cod_bairros = $_POST['cod_bairros'];


$sql = mysql_query("Select nm_linha From linhas where cidades_origem like _utf8 '%'$cod_cidades'%' and ida like _utf8 '%'$cod_bairros'%' COLLATE utf8_unicode_ci");
while($exibe = mysql_fetch_assoc($sql)){
echo $exibe['nm_linha'] .'<br>';
}



Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria melhor apenas assim?

"Select nm_linha From linhas where cidades_origem = '$cod_cidades' and ida = '$cod_bairros'"

Já que pegas os valores das combos acredito que eles estejam completos. Então não seria o caso de usar '%' no like.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não seria melhor apenas assim?

"Select nm_linha From linhas where cidades_origem = '$cod_cidades' and ida = '$cod_bairros'"

Já que pegas os valores das combos acredito que eles estejam completos. Então não seria o caso de usar '%' no like.

 

Oi Criquio

Então, no banco esses dois campos tem várias cidades e bairros separados por vírgula, por isso o %.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou assim?

"Select nm_linha From linhas where cidades_origem like '%$cod_cidades%' and ida like '%$cod_bairros%'"

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Já tentou assim?

"Select nm_linha From linhas where cidades_origem like '%$cod_cidades%' and ida like '%$cod_bairros%'"

 

Tentei agora. O erro desapareceu, mas a página aberta ficou em branco. Selecionei opções que existem no banco, então não foi falta de resultado. :/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mais prático se cada código ficasse em um registro diferente. Como são esses códigos? Tente printá-los na página para ver se está saindo conforme estão no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seria mais prático se cada código ficasse em um registro diferente. Como são esses códigos? Tente printá-los na página para ver se está saindo conforme estão no banco.

 

Não entendi muito bem o que disse, mas eu fiz uns testes com a acentuação das palavras e esse collate resolveu.

Quando monto a query usando as próprias palavras em vez das variáveis, os resultados retornam OK.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A,minha dica seria para imprimir as variáveis na página para ver como os resultados estão vindo:

echo $cod_cidades  . " - " . $cod_bairros;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.