Ir ao conteúdo

Posts recomendados

Postado

Galera to tiltando, to com problema de tratamento de dados de ARRAY e SELECT no BD... tipo como posso abrir o Array tirar os dados e encaixar no SELECT COM IN() ? Com o laço FOR atualmente ele executa as 2x (2 registros no BD) e fica assim: AND UA.USU_CODIGO IN (1), AND UA.USU_CODIGO IN (2). Eu precisava que ficasse AND UA.USU_CODIGO IN (1,2)... Testei usar o explode, implode, várias coisas, mas não sei como posso fazer... valeu!!!

 

/* Chamada função*/
$regEqpLid2 = $perAtv->getLiderEquipes2($id, $equipe);
$lengthEqpLid2 = count($regEqpLid2);

/* SQL */
public function getLiderEquipes2($id, $eqp) {	
	$retorno = array();
	$cont = 0;

	$sql = "SELECT DISTINCT EQP_USUARIO
		FROM EQUIPES
		WHERE EQP_CODIGO = ".$eqp;

	$exc = new OracleRecordset($this->conexao->execute($sql));
	echo "@@@@@".$sql2;

    while($exc->fetch()) {
        $eqpbean = new EquipesBean();		
        $eqpbean->setEqpParticipantes($exc->getResult('EQP_USUARIO'));
        $retorno[$cont] = $eqpbean;
        $cont++;
    }
  unset($exc);
  return $retorno;
}

/*Variavel $participantes sendo tratada*/
$participantes = serialize($regEqpLid2);
$participantes = urlencode($participantes);

/**** PROBLEMA COMO DEVO TRATAR ESSE ARRAY PRA CONSEGUIR FAZER A CONSULTA NO BD****/
if($_REQUEST['filtro']){
$received = $_REQUEST['filtro'];//decodifica o valor passado pelo link
$received = stripslashes($received);//limpa a string de  antes de "
$received = unserialize($received);//transforma a string em array
print_r($received);//imprime o array

$lengthEqpLid3 = count($received);
for($h = 0; $h < $lengthEqpLid3; $h++){
	//Mostra os participantes
    $participantes = $received[$h]->getEqpParticipantes();
  	echo ">>>".$participantes;
  	$and .= " AND UA.USU_CODIGO IN (".$participantes.") ";
  }
}
  • Solução
Postado

Pelo que eu entendi, creio que essa alteração no final do seu código corrija seu problema:

$participantes = "";
for($h = 0; $h < $lengthEqpLid3; $h++)                    
	$participantes .= $received[$h]->getEqpParticipantes().",";
  
$participantes = substr($participantes, 0, strlen($participantes)-1);
$and .= " AND UA.USU_CODIGO IN (".$participantes.") ";

 

  • Curtir 1
Postado
9 horas atrás, iHollyZinhO disse:

Pelo que eu entendi, creio que essa alteração no final do seu código corrija seu problema:


$participantes = "";
for($h = 0; $h < $lengthEqpLid3; $h++)                    
	$participantes .= $received[$h]->getEqpParticipantes().",";
  
$participantes = substr($participantes, 0, strlen($participantes)-1);
$and .= " AND UA.USU_CODIGO IN (".$participantes.") ";

 

Cara muito obrigado!!! Fiz alguns pequenos ajustes pra funcionar:

Tive que passar o resultado pra outra variavel $participantes2 e chamar a instrução SQL fora do laço FOR!

$lengthEqpLid3 = count($received);
for($h = 0; $h < $lengthEqpLid3; $h++){
	$participantes .= $received[$h]->getEqpParticipantes().",";
	$participantes2 = substr($participantes, 0, strlen($participantes)-1);
}
$and .= " AND UA.USU_CODIGO IN (".$participantes2.") ";

 

  • Curtir 2

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!