Ir para conteúdo

POWERED BY:

Arquivado

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

cadmiel

[Resolvido] Clausula where usando array

Recommended Posts

Boa tarde

 

Meu problema é o seguinte

 

tenho um atributo do tipo varchar na minha entidade que armazena exemplo 3,5,2,6

fiz um select nessa entidade peguei esse atributo dei um explode depois tirei as virgulas

e agora quero pegar cada numero e comparar esses numeros com os registro que estão numa

outra entidade ja consegue fazer muita coisa meu problema está em pegar esses registros

é claro sem as virgulas(isso ja consegue) so falta comprar com os registros da outra entidade

isso que não estou conseguindo

segue abaixo o codigo para você's verem o que eu já consegue

 

$as = explode(',',$row_orcamento['idprod']);

$c = count($as)."<br>"."<br>"."<br>"."<br>"."<br>";

$c=$c-1;

 

for($i = 0; $i < $c; $i ++) )

 

$as[$i]."<br>";

 

mysql_select_db($database_conexao, $conexao);

//aqui está meu problema no where ele não está repetindo para todos os registros

$query_produto = "SELECT id, codigo, referencia, caixa, descricao, `data` FROM tbproduto where id='$as[$i]'";

$produto = mysql_query($query_produto, $conexao) or die(mysql_error());

$row_produto = mysql_fetch_assoc($produto);

 

 

Não sei se deu para entender.

desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde

 

Meu problema é o seguinte

 

tenho um atributo do tipo varchar na minha entidade que armazena exemplo 3,5,2,6

fiz um select nessa entidade peguei esse atributo dei um explode depois tirei as virgulas

e agora quero pegar cada numero e comparar esses numeros com os registro que estão numa

outra entidade ja consegue fazer muita coisa meu problema está em pegar esses registros

é claro sem as virgulas(isso ja consegue) so falta comprar com os registros da outra entidade

isso que não estou conseguindo

segue abaixo o codigo para você's verem o que eu já consegue

 

$as = explode(',',$row_orcamento['idprod']);

$c = count($as)."<br>"."<br>"."<br>"."<br>"."<br>";

$c=$c-1;

 

for($i = 0; $i < $c; $i ++) )

 

$as[$i]."<br>";

 

mysql_select_db($database_conexao, $conexao);

//aqui está meu problema no where ele não está repetindo para todos os registros

$query_produto = "SELECT id, codigo, referencia, caixa, descricao, `data` FROM tbproduto where id='$as[$i]'";

$produto = mysql_query($query_produto, $conexao) or die(mysql_error());

$row_produto = mysql_fetch_assoc($produto);

 

 

Não sei se deu para entender.

desde já agradeço.

 

ok, vamos la:

para montar esta clausula use uma repetição no seu array.

 

$query_produto = "SELECT id, codigo, referencia, caixa, descricao, `data` FROM tbproduto where ";
$cont = 0;
foreach ($as as $id){
 if ($cont != 0)
   $query_produto .= "AND "; //pode colocar um OR, depende do seu caso
 $query_produto .= "id = '{$id}'";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

sugiro executar a query uma única vez utilizando a função IN() do SQL

 

 

//$row_orcamento['idprod'] = '1,3,6,10,30'; // para debug apenas..


$query_produto = 'SELECT id, codigo, referencia, caixa, descricao, `data` FROM tbproduto WHERE id IN(' . $row_orcamento['idprod'] . ');';
// não precisa usar o explode e tampouco gerar várias querys dentro de um laço de repetição (while, for..)..


// echo $query_produto; exit; // para debug apenas..


$produto = mysql_query($query_produto, $conexao) or die(mysql_error());
$row_produto = mysql_fetch_assoc($produto);

 

 

obviamente deve fazer tratamento da entrada, principalmente se provier de um usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, vamos la:

para montar esta clausula use uma repetição no seu array.

 

$query_produto = "SELECT id, codigo, referencia, caixa, descricao, `data` FROM tbproduto where ";
$cont = 0;
foreach ($as as $id){
 if ($cont != 0)
   $query_produto .= "AND "; //pode colocar um OR, depende do seu caso
 $query_produto .= "id = '{$id}'";
}

 

Vlw deu certo estava esquecendo das chaves...rs

valeu mesmo cara.

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.