Ir para conteúdo

Arquivado

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

Diego Medeiros

Verificar resultado de explode(); sem loop!

Recommended Posts

Olá amigos!

 

Para evitar entrar em parafuso, peço ajuda aos universitários.. ^^

 

Em meu sistema, tenho uma lista de produtos especiais que só podem ser 'comprados' uma vez.

Esses produtos estão na seguinte array:

 

$lista = array(152,153,154,155,156,157,158);//referem-se ao campo produto_id da tabela 'produtos'

 

Na tabela 'usuarios' tenho um campo chamado 'especiais_comprados' onde eu relaciono quais destes produtos especiais foram 'comprados' ou estão 'inativos' para ele. Obs.: são gravados no campo divididos por vírgula. Ex:

 

154,155 //produtos inativos para o 'joão'

 

Pois bem, necessito fazer um SELECT de todos os produtos da tabela 'produtos' menos os que estão gravados no campo 'especiais_comprados' da tabela 'usuarios'.

Tentei da seguinte forma:

 

$inativo."' ORDER BY RAND() LIMIT 1", "produtos"); _linenums:0'>$lista = array(152,153,154,155,156,157,158);$inativo = explode(",",$usuariosrow["produtos_inativos"]);$produtosquery = acaoquery("SELECT * FROM {{tabela}} WHERE id <>'".[color= #FF0000]$inativo[/color]."' ORDER BY RAND() LIMIT 1", "produtos");
Eu sei que está faltando percorrer a matriz de $inativo, mas como neste caso? Já tentei um loop FOR mas assim ele verifica apenas um valor de 'especiais_comprados', não verificando todos.

 

Tentei também fazer esta verificação abaixo da query (não dentro dela), mas caio no mesmo problema de verificar a array sem o loop.

 

Alguém teria alguma idéia?

Grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá hinom,

 

Consegui resolver meu problema!

Obrigado pela resposta, realmente eu não tinha pensando no NOT IN!

 

A função implode não se aplica porque o valor de 'especiais_comprados' ($usuariosrow["produtos_inativos"]) não é uma array, é apenas um registro com valores separados por vírgula.

 

Assim a solução ficou:

 

$inativos = $usuariosrow["produtos_inativos"]; //152,153,154,$proibidos = substr($inativos,0,strlen($inativos)-1);$produtosquery = acaoquery("SELECT * FROM {{tabela}} WHERE id NOT IN ($proibidos) ORDER BY RAND() LIMIT 1", "produtos");

Obrigado novamente! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

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.