Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola estou precisando agrupar um resultado na while... (não posso agrupar no select....)
minha while solta
while(){
nome => Ricardo
valor => 100,00
nome => Vanessa
valor => 150,00
nome => Mateus
valor => 100,00
nome => Ricardo
valor => 120,00
}
o resultado gostaria que ficasse assim
nome => Ricardo
valor => 220,00
nome => Vanessa
valor => 150,00
nome => Mateus
valor => 100,00
tentei fazer dentro da while.
da certo porem simplesmente pula um ricardo.... gostaria de pular mas trazer o único ricardo com o valor somando...
while(){
if ($array['nome'] <> $nome){
echo $array['nome'];
echo $array['valor'];
}
$nome = $array['nome'];
}
aguardo ideias abraços
marco
Olá ESerra valeu pela ajuda.. mas sua resposta foi a primeira coisa que postei... eu nao quero agrupar no select....
pois o cliente ve o relatorio na tela desagrupado, quando gera o boleto ele agrupa.... por isso tem que ser na while nao no select..... (e nao gerar dois selects)
KUROLE
>
Claro que dá pra fazer na query:
SELECT SUM(valor) as valor FROM tabela GROUP BY nome
BOM GALERA SEM PACIENCIA CONSEGUI RESOLVER DO MEU JEITO (se alguem postar alguma coisa mais facil e inteligente agradeço...)
vai o que fiz
//dentro da while
while(){
//aqui mostra todos sem agrupar
echo $row->nome_evento." - D: ".$row->debito." - C: ".$row->credito."<br>";
if ($row->nome_evento <> $nome_evt_ok){
$monta_extrato_array_nom[] = $row->nome_evento;
$monta_extrato_array_valD[] = $row->debito;
$monta_extrato_array_valC[] = $row->credito;
}else{
// pega o valor do ultimo evento....
// se caiu aqui é pq o nome é repetido...
$ult_val_array_Deb = end($monta_extrato_array_valD);
$ult_val_array_Cre = end($monta_extrato_array_valC);
$monta_extrato_array_nom = array_slice($monta_extrato_array_nom, 0, -1);
$monta_extrato_array_valD = array_slice($monta_extrato_array_valD, 0, -1);
$monta_extrato_array_valC = array_slice($monta_extrato_array_valC, 0, -1);
$monta_extrato_array_nom[] = $row->nome_evento;
$monta_extrato_array_valD[] = $row->debito+$ult_val_array_Deb;
$monta_extrato_array_valC[] = $row->credito+$ult_val_array_Cre;
}
$nome_evt_ok = $row->nome_evento;
}//end while
//fora da while
foreach($monta_extrato_array_nom as $chav => $val){
//monta para enviar via get.....
$monta_extrato_boleto .= "<tr>";
$monta_extrato_boleto .= "<td>".$val."</td>";
$monta_extrato_boleto .= "<td>".($monta_extrato_array_valD[$chav] == '-' ? '-' : number_format($monta_extrato_array_valD[$chav], 2, ',', "."))."</td>";
$monta_extrato_boleto .= "<td>".($monta_extrato_array_valC[$chav] == '-' ? '-' : number_format($monta_extrato_array_valC[$chav], 2, ',', "."))."</td>";
$monta_extrato_boleto .= "<td> </td>";
$monta_extrato_boleto .= "</tr>";
//echo $chav." - ".$val." __ ".$monta_extrato_array_valD[$chav]."<br>";
}
//aqui minha variavel com informacoes para o boleto
$monta_extrato_boleto
ABRAÇOS
KUROLE
>
Olá ESerra valeu pela ajuda.. mas sua resposta foi a primeira coisa que postei... eu nao quero agrupar no select....
pois o cliente ve o relatorio na tela desagrupado, quando gera o boleto ele agrupa.... por isso tem que ser na while nao no select..... (e nao gerar dois selects)
KUROLE
Claro que dá pra fazer na query:
SELECT SUM(valor) as valor FROM tabela GROUP BY nome