Ir para conteúdo

POWERED BY:

Arquivado

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

Loko da Web

[Resolvido] WHERE com varios registros no mesmo campo

Recommended Posts

Boa noite !

 

Estou desenvolvendo um sistema d busca... e o usuario tem a opcao de selecionar varios registros usando o checkbox. Entao tratei o o checkbox como array

 

<input type="checkbox" name="teste[]" value="geladeira" />
<input type="checkbox" name="teste[]" value="panela" />
<input type="checkbox" name="teste[]" value="mesa" />

Caso o user selecione a duas opções, sera filtrado e imprimido o a busca d acordo com a selecao do form.

 

Entao ai q esta o problema, nao consegui imprimir qdo tem mais de uma valor,... tentei utilizar IN, FOR. Aparece tdo em branco.

 

Tentei dessa forma :

 

$teste = implode( ',', $_GET['teste'] );

$sql = "SELECT * FROM tabela WHERE produto IN ('$teste')";

$sql = "SELECT * FROM tabela WHERE produto IN ($teste)";

$teste = $_GET['teste'] ;

foreach($teste as $item){			
$sql .=	"AND produto = '$item'";}

Tentei colocar direto tbem...

 

$sql = "SELECT * FROM tabela WHERE produto IN ('panela,mesa')";

E so fica tdo em branco, e ai pessoal como resolver isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como estão gravados os dados no banco?

 

Carlos Eduardo

 

Dessa maneira

 

tabela

 

id produto

1 geladeira

2 panela

3 mesa

Tente isso:

$where;
foreach ($teste as $value)
{
 $where .= "produto = '".value."' AND ";
}
echo substr($where,0,strlen($where)-3);

Abraços...

 

 

Nao deu certo, ficou branco tbem

 

so apareceu isso :

 

Resource id

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que eu saiba não dá pra enviar por GET campos de formulário que são arrays, somente com POST

 

Tenta colocar

print_r($_GET);

E posta o que aparece

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso:

$where;
foreach ($teste as $value)
{
    $where .= "produto = '".value."' AND ";
}
echo substr($where,0,strlen($where)-3);

Abraços...

 

Desculpa, mas santa gambiarra hein?

 

$array = array( 'one', 'two', 'three' );

printf( 'product = "%s"', implode( '" AND product = "', $array ) );

// product = "one" AND product = "two" AND product = "three"

;)

 

Resource id
Em que exatamente você está dando echo?

 

Você não deve ver um Resource, e sim usá-lo com alguma outra função que receba um dado desse tipo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente isso:

$where;
foreach ($teste as $value)
{
    $where .= "produto = '".value."' AND ";
}
echo substr($where,0,strlen($where)-3);

Abraços...

 

POG, rs!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na clausula IN, o correto seria:

 

$sql = "SELECT * FROM tabela WHERE produto IN ('panela','mesa')";

Com AND não vai dar certo, pelo que entendi da sua estrutura sempre vai retornar conjunto de resultado vazio, se for este o caso, você tem que usar OR.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, fiz os testes e vi q ta faltando o acento simples:

 

Recupero o valor vindo do form e dou um implode para colocar uma virgula

 

$teste = implode(',', $_GET['teste']);

Porem e imprimido dessa maneira:

 

panela,mesa

E preciso q alem de colocar a virgula, coloque o acentro simples, deve ficar dessa maneira:

 

'panela','mesa'

Coloquei a maneira acima direto no WHERE

 

produto IN ('panela','mesa')

Imprimiu os resultados,...

 

Entao, como faco para acrescentar o acento simples para cada array ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já viu o que eu postei? A partir dele você consegue fazer sozinho.

 

implode() faz muito mais do que apenas uniros elementos de um array...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já viu o que eu postei? A partir dele você consegue fazer sozinho.

 

implode() faz muito mais do que apenas uniros elementos de um array...

 

Vlw Imaggens !

 

Consegui fazer dessa maneira:

 

$teste = "'".implode("','",$_GET['teste'])."'";

produto IN ($teste)

Sera imprimido dessa maneira

produto IN ('panela','mesa')

Mas, agora tem outro problema... a paginacao !!!

 

na url fica dessa maneira:

 

&teste[]=panela&teste[]=mesa

 

Como faco pra colocar na paginacao ????

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.