kneip 0 Denunciar post Postado Janeiro 6, 2014 Boa tarde pessoal, eu sei que já tem tópicos falando sobre isso, mas não consegui resolver com a minha programação. Seria uma busca através de filtro. Eu tenho tres campos e selecionando os tres ele funciona. eu to com dificuldade para pode filtrar com apenas um campo, ou dois, ou mais campos... filtra só por segmento, ou só por valor ou só por cidade. segue o codigo: <form action="" method="post" enctype="multipart/form-data"> <span>Segmento</span><br /> <select name="segmento"> <option value="">Selecione o segmento</option> <?php $pega_segmentos = mysql_query("SELECT * FROM segmento ORDER BY id ASC"); if(mysql_num_rows($pega_segmentos) == 0){ echo '<option value="">Não foram encontrados nenhum segmento</option>'; }else{ while($linha = mysql_fetch_array($pega_segmentos)){ echo '<option value="'.$linha['id'].'">'.$linha['segmento'].'</option>'; } } ?> </select><br /> <span>Valor</span><br /> <select name="valor"> <option value="">Selecione o Valor</option> <?php $pega_valores= mysql_query("SELECT * FROM valor ORDER BY id ASC"); if(mysql_num_rows($pega_valor) == 0){ echo '<option value="">Não foram encontrados.</option>'; }else{ while($linhaB = mysql_fetch_array($pega_valores)){ echo '<option value="'.$linhaB['id'].'">'.$linhaB['valor'].'</option>'; } } ?> </select><br /> <span>Cidade</span><br /> <select name="cidades"> <option value="">Selecione a Cidade</option> <?php $pega_cidades = mysql_query("SELECT * FROM cidades ORDER BY id ASC"); if(mysql_num_rows($pega_cidades) == 0){ echo '<option value="">Não foram encontrados</option>'; }else{ while($linhaC = mysql_fetch_array($pega_cidades)){ echo '<option value="'.$linhaC['id'].'">'.$linhaC['cidades'].'</option>'; } } ?> </select><br /> <input type="hidden" name="acao" value="enviar" /> <input type="submit" value="buscar" /> </form> <hr /> <?php if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){ $segmento = $_POST['segmento']; $valor = $_POST['valor']; $cidades = $_POST['cidades']; $sql = mysql_query("SELECT * FROM descricao WHERE segmento = '$segmento' AND valor= '$valor' AND cidades = '$cidades'"); if(mysql_num_rows($sql ) == 0) { echo '<h1>Desculpe, mais sua busca, não retornou resultados</h1>'; }else{ while($linhasql = mysql_fetch_array($sql)){ echo '<h1>'.$linhasql ['nome'].'</h1>'; } } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Janeiro 6, 2014 experimente trocar AND por OR Compartilhar este post Link para o post Compartilhar em outros sites
kneip 0 Denunciar post Postado Janeiro 6, 2014 Quando uso o OR, escolhendo apenas o campo segmento lista corretamente. mas quando escolho segmento e cidade por exemplo, ele ignora a cidade e continua pegando só o campo segmento. Compartilhar este post Link para o post Compartilhar em outros sites
Raul Silva 41 Denunciar post Postado Janeiro 6, 2014 Faça uma query dinamica, verifique os valores enviados, se o usuario quer filtrar por tal, coloque esse tal na query <?php $tal = (int) $_POST['tal']; $aquele = (int) $_POST['aquele']; $query = 'SELECT * FROM tabela WHERE 1=1 '; if($tal > 0){ $query .= ' AND tal=' . $tal; } if($aquele>0){ $query .= ' AND aquele=' . $aquele; } Tipo isso. Compartilhar este post Link para o post Compartilhar em outros sites