Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido]


dammy

Pergunta

Olá a todos !

Estou com um problema com while, acho que é coisa simples, mas, poxa, realmente não estou conseguindo enxergar a solução e é a primeira que preciso executar esse tipo de consulta.

Estou fazendo uma consulta no BD e está executando corretamente, o problema é que esta repetindo o "título" para todos os itens da Nota Fiscal.

Tentei dividir a consulta, mas neste caso ele lista corretamente o título e os ítens só que não faz o loop, pára na primeira Nota Fiscal.

Será que é melhor mudar o while por for ou algo assim? Podem, por favor, me ajudar ?

Desde já agradeço muito !!

Abração,

Dammy

$query4 = "SELECT no.Not_notafiscal, no.Not_emissao, no.Not_cliente, no.Not_valornota, no.Not_pedido, ca.Cli_nome, it.Ino_produto, it.Ino_prunitario, it.Ino_qtde, it.Ino_valortotal, pr.Pro_descricao FROM DN_Notas no, DN_Cadastro ca, DN_ItensNota it, DN_Produtos pr WHERE no.Not_representante = '$vendedor' AND no.Not_notafiscal = it.Ino_nota AND no.Not_cliente = ca.Cli_codigo AND it.Ino_produto = pr.Pro_codigo AND no.Not_emissao >= '$dtini' AND no.Not_emissao <= '$dtfim'

ORDER BY no.Not_notafiscal asc";

$res4 = mysql_query($query4);

while($ret4 = mysql_fetch_array($res4)){

$nf = $ret4['Not_notafiscal'];

$dt = $ret4['Not_emissao'];

$clicd = $ret4['Not_cliente'];

$clinm = $ret4['Cli_nome'];

$vl = $ret4['Not_valornota'];

$pd = $ret4['Not_pedido'];

$procd = $ret4['Ino_produto'];

$pronm = $ret4['Pro_descricao'];

$prun = $ret4['Ino_prunitario'];

$qtde = $ret4['Ino_qtde'];

$prtt = $ret4['Ino_valortotal'];

?>

<tr> (essas 2 primeiras <tr> devem ser exibidas só uma vez pra cada grupo de ítens)

<td class="bla" width=17%><b>Nota Fiscal:<br><?php echo $nf;?></b></td>

<td class="bla" width=17%><b>Emissão:<br></b> <?php echo $dt;?></td>

<td class="bla" width=45%><b>Cliente:<br></b> <?php echo $clicd.' - '.$clinm;?></td>

<td class="bla" width=19% align='left'><b>Valor</b>:<br><?php echo $vl;?></td>

</tr>

<tr align='center'>

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><b>Pedido</b></td>

<td class="bla" width=50% align='left'><b>Produto</b></td>

<td class="bla" width=10%><b>Vl. Unitário</b></td>

<td class="bla" width=9%><b>Qtde</b></td>

<td class="bla" width=13%><b>Vl. Total</b></td>

</tr>

<tr align='center'> (essa <tr> deve se repetir quantas vezes necessário apra listar todos os ítens da nota)

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><?php echo $pd;?></td>

<td class="bla" width=50% align='left'><?php echo $procd.' - '.$pronm;?></td>

<td class="bla" width=10%><?php echo $prun;?></td>

<td class="bla" width=9%><?php echo $qtde;?></td>

<td class="bla" width=13%><?php echo $prtt;?></td>

</tr>

<?php } /*fecha while*/ ?>

POr favor, alguém pode me dar alguma idéia de como resolver isso???

Editado por dammy
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Colqueas antes do while.

<tr> (essas 2 primeiras <tr> devem ser exibidas só uma vez pra cada grupo de ítens)
<td class="bla" width=17%><b>Nota Fiscal:<br><?php echo $nf;?></b></td> 
<td class="bla" width=17%><b>Emissão:<br></b> <?php echo $dt;?></td> 
<td class="bla" width=45%><b>Cliente:<br></b> <?php echo $clicd.' - '.$clinm;?></td> 
<td class="bla" width=19% align='left'><b>Valor</b>:<br><?php echo $vl;?></td> 
</tr> 
<tr align='center'>
<td class="bla" width=3%></td> 
<td class="bla" width=7% align='left'><b>Pedido</b></td> 
<td class="bla" width=50% align='left'><b>Produto</b></td> 
<td class="bla" width=10%><b>Vl. Unitário</b></td> 
<td class="bla" width=9%><b>Qtde</b></td> 
<td class="bla" width=13%><b>Vl. Total</b></td> 
</tr> 

<?
$query4 = "SELECT no.Not_notafiscal, no.Not_emissao, no.Not_cliente, no.Not_valornota, no.Not_pedido, ca.Cli_nome, it.Ino_produto, it.Ino_prunitario, it.Ino_qtde, it.Ino_valortotal, pr.Pro_descricao FROM DN_Notas no, DN_Cadastro ca, DN_ItensNota it, DN_Produtos pr WHERE no.Not_representante = '$vendedor' AND no.Not_notafiscal = it.Ino_nota AND no.Not_cliente = ca.Cli_codigo AND it.Ino_produto = pr.Pro_codigo AND no.Not_emissao >= '$dtini' AND no.Not_emissao <= '$dtfim' 
ORDER BY no.Not_notafiscal asc";
$res4 = mysql_query($query4);
while($ret4 = mysql_fetch_array($res4)){ 
$nf = $ret4['Not_notafiscal'];
$dt = $ret4['Not_emissao'];
$clicd = $ret4['Not_cliente'];
$clinm = $ret4['Cli_nome'];
$vl = $ret4['Not_valornota'];
$pd = $ret4['Not_pedido'];
$procd = $ret4['Ino_produto'];
$pronm = $ret4['Pro_descricao'];
$prun = $ret4['Ino_prunitario'];
$qtde = $ret4['Ino_qtde'];
$prtt = $ret4['Ino_valortotal'];

?>
<tr align='center'> (essa <tr> deve se repetir quantas vezes necessário apra listar todos os ítens da nota)
<td class="bla" width=3%></td> 
<td class="bla" width=7% align='left'><?php echo $pd;?></td> 
<td class="bla" width=50% align='left'><?php echo $procd.' - '.$pronm;?></td> 
<td class="bla" width=10%><?php echo $prun;?></td> 
<td class="bla" width=9%><?php echo $qtde;?></td> 
<td class="bla" width=13%><?php echo $prtt;?></td> 
</tr> 
<?php } /*fecha while*/ ?>

Editado por itibere
Link para o comentário
Compartilhar em outros sites

  • 0

Desja ve se intendi.

Voce tem faviros grupos e cada grupo varios itens, que esibir o cabeçalho do grupo, de pois seus ites.

iso para cada grupo ne.

tenta assim>

$sqlGrupos="selecção de grupos)

while(consulta dos grupos)

<tr> (essas 2 primeiras <tr> devem ser exibidas só uma vez pra cada grupo de ítens)

<td class="bla" width=17%><b>Nota Fiscal:<br><?php echo $nf;?></b></td>

<td class="bla" width=17%><b>Emissão:<br></b> <?php echo $dt;?></td>

<td class="bla" width=45%><b>Cliente:<br></b> <?php echo $clicd.' - '.$clinm;?></td>

<td class="bla" width=19% align='left'><b>Valor</b>:<br><?php echo $vl;?></td>

</tr>

<tr align='center'>

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><b>Pedido</b></td>

<td class="bla" width=50% align='left'><b>Produto</b></td>

<td class="bla" width=10%><b>Vl. Unitário</b></td>

<td class="bla" width=9%><b>Qtde</b></td>

<td class="bla" width=13%><b>Vl. Total</b></td>

</tr>

$sqlIteim="selecaçao de item de acordo com grupo)

while(consulta dos itens)

<tr align='center'> (essa <tr> deve se repetir quantas vezes necessário apra listar todos os ítens da nota)

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><?php echo $pd;?></td>

<td class="bla" width=50% align='left'><?php echo $procd.' - '.$pronm;?></td>

<td class="bla" width=10%><?php echo $prun;?></td>

<td class="bla" width=9%><?php echo $qtde;?></td>

<td class="bla" width=13%><?php echo $prtt;?></td>

</tr>

}

}

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei colocar 2 while mas lista o titulo uma vez só e embaixo está listando várias vezes tudo que existe no BD.

Sei que é dose, mas se alguém puder avaliar o código pra ver se acha o erro, agradeço muito.

$query4 = "SELECT no.Not_notafiscal, no.Not_emissao, no.Not_cliente, no.Not_valornota, it.Ino_nota, ca.Cli_nome FROM DN_Notas no, DN_Cadastro ca, DN_ItensNota it WHERE

no.Not_representante = '$vendedor'

AND no.Not_emitida = 'S'";

$res4 = mysql_query($query4);

$ret = mysql_num_rows($res4);

while($ret4 = mysql_fetch_array($res4)){

$nf = $ret4['Not_notafiscal'];

$dt = $ret4['Not_emissao'];

$clicd = $ret4['Not_cliente'];

$clinm = $ret4['Cli_nome'];

$vl = $ret4['Not_valornota'];

?>

<tr>

<td class=bla" width=17%><b>Nota Fiscal:<br><?php echo $nf;?></b></td>

<td class="bla" width=17%><b>Emissão:<br></b> <?php echo $dt;?></td>

<td class="bla" width=45%><b>Cliente:<br></b> <?php echo $clicd.' - '.$clinm;?></td>

<td class="bla" width=19% align='left'><b>Valor</b>:<br><?php echo $vl;?></td>

</tr>

<tr align='center'>

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><b>Pedido</b></td>

<td class="bla" width=50% align='left'><b>Produto</b></td>

<td class="bla" width=10%><b>Vl. Unitário</b></td>

<td class="bla" width=9%><b>Qtde</b></td>

<td class="bla" width=13%><b>Vl. Total</b></td>

</tr>

<?php

$query5 = "SELECT no.Not_pedido, it.Ino_produto, it.Ino_prunitario, it.Ino_qtde, it.Ino_valortotal, pr.Pro_descricao FROM DN_Notas no, DN_ItensNota it, DN_Produtos pr WHERE no.Not_representante = '$vendedor'

AND no.Not_emitida = 'S' AND it.Ino_nota = '$nf'"; // cada item da tabela DN_itensnota correponde a uma linha e cada linha tem o campo Ino_nota que é o numero da nota fiscal na tabela DN_Notas.

$res5 = mysql_query($query5);

while($ret5 = mysql_fetch_array($res5)){

$pd = $ret5['Not_pedido];

$procd = $ret5['Ino_produto'];

$pronm = $ret5['Pro_descricao'];

$prun = $ret5['Ino_prunitario'];

$qtde = $ret5['Ino_qtde'];

$prtt = $ret5['Ino_valortotal'];

?>

<tr align='center'>

<td class="bla" width=3%></td>

<td class="bla" width=7% align='left'><?php echo $pd;?></td>

<td class="bla" width=50% align='left'><?php echo $procd.' - '.$pronm;?></td>

<td class="bla" width=10%><?php echo $prun;?></td>

<td class="bla" width=9%><?php echo $qtde;?></td>

<td class="bla" width=13%><?php echo $prtt;?></td>

</tr>

<?php } /* fecha o segundo while*/?>

</table>

<?php } /*fecha while*/ ?>

eu não sei como usar aqui neste caso...

mas será que o foreach não resolve?

Tipo assim... pra casa $nf listar todos os Ino_nota (itens da nota)...

Desculpem se falei besteira... só estou tentando resolver... ;-)

Editado por dammy
Link para o comentário
Compartilhar em outros sites

  • 0

fora esse pedacinho:

//Disso
</tr> 
<?php } /* fecha o segundo while*/?>
</table>
<?php } /*fecha while*/ ?>
//Mude para isso
</tr> 
<?php
     } // fecha o segundo while*
 } /*fecha while*/
  ?>
</table>

Não vi nada de errado com a logica, a sequencia cabeçalho ta certa,(imprime cabeçalho depois item)

esse

Tentei colocar 2 while mas está listando várias vezes tudo que existe no BD.

Sei que é dose, mas se alguém puder avaliar o código pra ver se acha o erro, agradeço muito.

Soa as mesmas informações ou o bd interiro, se for o bd interio pode ser lagum problema na sua clausula where.

mas aprincipio ta tudo certo.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok, Itibere.

Vou verificar com mais calma pra ver se acho o problema. Realmente está listando 1 único titulo ao invés de 2 que seria correto e embaixo do titulo lista o BD inteiro várias vezes.

Obrigada por sua atenção.

#############################

Já fiz uma porção de testes aqui e não consigo achar qual é o problema...

Que coisa...

Editado por dammy
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...