Concatenação em um echo

Bom dia, estou com o seguinte problema:

sc_select(email,“SELECT email FROM inscritos WHERE turma = ‘[turma]’ ORDER BY email”);
echo $email . ", ";

mas o resultado são todos os email junto e a vígula no final da linha.

o que devo fazer para que os email sejam separados pela vírgula ?

Bom dia! Dá uma estudada na macro sc_select.

Já li tudo a respeito, tentei o sc_lookup e sem sucesso, fora do scriptcase simplesmente utilizo o foreach e depois concateno no echo e funciona, mas no scriptcase nada feito

Acho que vc não leu tudo não. Dá uma olhada aqui e veja se é assim que exemplifica o sc_select?
https://www.scriptcase.com.br/docs/pt_br/v81/macros-scriptcase/macros-scriptcase#sc_select

só isso acima não resolve… cadê o while aí?
o @thyagohenrique85 tem razão… precisa ler todo o conteúdo do sc_select.

Esta macro permite que o usuário execute comandos SQL e tenha acesso ao “dataset” proveniente do comando.
Diferente da macro sc_lookup, esta macro não manipula o dataset, deixando-o em sua forma original, cabendo ao usuário toda a manipulação.
exatamente isso, mas não estou manipulando o resultado, estou tentando mudar a forma de exibição

Ex. 1:

sc_select(meus_dados, "select clienteid, nomecliente, limitecred from clientes");
if ({meus_dados} === false) {
     echo "Erro de acesso. Mensagem = " . {meus_dados_erro};
}else{
     while (!$meus_dados->EOF){
          {nome_cliente} = $meus_dados->fields[1];//é aqui q vc faz a tua mágica amigo.
          $meus_dados->MoveNext();
     }
     $meus_dados->Close();
}

substitua com teus dados nesse codigo acima.

Cara, vc não precisa pegar os resultados que vem desse select? Pra isso precisa usar a macro sc_select como está no exemplo que te mandei o link. Mais fácil que isso, só fazendo pra vc.

Valeu, muito obrigado pela ajuda

qualquer dia vão passar o acesso pra gente fazer a pesquisa, a leitura em voz alta e mostrar como fazer.

primeiro o result set é um array, e não pode dar um echo em um variável array ( a não ser que seja em seu último índice).

utilize sc_lookup e a função group_concat

$select="
SELECT group_concat(email)  
FROM inscritos 
WHERE turma = '{[turma]}' 
GROUP BY turma 
ORDER BY email";

sc_lookup(ds, $select);
echo $ds[0][0];

https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_group-concat

sua dica foi muito útil, mas consegui da seguinte forma:
sc_lookup(dataset, “SELECT email FROM inscritos WHERE turma = ‘[turma]’”);
foreach($dataset as $valor) {
$email = implode(" ",$valor);
echo $email . ", ";
}

Desculpa mas existem erros e falta de lógica nesse código, mesmo que obtenha o resultado esperado.

Você mata a variável $email a cada laço do loop.
o comando implode transforma um array em uma string utilizando de um determinado separador, mas nesse caso $valor é uma array com um único item o que não faz sentido o implode.

Penso que devemos só trazer os recursos para o php somente quando não podemos resolvê-lo no SQL.

group_concat faz isso sem trabalho algum, te traz o resultado pronto, simplifica a codificação deixando-a mais clara, mais legível, o que facilita manutenções futuras.

Vou reescrever o código, mas utilizei como você me passou, mas com co group_concat a tela ficou em branco

este é o resultado que preciso, pois será inserido no campo para do correio lotus notes

comgptpatnavne-32/gpndes/Mar@MAR, daniel.jesus@marinha.mil.br, antonio.mota@marinha.mil.br, secirm-023/secirm/Mar, gesmat@capdbq.mb, , ndmbahia.secom@marinha.mil.br, marcelo-santos.ms@marinha.mil.br, rcampiao@gmail.com, leticia.ingrid@marinha.mil.br, ceimspa-msg/citspa/mar, andre.ramos@marinha.mil.br, carlos.crespo@marinha.mil.br, marlos.nochi@marinha.mil.br, , h39.msg@marinha.mil.br, , comesqde1.msg@marinha.mil.br, flavio.farias@marinha.mil.br, , dellaguna.intendencia@marinha.mil.br, , romeu.regenold@marinha.mil.br, , comgptpatnavne-52/gpndes/Mar@MAR, anderson.candido@marinha.mil.br, , osni@amazul.gov.br, nvalbardao.sargenteante@marinha.mil.br,

e como elimino os campos vazios ? array_filter ?

uma coisa importante que esqueci de informa, o banco que estou utilizando é o postgres.

elimine no SQL incluindo na cláusula WHERE : … AND email != ‘’ AND email IS NOT NULL

Forma alternativa para group_concat no PostgreSQL:

Tenho por hábito responder sempre em cima do SQL do MySQL, MariaDB quando o banco não é informado.