Ir ao conteúdo
  • Cadastre-se

Recommended Posts

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.") ";
  }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×