Ir para conteúdo

POWERED BY:

Arquivado

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

DannyND

Filtros em busca de ecommerce

Recommended Posts

Fala galera.

Alguém tem ideia de como fazer uma busca tipo a do submarino/netshoes?
Onde o que é selecionado fica em um pequeno quadro, com possibilidade de limpar e/ou selecionar outras opções de uma mesma categoria?

 

sub.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá tudo na URL, passados por $_GET.

 

Certo, mas e para armazenar como faço? Coloco em um array? E depois para colocar tudo isso na query da pesquisa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não precisa fazer idêntico, faça como você sabe.

 

Esse é o problema rsrss..eu só seu fazer passando uma variável por parâmetro rsrs

 

exemplo: busca.php?chp=samsung&cd_subgrupo=4213

 

exemplo de como preciso: busca.php?chp=samsung&cd_subgrupo=4213|4567|12334&cd_cor=vermelha|preta|cinza

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí é só tratar, nesse caso você pode utilizar explode() para separar os valores em um array.

 

Você não entendeu rsrsrs

Eu só consigo enviar uma variavel pelo link .. não consigo mandar uma, guardar e depois mandar outra rsrs.. como faço isso? tá osso

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz um programinha teste.

<?php
include "sistema/funcoes/conexao.php";
include "sistema/funcoes/funcoes.php";
?>


<div id="geral">
	<div class="coluna_1">
        <!--FILTOS-->
    	<span class="titulo_menu">Filtros</span>
        
        <ul id="menu_int">
        	<li>Sub-Grupos
			<?
			#retorna subgrupos
			conecta();
			$querys = "SELECT p.cd_produto,p.cd_subgrupo FROM ti_produtos as p,ti_subgrupos as s where p.id_status='A' and p.venda_proibida='N' and p.cd_grupo!='0' and p.cd_subgrupo=s.cd_subgrupo and p.nm_produto like '%samsung%' group by p.cd_subgrupo";
			$chamadas = mysql_query($querys);
			?>
            	<form>
            	<ul class="filto">
				<?
				while($subgrupos = mysql_fetch_array($chamadas)):
					$qtdests = est_subgrupo($subgrupos[cd_subgrupo]);
				?>
                	<li>
						<a href="teste_busca.php?chp=<?=$chp?>&subgrupo[]=<?=$subgrupos[cd_subgrupo]?>">
							<IMG SRC="images/check_filtro.png" BORDER="0" ALT="">
						<span><?=ds_subgrupo($subgrupos[cd_subgrupo])?> (<?=$qtdests?>)</span></a>
					</li>

				<?endwhile;?>
                </ul>
                </form>
            </li>
        </ul>

        <ul id="menu_int">
        	<li>Especificações
			<?
			#retorna especificações
			$queryes = "SELECT p.cd_itprod,p.cd_grupo,p.ds_espec FROM ti_produtos as p,ti_grupos as es where p.id_status='A' and p.venda_proibida='N' and p.cd_grupo!='0' and p.cd_grupo=es.cd_grupo and p.nm_produto like '%samsung%'  group by p.cd_grupo";
			$chamadaes = mysql_query($queryes);
			?>
            	<ul  class="filto">
				<?
				while($especifica = mysql_fetch_array($chamadaes)):
					$qtdestes = est_especifica($especifica[cd_grupo]);
					$ds_espec = $especifica['ds_espec'];
				?>				 
                	<li>
						<a href="teste_busca.php?chp=<?=$chp?>&subgrupo[]=<?=$categorias?>&especifica[]=<?=$especifica[cd_grupo]?>">
							<IMG SRC="images/check_filtro.png" BORDER="0" ALT="">
						<span><?=$ds_espec?> (<?=$qtdestes?>)</span></a>
					</li>
				<?endwhile;?>
                </ul>
            </li>
        </ul>

	</div>
</div>

Dessa forma só consigo enviar uma variável por vez.. me dá uma luz por favor ;~

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazer envio dos dados e atualização dos campos por ajax não seria uma boa ?!
Dai não precisa atualizar tela e os dados não ficam visíveis na URL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fazer envio dos dados e atualização dos campos por ajax não seria uma boa ?!

Dai não precisa atualizar tela e os dados não ficam visíveis na URL.

 

Boa também, mas não sei mexer com ajax.. estou entrando agora a trabalhar com front-end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

[...] e os dados não ficam visíveis na URL.

 

Dessa maneira a busca deixa de ser rastreável, você não consegue mandar o link para alguém poder ver o mesmo conteúdo sem ter que preencher toda a busca novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tem problema aparecer na URL e nem dar refresh na tela, contanto que o usuário possa selecionar mais de uma opção em cada categoria.



Acho que consegui galera.. daqui a pouco respondo o post novamente =D



Consegui concatenar as requisições, mas agora tenho que encaixar o explode dentro da query de pesquisa:

 

subgrupo: 4374|4213|4212

Array ( [0] => 4374 [1] => 4213 [2] => 4212 ) 

SELECT p.cd_itprod,p.vl_venda,p.cd_linha,p.cd_familia,p.cd_grupo,p.cd_subgrupo,p.cd_fabr,p.voltagem,p.cd_cor FROM ti_produtos as p, ti_linhas as l where p.id_status='A' and p.venda_proibida='N' and p.cd_grupo!='0' and (p.nm_produto like '%samsung%' or p.cd_produto like '%samsung%' or p.cd_itprod like '%samsung%') and p.cd_subgrupo='4374|4213|4212' and p.cd_linha=l.cd_linha group by p.cd_linha ORDER BY (CASE WHEN p.nr_estoque > 0 THEN 1 ELSE 0 END) DESC, p.nr_estoque DESC

 

Como faço para quebrar o array:

 

Mudar

and p.cd_subgrupo='4374|4213|4212'

 

Para

and ( p.cd_subgrupo='4374' or p. cd_subgrupo='4213' or p.cd_subgrupo='4212' )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usar o explode() para separar tá certo.. de boa.. o problema é justamente montar a query, pois os valores do array tem que estar dentro de um "or", ex:

 

$query = "select * from ti_produtos where id_status='A' and (cd_subgrupo=1234 or cd_subgrupo=4321) ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se entedi bem.. mas em vez dos "or" vc pode usar IN;

usando seu último ex:

"select * from ti_produtos where id_status='A' and cd_subgrupo in(1234,4321) ";

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

não sei se entedi bem.. mas em vez dos "or" vc pode usar IN;

usando seu último ex:

"select * from ti_produtos where id_status='A' and cd_subgrupo in(1234,4321) ";

 

Isso mesmo, eu já estava testando com o in rs.. valeu

 

Isso mesmo, eu já estava testando com o in rs.. valeu

 

Bom galera.. acho que está resolvido o> ..valeu pela ajuda de todos.

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.