Jump to content

[Resolvido] Select List


JFernandesVR
 Share

Recommended Posts

Boas pessoal.

Já andei a pesquisar e nao encontrei nada relaccionado com isto.

O que eu quero fazer é o seguinte:

criar uma select box (para servir de filtro) de preços. Mas, esta select box irá variar consoante a pesquisa efetuado pelo cliente.

Queria fazer uma cena do género, quando cliente faz a consulta, encontrar o preço mais alto e dividir por 5 patamares de preços:

Ou seja, imaginemos que o preço mais alto é 50 euros. aparece uma select box com: 0 a 10 | 10 a 20 | 20 a 30 | 30 a 40| 40 a 50

se for 5 euros 0 a 1 | 1 a 2 | 2 a 3 | 3 a 4| 4 a 5.

Como fazer?

Obrigado

Link to comment
Share on other sites

pesquisas na base de dados todos os elementos que se enquadram nos parâmetros do filtro, ordenas por valor pela ordem decrescente, limitas o resultado a um registo e verificas qual o valor do produto retornado.

este valor é o valor mais alto da lista de resultados.

depois é só fazer um ciclo para apresentar os elementos com um intervalo de valores do valor encontrado dividido por cinco

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

a minha duvida é fazer isso

50 / 5 = 10; -> 10 + 10 + 10 + 10 + 10 = 50; -> O teu ciclo, neste caso, terá 5 'casas'. Se não quiseres fazer um For, podes fazer um While, que se calhar é mais simples..algo dentro deste género:

$begin = 0;
$total = 50;
$i = 10;
$add = $i;
While($i <= $total){
  echo "$begin - $i <br/>";
  $begin = $i;
  $i += $add;
}
Link to comment
Share on other sites

tou agora com um problema.

tento embutir os filtros numa query de consulta à base de dados e a query apenas faz busca por um filtro.

basicamente, ele só faz a pesquisa por um fltro ou por marca ou por preços e nunca me faz pelos dois filtros.

pagina de filtro

if(isset($_POST['texto']))
{
if(isset($_POST['sel-marcas']))
{
 $marca_sel = $_POST['sel-marcas'];
 $ordenar_marcas = "AND Marca = '$marca_sel'";
}
if(isset($_POST['sel-precos']))
{
 $ordena_precos = $_POST['sel-precos'];
}
include 'pesq2.php';
}
elseif(isset($_POST['sel-marcas']))
{
if(isset($_POST['sel-precos']))
{
 $ordena_precos = $_POST['sel-precos'];
}
else
{
 $ordena_precos = $_SESSION['precos-sel'];
}
$marca_sel = $_POST['sel-marcas'];
$ordenar_marcas = "AND Marca = '$marca_sel'";
include 'pesq2.php';
}
elseif(isset($_POST['sel-precos']))
{
if(isset($_POST['sel-marcas']))
{
 $marca_sel = $_POST['sel-marcas'];
 $ordenar_marcas = "AND Marca = '$marca_sel'";
}
else
{
 $marca_sel = $_SESSION['marcas-sel'];
 $ordenar_marcas = "AND Marca = '$marca_sel'";
}
$ordena_precos = $_POST['sel-precos'];
include 'pesq2.php';
}

pesq2.php

$sql = "SELECT * FROM artigos WHERE (DescricaoPT LIKE '%".implode("%' AND DescricaoPT LIKE '%", $busca)."%' OR Referencia LIKE '%".implode("%' AND Referencia LIKE '%", $busca)."%') $ordenar_marcas $ordena_precos $ordenar";
Link to comment
Share on other sites

como faço isso?

tou farto de inserir codigo e nada

nao da erro nenhum. mostra todos os produtos que tenham caderno

nao da erro nenhum. mostra todos os produtos que tenham caderno

penso que o erro nao será ai. digo eu.a.

porque se eu escrever giz, ele faz a pesquisa toda direitinha.

se escrever caderno ele nem chega à sql de pesquisa.

acho que empanca aqui, mas nao consigo descobrir onde esta o erro

<form name="select-marcas" onsubmit="return verifica(this)" action="" method="post">
		<?php
  if(isset($_POST['texto']))
  {
$texto = trim($_POST['texto']);
$busca = explode(' ',$texto);
$sql_marca = "SELECT DISTINCT Marca FROM artigos WHERE DescricaoPT LIKE '%".implode("%' AND DescricaoPT LIKE '%", $busca)."%' OR Referencia LIKE '%".implode("%' AND Referencia LIKE '%", $busca)."%' ";
  }
  if(isset($texto2))
  {
$busca2 = explode(' ',$texto2);
$sql_marca = "SELECT DISTINCT Marca FROM artigos WHERE DescricaoPT LIKE '%".implode("%' AND DescricaoPT LIKE '%", $busca2)."%' OR Referencia LIKE '%".implode("%' AND Referencia LIKE '%", $busca2)."%' ";
  }
  $rs_marca = mysql_query($sql_marca,$ligar) or die(mysql_error());
  echo $sql_marca;
  ?>
<select name="sel-marcas" onchange="this.form.submit()">
			<?php
if(!empty($_POST['sel-marcas']))
{
 ?><option value="<?php echo $_POST['sel-marcas'] ?>"><?php echo $_POST['sel-marcas'] ?></option>
 <option value="Todas as Marcas">Todas as Marcas</option><?php
}
else
{
 ?><option value="">Seleccione a Marca</option>
 <option value="Todas as Marcas">Todas as Marcas</option><?php
}
while($ln_marca = mysql_fetch_array($rs_marca))
{
 ?><option value="<?php echo $ln_marca['Marca'] ?>"><?php echo $ln_marca['Marca'] ?></option><?php
}
?>
</select>
		</form>

se escrever giz o echo $sql_marca mostra a query na página.

se escrever caderno o echo $sql_marca nao mostra.

no phpmyadmin, funciona perfeitamente o sql.

so nao percebo porque é giz funciona e caderno nao.

Edited by JFernandesVR
Link to comment
Share on other sites

e é a mesma caixa de input?

é.

já descobri o erro.

o erro nao era aqui. era 2 linhas de código atras, onde faz o mesmo mas para preços. o problema era que como tenho uns 50 produtos que tem a palavra caderno mas nenhum tinha preço, parava na select box dos preços. pensei que era nesta parte das marcas porque a pagina mostrava a query dos preços e nao mostrava a query das marcas.

mas agradeço-te disponibilidade e a ajuda. sem a tua ajuda nao chegava lá.

um abraço

Edited by JFernandesVR
Link to comment
Share on other sites

agora descobri outra cena que queria mudar.

<?php
if(!empty($pesq) || !empty($ref) || !empty($mar) || !empty($fam) || !empty($subfam))
{
 $busca = explode(' ',$pesq);
 $sql_preco = "SELECT MAX(PrecoPVP) as maximo FROM artigos WHERE DescricaoPT LIKE '%".implode("%' AND DescricaoPT LIKE '%", $busca)."%' AND Referencia LIKE '%$ref%' AND Marca LIKE '%$mar%' AND FamiliaPT LIKE '%$fam%' AND SubfamiliaPT LIKE '%$subfam%' ";
 $rs_preco = mysql_query($sql_preco,$ligar) or die(mysql_error());
 $row = mysql_fetch_array($rs_preco);
 $preco_alto = $row['maximo'];
 ?>
 <select name="sel-precos" onchange="this.form.submit()">
 <?php
 if($preco_alto == 0)
 {
  ?><option value="Sem Precos">Sem Preços</option><?php
 }
 else
 {
  if(!empty($_POST['sel-precos']))
  {

   ?><option value="<?php echo $_POST['sel-precos'] ?>">Por preços</option>
   <option value="Todos os Precos">Todos os Precos</option><?php
  }
  else
  {
   ?><!--<option value="">Seleccione o Preço</option>-->
   <option value="Todos os Precos">Todos os Precos</option><?php
  }
  $begin = number_format(0,2);
  $total = number_format($preco_alto,2);

  $i = $preco_alto/5;
  $i = number_format($i,2);
  $add = number_format($i,2);
  while($i <= $total)
  {
   ?><option value="<?php echo "AND (PrecoPVP BETWEEN '$begin' AND '".number_format($i,2)."')" ?>"><?php echo "$begin €  a ".number_format($i,2)." €" ?></option><?php
   /* echo "$begin - $i <br/>"; */
   $begin = number_format($i,2);
   $i += number_format($add,2);
  }
 }
 ?>
 </select>
</form>
<?php
}

nesta linha queria que ele mostrasse os valores de $begin e $i que vem no post

<option value="<?php echo $_POST['sel-precos'] ?>">Por preços</option>
Edited by JFernandesVR
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.