Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
/applications/core/interface/imageproxy/imageproxy.php?img=http://catalogo.lojasguaibim.com.br/novo/images/sub.png&key=20c658ada1210bdd6e20d9cb2543363c21d2fc6a530eb8e3fe0bd4a76071c702" alt="sub.png" />
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?
Já trabalhou com $_GET? Ele é um array.
Já fez uma query dinâmica? Basta utilizar os valores da URL.
Sim, mas não enviando várias variáveis para o mesmo GET, tipo " categoria=123|432|546 "
Você não precisa fazer idêntico, faça como você sabe.
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
Aí é só tratar, nesse caso você pode utilizar explode() para separar os valores em um array.
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
Os valores sempre estarão na URL, basta você resgatar, concatenar uma nova variável e redirecionar o usuário.
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 ;~Você vai ter que tornar o SQL e a URL dinâmicos, adicionando apenas os campos que existirem, logo você tem que verificar a existência de cada um.
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.
>
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.
[...] 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.
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' )
Use o .explode() e monte a query de acordo com os valores que existirem.
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) ";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) ";>
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.
Galera, reabri esse tópico porque estou com uma grande dúvida rs
Estrou criando um sistema de filtros avançados para ecommerce, mas como faço o GET da faixa de valores de produtos:
Exemplo: produtos com valores entre R$49,50 a R$ 379,40 e R$ 379, 41 até R$ 709,30
Variáveis na URL
http://servidor/busca.php?precos=379.41:709.3|49.5:379.4
Como posso enviar "379.41:709.3|49.5:379.4" para o select?
>
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
Você pode sim utilizar mais de um dado por link, exemplo:
link: index.php?id=123&nome=backon
echo $_GET['id']; //Saída 123
echo $_GET['nome']; //Saída backon
Você também pode trabalhar com Sessões para armazenar as pesquisar (y)
edit
-----------------
Só para esclarecer, a busca do submarino é feito em php juntamente com o ajax. Aquele "quadrado" que abre ao digitar a palavra é consequência do script que foi feito em Ajax.
>
Galera, reabri esse tópico porque estou com uma grande dúvida rs
Estrou criando um sistema de filtros avançados para ecommerce, mas como faço o GET da faixa de valores de produtos:
Exemplo: produtos com valores entre R$49,50 a R$ 379,40 e R$ 379, 41 até R$ 709,30
Variáveis na URL
http://servidor/busca.php?precos=379.41:709.3|49.5:379.4
Como posso enviar "379.41:709.3|49.5:379.4" para o select?
mysql set double 10,2
Sei que preciso usar o between, o que preciso é "explodir" e "implodir" esses dados da forma correta para entrar no between.
Galera.. alguém sabe como acumular GET na URL?
Exemplo: [=27:100|109:299&common_filter%5BAtributos%5D=Usb|Portátil]](http://busca.submarino.com.br/busca.php?q=samsung&range_filter%5BPre%C3%A7o)[://busca.submarino.com.br/busca.php?q=samsung&range_filter[Preço]=27:100|109:299&common_filter%5BAtributos%5D=Usb|Portátil](http://busca.submarino.com.br/busca.php?q=samsung&range_filter%5BPre%C3%A7o%5D=27:100%7C109:299&common_filter%5BAtributos%5D=Usb%7CPort%C3%A1til)
Antes de eu postar o que estou pensando, você estaria confortável em trabalhar com PDO?
Consegui passar as informações bia GET, agora preciso bolar uma forma de marcar no checkbox o que está na URL.
/applications/core/interface/imageproxy/imageproxy.php?img=http://catalogo.lojasguaibim.com.br/filtros.png&key=6b62c1fc71f0d80540b0167109afffb316f8a4eaf34a2a82deb4f3ede2c4e722" alt="filtros.png" />
<?php
include "sistema/funcoes/conexao.php";
include "sistema/funcoes/funcoes.php";
$inputString = "samsung";
$subgruposb = $_GET['common_filter']['subgrupo'];
$especificab = $_GET['common_filter']['especifica'];
print "subgrupob: ".$subgruposb."<br>";
print "especificab: ".$especificab."<p>";
print "explode/implode para select<br>";
$subgruposc = explode("|",$subgruposb);
$especificac = explode("|",$especificab);
$subgruposd = implode(",",$subgruposc);
$especificad = implode(",",$especificac);
print "subgrupod: ".$subgruposd."<br>";
print "especificad: ".$especificad."<p>";
$sql = "select * from ti_produtos where cd_subgrupo in('".$subgruposd."') and ds_espec in('".$especificad."') ";
print $sql;
?>
<p>
<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]);
if(isset($subgruposb)):
$conds = "|".$subgruposb;
endif;
?>
<li>
<a href="teste_busca.php?inputString=<?=$inputString?>&common_filter[subgrupo]=<?=$subgrupos[cd_subgrupo].$conds?>">
<IMG SRC="images/check_filtro.png" BORDER="0" ALT="">
<span><?=ds_subgrupo($subgrupos[cd_subgrupo])?> (<?=$qtdests?>) <?=" - "."cod. ".$subgrupos[cd_subgrupo]?></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'];
if(isset($especificab)):
$condes = "|".$especificab;
endif;
?>
<li>
<a href="teste_busca.php?inputString=<?=$inputString?>&common_filter[subgrupo]=<?=$subgruposb?>&common_filter[especifica]=<?=$especifica[cd_grupo].$condes?>">
<IMG SRC="images/check_filtro.png" BORDER="0" ALT="">
<span><?=$ds_espec?> (<?=$qtdestes?>)</span></a>
</li>
<?endwhile;?>
</ul>
</li>
</ul>
</div>
</div>
Tá tudo na URL, passados por $_GET.