Jump to content
Fórum Script Brasil
  • 0

[resolvido]


dammy
 Share

Question

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???

Edited by dammy
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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*/ ?>

Edited by itibere
Link to comment
Share on other 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 to comment
Share on other 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... ;-)

Edited by dammy
Link to comment
Share on other 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 to comment
Share on other 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...

Edited by dammy
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.6k
×
×
  • Create New...