Ontem eu vi a lista de produtos da Bling, eu digitei 417, e ele me retornou o produto correspondente.
O código que eu fiz busca o produto por descrição. Para procurar em outros campos, eu inventei um código baseado no primeiro caractere, tipo @417, só que ele retorna o produto do código 417 bem como o 1417 e outros produtos que contenham o 417 na descrição ou no código de barra.
Fiquei imaginando se é possível priorizar a busca pelo código do produto, e a Gemini me passou a instrução INSTR, assim:
<?php
// $produtos=$this->Conexao->select("* from tbprod where// concat_ws(',',codprod,un,prod,codbar,loc,emb,cf,codforn) like '%$busca%'// order by prod");
$produtos=$this->Conexao->select("* FROM tbprod WHERE INSTR(concat_ws(',', codprod, prod, codbar),
'$busca') > 0
ORDER BY INSTR(concat_ws(',', codprod, prod, codbar), '$busca'), prod");
O código da Gemini é engenhoso, ele realmente prioriza o código que foi digitado, mas o resultado da Bling é fascinante. Ele só retorna o produto do código correspondente e não mostra mais nada.
Desconfio que o código da Bling seja assim:
1. pegar o que foi digitado no <input> e guarda em $busca.
2. se $busca é numérico e o seu valor for menor igual ao maior código dos produtos, então execute o comando "select * from produtos where codigoProduto = $busca".
3. se $busca é numérico e o seu valor for maior que o maior código dos produtos, então execute o comando "select * from produtos where codigoBarra = $busca".
4. se $busca não é numérico, então execute o comando "select * from produtos where descricaoProduto like '%busca%'".
O que mais me impressionou no motor de busca da Bling é o uso parcial na busca pela descrição do produto. Vamos supor que temos algo do tipo "cadeado trancatudo 20mm", eu posso buscar o produto na Bling usando como critério escrevendo assim "cadeado 20mm". Nesse caso o verbo like ou o INSTR não retornam coisa alguma.
Alguém tem alguma ideia de como é possível consultar um produto usando partes da descrição sem a necessidade dessas partes estarem na mesma posição?
Pergunta
Frank K Hosaka
Ontem eu vi a lista de produtos da Bling, eu digitei 417, e ele me retornou o produto correspondente.
O código que eu fiz busca o produto por descrição. Para procurar em outros campos, eu inventei um código baseado no primeiro caractere, tipo @417, só que ele retorna o produto do código 417 bem como o 1417 e outros produtos que contenham o 417 na descrição ou no código de barra.
Fiquei imaginando se é possível priorizar a busca pelo código do produto, e a Gemini me passou a instrução INSTR, assim:
O código da Gemini é engenhoso, ele realmente prioriza o código que foi digitado, mas o resultado da Bling é fascinante. Ele só retorna o produto do código correspondente e não mostra mais nada.
Desconfio que o código da Bling seja assim:
1. pegar o que foi digitado no <input> e guarda em $busca.
Editado por Frank K Hosaka2. se $busca é numérico e o seu valor for menor igual ao maior código dos produtos, então execute o comando "select * from produtos where codigoProduto = $busca".
3. se $busca é numérico e o seu valor for maior que o maior código dos produtos, então execute o comando "select * from produtos where codigoBarra = $busca".
4. se $busca não é numérico, então execute o comando "select * from produtos where descricaoProduto like '%busca%'".
O que mais me impressionou no motor de busca da Bling é o uso parcial na busca pela descrição do produto. Vamos supor que temos algo do tipo "cadeado trancatudo 20mm", eu posso buscar o produto na Bling usando como critério escrevendo assim "cadeado 20mm". Nesse caso o verbo like ou o INSTR não retornam coisa alguma.
Alguém tem alguma ideia de como é possível consultar um produto usando partes da descrição sem a necessidade dessas partes estarem na mesma posição?
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.