Ir para conteúdo

POWERED BY:

Arquivado

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

kneip

Busca PHP

Recommended Posts

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

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

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

×

Informação importante

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