Estou com um problema no filtro de buscas que fiz com select. O que acontece é que ele retorna as opções tranquilamente, mas somente uma Ou outra. Tenho o filtro por Cidades e Estados. Se eu seleciono filtrar por Estado OU Cidade ele filtra normalmente. Se eu coloco pra filtrar Por um Estado e uma Cidade que não tem registros ele me retorna o Registro do Estado ao invés de dizer q não possui registros. Ou seja ele só filtra pela cidade se eu deixar o Estado em Branco caso contrario se eu seleciono um Estado e qualquer cidade ele retorna todos registro do estado que eu selecionei, caso a cidade não tenha registro o que deveria retornar que não existem registros com essa busca.
Segue o código..
<?php
include "conexao.php";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Plugin Cadastro</title>
</head>
<body>
<table width="600" border="0">
<td align="center"><h1>Filtrar Clientes</h1></td>
</tr>
</table>
<form action="" method="post" enctype="multipart/form-data">
<span>Estado:</span>
<select name="estado">
<option value="" selected="selected">Selecione um Estado..</option>
<?php
$pega_estados = mysql_query("SELECT DISTINCT estado FROM clientes order by estado ASC");
if(mysql_num_rows($pega_estados) == 0) {
echo '<option value="">Não foram encontrados Estados</option>';
}else{
while($linha = mysql_fetch_array($pega_estados)){
echo '<option value="'.$linha['estado'].'">'.$linha['estado'].'</option>';
}
}
?>
</select>
<span>Cidade:</span>
<select name="cidade">
<option value="" selected="selected">Selecione uma Cidade..</option>
<?php
$pega_cidades = mysql_query("SELECT DISTINCT cidade FROM clientes order by cidade ASC");
if(mysql_num_rows($pega_cidades) == 0) {
echo '<option value="">Não foram encontrados Cidades</option>';
}else{
while($linhaC = mysql_fetch_array($pega_cidades)){
echo '<option value="'.$linhaC['cidade'].'">'.$linhaC['cidade'].'</option>';
}
}
?>
</select>
<input type="hidden" name="acao" value="enviar" />
<input type="submit" value="Buscar" />
</form>
<hr />
<?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
$estado = $_POST['estado'];
$cidade = $_POST['cidade'];
if($_POST['estado'] != ''){
$where = "WHERE estado = '".$_POST['estado']."'";
}elseif($_POST['cidade'] != ''){
$where = "WHERE cidade = '".$_POST['cidade']."'";
}
$seleciona_filtro = mysql_query("SELECT * FROM clientes $where ") or die ("Erro: ".mysql_error());
if(mysql_num_rows($seleciona_filtro) == 0) {
echo '<h1>Não foram encontados resultados da sua busca</h1>';
}else{
while($linhaFiltro = mysql_fetch_array($seleciona_filtro)){
echo '<li>'.$linhaFiltro['nome'].'</li>';
}
}
}
?>
</body>
</html>
Pergunta
Tyago Silveira
Estou com um problema no filtro de buscas que fiz com select. O que acontece é que ele retorna as opções tranquilamente, mas somente uma Ou outra. Tenho o filtro por Cidades e Estados. Se eu seleciono filtrar por Estado OU Cidade ele filtra normalmente. Se eu coloco pra filtrar Por um Estado e uma Cidade que não tem registros ele me retorna o Registro do Estado ao invés de dizer q não possui registros. Ou seja ele só filtra pela cidade se eu deixar o Estado em Branco caso contrario se eu seleciono um Estado e qualquer cidade ele retorna todos registro do estado que eu selecionei, caso a cidade não tenha registro o que deveria retornar que não existem registros com essa busca.
Segue o código..
Link para o comentário
Compartilhar em outros sites
12 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.