Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite!
Estou utilizando o seguinte array para pegar os ID's desta consulta, armazenar em uma variável para ser utilizado em outra consulta. Esses ID's geram uma seqüência, por exemplo 1,5,2,7,10... ou retorna apenas um ID. Estou conseguindo gerar e separar com uma VIRGULA entre um ID e outro, mas no último registro a VIRGULA AINDA CONTINUA.
$pdo = conectar();
$sql = "SELECT idCliente FROM UsuarioClientes WHERE idUsuario = :IDUSUARIO";
$usuario = $pdo->prepare($sql);
$usuario->bindParam(':IDUSUARIO', $IDUSUARIO, PDO::PARAM_INT);
$usuario->execute();
$usu = $usuario->fetchAll(PDO::FETCH_ASSOC);
foreach ($usu as $row){
foreach ($row as $key => $IDCLI){
print "$IDCLI,";
}
}
Problema: como remover apenas a ÚLTIMA virgula para que a próxima consulta, que utiliza o WHERE CLI.IS_CLI in (1,74) order by IS_CLI receba corretamente?
O resultado do array acima será utilizado pela consulta abaixo:
$sql = "SELECT CLI.IS_CLI AS CODCLI, CLI.NM_CLI_RED AS NOMCLI FROM T_CLI CLI WITH (NOLOCK) WHERE CLI.IS_CLI in (:IDCLI) ORDER BY CLI.NM_CLI_RED ";
$cliente = $pdo->prepare($sql);
$cliente->bindParam(':IDCLI', $IDCLI, PDO::PARAM_INT);
$cliente->execute();
$cli = $cliente->fetchAll(PDO::FETCH_ASSOC);Mau,
Fiz da seguinte forma:
for( $i = 1; $i < $totlin; $i++ ){
foreach ($usu as $row){
foreach ($row as $key => $IDCLI){
print "$IDCLI,";
}
}
}
O resultado é: 1,74 , justamente os dois registros. Mas continua gerando como antes e a VIRGULA ainda continua no final.
o array gerado é:
array (size=2)
0 =>
array (size=1)
'idCliente' => string '1' *(length=1)*
1 =>
array *(size=1)*
'idCliente' => string '74' *(length=2)*Se você têm um array e precisa gerar uma string dele use o implode;
Se não resolver, antes de enviar para a consulta (depois da string formada), use
substr($string,0,-1);
Isso recorta a string começando no caractere zero e encerrando um caractere antes do final.
Playerbr,
Consegui da seguinte forma:
$pdo = conectar();
$sql = "SELECT idCliente FROM UsuarioClientes WHERE idUsuario = :IDUSUARIO";
$usuario = $pdo->prepare($sql);
$usuario->bindParam(':IDUSUARIO', $IDUSUARIO, PDO::PARAM_INT);
$usuario->execute();
$usu = $usuario->fetchAll(PDO::FETCH_ASSOC);
$valores = array_map('array_pop', $usu);
$gpclientes = implode(',', $valores);
Assim o resultado ficou 1,74
E o array assim:
array (size=2)
0 =>
array (size=1)
'idCliente' => string '1' *(length=1)*
1 =>
array *(size=1)*
'idCliente' => string '74' *(length=2)*
Obrigado pela dica!
Faça um count no array pra saber o total de itens, depois coloca um contador dentro do foreach, depois coloca um if pra saber quando for o ultimo item(if($count == $totalDeItens)) Entendeu?