Select selecionando registros com valor entre delimatadores ** Resolvido **

Preciso da ajuda dos colegas.

Em uma tabela tem um campo (Produtos) com valores entre delimitadores:
Campo: Produtos
Valores do campo: 1;3;5

Preciso criar um select que recebe um valor em uma variável e selecione os registros que no campo “Produto” tenha o valor passado.

Obrigado

Você seleciona vários produtos ai passa os valores na variavel dessa maneira (1;3;5)?

Se for, faz assim antes de passar o valor
$troca = str_replace(’;’,’,’,{Produto});
Depois se passa o valor

No select faz WHERE Campo in (variavel)

Se for do jeito que pensei que você quer dessa maneira funciona.

Obrigado Michel,

A variável só contem um valor, por exemplo, “13”, o campo é que pode possuir vários valores com delimitador: 1;3;5;13;15.

Preciso montar um Select com a cláusula where filtrando esses registros.

Grato

Ainda bem que serviu.

Caso precise de mais alguma coisa só fala.

Michel,

Está dando o erro:

ERRO

Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘13’’ at line 1
select count(*) from fornecedores where produtos_oferecidos in ‘13’

A clausula Where:

WHERE
produtos_oferecidos in ‘13’

Mais se coloco entre “()” a variavel tem que estar desse jeito:

where Campo in (variavel)

Se você estiver passando o valor para fora do SC.

Passa para um controle primeiro cria um campo com qualquer nome mesmo não vai usar, depois em onload você faz

$v=[variavel];
header(‘location: …/file/doc/documento.php?vcod=’.$v);

No documento vc coloca
$z = $_GET[‘vcod’];
e faz where campo in ($z)

Michel,

Fiz as devidas alterações mais so funciona se o valor da variavel for primeiro do campo com delimitador, por exemplo:

Variável = 1
Campo = 1,3,5,8

Assim não encontra o registro

Variável = 5
Campo = 1,3,5,8

Perdão não consegui acompanhar o raciocínio.

Você precisa somente do valor 5 na variavel 5?

Vamos por parte.

O bco de dados é Mysql;

O campo ‘produtos_oferecidos’ é um campo ‘Text’ da tabela ‘fornecedores’ e é preenchido com valores utilizando delimitador, estava utilizando ‘;’ mas troquei para ‘,’;

O valores do campo ‘produtos_oferecidos’ corresponde ao Id da ‘tabela de produtos’;

Por que preciso filtrar pelo valor da variável?

O usuário seleciona um produto e que consultar todos os fornecedores que o oferecem.

Pego o id do produto selecionado e coloco em uma variável e preciso selecionar que fornecedores contém este valor (id) no campo produtos oferecidos.

Espero ter esclarecido melhor.

Obrigado

Entendi!

Putz agora complico é que não sei como você trabalha mais eu não faria a tabela de fornecedores desse jeito.

Mais enfim vou pensar um pouquinho aqui e já falo algo.

Obrigado.

Fico no aguardo.

Michel, obrigado pela ajuda.

Mano foi mal só agora deu um tempo de vim aqui no Fórum.

Cara usa LIKE
where Campo LIKE ‘%[variavel]%’

Nem vi que já tinha resolvido. rs

Conseguiu como?

Formatei os valores dos campos para serem preechidos com zeros a esquerda e utilizei o LIKE.

O tamano do campo é ‘3’ e só poderia utilizar o LIKE utilizando a artimanha acima, porque, se o like fosse %1% iria filtrar registros com 1,11,14,100, etc…

Agora os campos ficam 001,011,014,100, etc… e o like por exemplo %014%.

Obrigado