Ir para o conteúdo
JFernandesVR

[Resolvido] Select List

Mensagens Recomendadas

JFernandesVR    0
JFernandesVR

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

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

a minha duvida é fazer isso

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
bioshock    169
bioshock

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;
}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

ja fiz isso e montei numa select box. a select box funciona porreiro.

como preencho o campo value das varias options? <option value=""><?php echo "$begin € a $i €"; ?></option>?

como faço a query de consulta na base de dados com esses valores?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

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";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

ja resolvi.

mas agora pareceu me outro problema.

a query bloqueia quando insiro certas palavras.

por exemplo: giz ou pasta funciona. se puser caderno bloqueia.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fil79    5
fil79

ja resolvi.

mas agora pareceu me outro problema.

a query bloqueia quando insiro certas palavras.

por exemplo: giz ou pasta funciona. se puser caderno bloqueia.

estranho. Qual o erro devolvido pelo Mysql?


MCITP-MCTS-MCP

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

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.

Editado por JFernandesVR

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

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

Editado por JFernandesVR

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
JFernandesVR    0
JFernandesVR

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>

Editado por JFernandesVR

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.