Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

André Monjardim

While dentro de outra while

Recommended Posts

Olá pessoal, depois de alguns estudos e pegando algumas dicas nesse mesmo assunto, acabo acreditando que preciso mesmo da ajuda de vocês.

 

O trecho desse código tem a função de pegar a lista de clientes e imprimir na tela com seus dados normais que estão juntos na mesma tabela. Só que em um determinado ponto ele precisa buscar de uma 2ª tabela a soma total das compras que esse cliente fez. Cada linha mostra os dados de cada cliente. (com paginação)

 

Parece simples, mas acabei me enrolando e só consegui apresentar na tela somente a primeira linda da tabela de clientes, ou seja, só o primeiro nome é apresentado com o valor correto dos dados da 2ª tabela (valor das compras).

 

O que eu preciso é que assim que termine de ler os dados ele retorne para o 1º while e assim sucessivamente até o último cliente da lista.

 

Desde já obrigado.

$ssql = "select * FROM snc_clientes ORDER BY nome ASC" . $criterio . " limit " . $inicio . "," . $tamanho_pagina_cliente; 
$sql_query = mysql_query($ssql); 
while($array = mysql_fetch_array($sql_query)) {
$id_cliente = $array['id'];
$_SESSION['id_cliente'] = $id_cliente;
$nome = $array['nome'];
$telefone = $array['telefone'];
$data_cadastro = $array['data_cadastro'];
$timestamp = strtotime($data_cadastro);
$cpf = $array['cpf'];
$apelido = $array['apelido'];
$email = $array['email'];
$facebook = $array['facebook'];
$saldo_cliente = $array['saldo_cliente'];
$saldo_cliente_formatado = number_format($saldo_cliente,2,",",".");
$i++;
if($i % 2 == 0 ? $cor="f9f9f9" : $cor="f0e6fc")

echo "
	<tr>
	<th scope='col' align='center' class='style15' style='background-color:#$cor'></th>
    <th scope='col' align='left' class='style15' style='background-color:#$cor'><a href='ficha_cliente.php?id=$id_cliente'>$nome</a></th>
    <th scope='col' align='center' class='style15' style='background-color:#$cor'>$apelido</th>
    <th scope='col' align='center' class='style15' style='background-color:#$cor'>";

$valor = "SELECT * FROM snc_apagar WHERE cod_cliente = '$id_cliente'"; 
$sql_query = mysql_query($valor); 
while($row = mysql_fetch_array($sql_query)) {
$cod_cliente = $row['cod_cliente']; 
// comprou
$quantidade = $row['quantidade']; 
$valor_compra = $row['valor_compra']; 
$multi_compra_display = ($valor_compra * $quantidade);
$soma_compras = ($soma_compras + $multi_compra_display);
$soma_compras2 = number_format($soma_compras,2,",",".");
// pagou
$valor_pago = $row['valor_pago'];
$total_valor_pago = ($total_valor_pago + $valor_pago);
$total_valor_pago_formatado = number_format($total_valor_pago,2,",",".");
// saldo
$totalgeral = ($total_valor_pago - $soma_compras);
$totalgeral_formatado = number_format($totalgeral,2,",",".");
}

	if($totalgeral == 0){
	echo "";
	}
	elseif($totalgeral < "0.00"){
	echo "<font color='#ff0000'>[$totalgeral_formatado]</font>";
	}
	elseif($totalgeral > "0.00"){
	echo "<font color='#0c8f16'>$totalgeral_formatado</font>";
	}	
	else
	{
	echo "$totalgeral_formatado";
	}
echo "</th>";

//Continua código com outros dados de cada cliente
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Monjardim, existe realmente a necessidade correr os dados com 2 while, fazendo ser executado uma query a mais para cada resultado ?

Não seria melhor implementar direto na query um LEFT JOIN para ja trazer as demais informações que você precisa?

Assim você usaria apenas um while e uma query.

 

Abaixo segue um exemplo de como seria essa query

$ssql = "select * FROM snc_clientes a left join snc_apagar as b on a.cliente = b.cliente  ORDER BY a.nome ASC" . $criterio . " a.limit " . $inicio . "," . $tamanho_pagina_cliente;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peterlink eu já tentei de tudo até postar aqui, mas vou tentar novamente e coloco aqui o desfecho dessa novela.



Peterlink se não fosse ter que calcular antes de apresentar o resultado para cada linha de cliente daria pra fazer, só que uso o 2º while para trazer já calculado os valores que estão na 2ª tabela das compras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.