Jump to content
Fórum Script Brasil
  • 0

Loop infinito


Carlos Rocha

Question

Pessoal,

Estou rodando o código abaixo e esta dando loop infinito no php .

Mas, fazendo a consulta no mysql front não da loop

O que será que esta acontecendo?

<?php
if ($acao == "ver")
{
    $consulta_fornecedor="
                         SELECT razaosocial, nome
                         FROM fornecedores
                         WHERE id=$id
                        ";
    $consulta_data="
                       SELECT DISTINCT(pc.data)
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor                       
                       WHERE fd.id = $id                       
                       ORDER BY pc.data desc
                  ";
    $consulta_cliente="
                       SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome 
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor
                       INNER JOIN clientes cl ON cl.id = pc.id_cliente                                              
                       WHERE fd.id = $id and pc.data = '$data'                     
                       ORDER BY cl.nome, cl.razaosocial
                   ";
    $consulta_itens="
                SELECT
                  pd.nome,
                  pe.quantidade,
                  pe.preco_uni,
                  pe.semi_total
                FROM pedidos pe  
                INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO     
                INNER JOIN fornecedores fd ON fd.id=pd.fornecedor          
                INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO          
                INNER JOIN clientes cl ON cl.id=pc.id_cliente     
                WHERE fd.id = $id and pc.data = '$data' and pc.id_cliente=$cliente
                ORDER BY pe.ID_PRODUTO                  
              ";
        list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($MySQL->query($consulta_fornecedor));

        echo "<table align=\"center\" width=\"95%\">
               <tr><td colspan=\"4\" align=\"center\">
                                  RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME 
                   </td></tr>
             ";

        while(list($data) = mysql_fetch_row($MySQL->query($consulta_data)))
        {
            echo "<tr><td colspan=\"4\" align=\"center\">$data</td></tr>";
            
            while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($MySQL->query($consulta_cliente)))
            {
                 echo "<tr><td colspan=\"4\" align=\"center\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>";
                 $SEMI_TOTAL=0.00;
                   while(list(
                              $PRODUTO_NOME,
                              $QUANTIDADE,
                              $PRECO_UNI,
                              $SEMI_TOTAL
                            ) = mysql_fetch_row($MySQL->query($consulta_itens)))
                {
                    $SUB_TOTAL.=$SEMI_TOTAL;
                    echo "<tr>
                              <td align=\"center\">$PRODUTO_NOME</td>
                              <td align=\"center\">$PRODUTO_NOME</td>
                              <td align=\"center\">$PRODUTO_NOME</td>
                              <td align=\"center\">$PRODUTO_NOME</td>
                          </tr>
                          <tr><td align=\"right\">$SUB_TOTAL</td></tr>
                       ";
                }
            }
        }
     echo "</table>";
}
?>

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

a trava esta acontecendo nessa linha aqui

while(list($data) = mysql_fetch_row($MySQL->query($consulta_data)))
        {
Antes dela não da o problema Se colocar, dentro do wile, e depois do echo $data, um exit. ele imprime uma data e para. O MYSQL retorna duas datas. Fiz assim tambem:
while(FALSE !== (list($data) = mysql_fetch_row($MySQL->query($consulta_data))))

Mas o loop infinito continua.

Link to comment
Share on other sites

  • 0

Não tem exibição de problema.

Eu pedi para imprimir a variavel que contem a consulta, coloquei ela no mysql front e retornou normalmente. em erros.

A unica novidade é que o campo p.nome, retornou o mesmo nome em duas linhas de retorno (registros)

Olha o que exibe:

SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = 2 and pc.data = '2011-07-14' and pc.id_cliente=1 ORDER BY pe.ID_PRODUTO Erro na consulta da query!
Resource id #16 SELECT pd.nome, pe.quantidade, pe.preco_uni, pe.semi_total FROM pedidos pe INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO INNER JOIN fornecedores fd ON fd.id=pd.fornecedor INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO INNER JOIN clientes cl ON cl.id=pc.id_cliente WHERE fd.id = 2 and pc.data = '2011-07-06' and pc.id_cliente=1 ORDER BY pe.ID_PRODUTO Erro na consulta da query!
Resource id #18
RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR Malta S/A
2011-07-14
Carlos Rocha
2011-07-06
Carlos Rocha
São 3 consultas. Uma pra retornar a data, outra para retornar o cliente e outra para retornar os ítens que aquele cliente comprou naquela data daquele fornecedor Alterei e ficoiu assim:
<?php
if ($acao == "ver")
{
    $consulta_fornecedor="
                       SELECT razaosocial, nome
                       FROM fornecedores
                       WHERE id=$id
                        ";

    $consulta_data="
                       SELECT DISTINCT(pc.data)
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor                       
                       WHERE fd.id = $id                       
                       ORDER BY pc.data desc
                  ";

        list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($MySQL->query($consulta_fornecedor));

        echo "<table align=\"left\" width=\"95%\" border=\"1\">
               <tr><td colspan=\"4\" align=\"center\">
                                  RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME 
                   </td></tr>
             ";
        $consulta_data_query = $MySQL->query($consulta_data);
        while(list($data) = mysql_fetch_row($consulta_data_query))
        {
            echo "<tr><td colspan=\"4\" align=\"left\">$data</td></tr>";
            $TOTAL_GERAL.=$SUB_TOTAL;

             $consulta_cliente="
                       SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome 
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor
                       INNER JOIN clientes cl ON cl.id = pc.id_cliente                                              
                       WHERE fd.id = $id and pc.data = '$data'                     
                       ORDER BY cl.nome, cl.razaosocial
                   ";

            $consulta_cliente_query = $MySQL->query($consulta_cliente);
            while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query))
            {
                 echo "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>";
                 $SEMI_TOTAL=0.00;

                  $consulta_itens="
                                    SELECT
                                      pd.nome,
                                      pe.quantidade,
                                      pe.preco_uni,
                                      pe.semi_total
                                    FROM pedidos pe  
                                    INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO     
                                    INNER JOIN fornecedores fd ON fd.id=pd.fornecedor          
                                    INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO          
                                    INNER JOIN clientes cl ON cl.id=pc.id_cliente     
                                    WHERE fd.id = $id and pc.data = '$data' and pc.id_cliente=$cliente
                                    ORDER BY pe.ID_PRODUTO                  
                                 ";
print $consulta_itens;
                 $consulta_itens_query = $MySQL->query($consulta_itens);
                   while(list(
                              $PRODUTO_NOME,
                              $QUANTIDADE,
                              $PRECO_UNI,
                              $SEMI_TOTAL
                            ) = mysql_fetch_row($MySQL->query($consulta_itens_query)))
                {
                    $SUB_TOTAL.=$SEMI_TOTAL;
                    echo "<tr>
                              <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td>
                              <td align=\"center\" width=\"20%\">$QUANTIDADE</td>
                              <td align=\"right\" width=\"20%\">$PRECO_UNI</td>
                              <td align=\"right\" width=\"20%\">$SEMI_TOTAL</td>
                          </tr>
                          <tr><td align=\"right\" colspan=\"4\">$SUB_TOTAL</td></tr>
                       ";
                }
            }
         echo "<tr><td colspan=\"4\" align=\"center\">$TOTAL_GERAL</td></tr>";
        }
     echo "</table>";
}
?>

Link to comment
Share on other sites

  • 0

Pronto. Grato a todos que ajudaram:

<?php
if ($acao == "ver")
{
    $consulta_fornecedor="
                       SELECT razaosocial, nome
                       FROM fornecedores
                       WHERE id=$id
                        ";

    $consulta_data="
                       SELECT DISTINCT(pc.data)
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor                       
                       WHERE fd.id = $id                       
                       ORDER BY pc.data desc
                  ";

        list($FORNECEDOR_RAZAOSOCIAL,$FORNECEDOR_NOME) = mysql_fetch_row($MySQL->query($consulta_fornecedor));

        echo "<table align=\"left\" width=\"95%\" border=\"1\">
               <tr><td colspan=\"4\" align=\"center\">
                                  RELATÓRIO ANALÍTICO DE PEDIDOS FORNECEDOR $FORNECEDOR_RAZAOSOCIAL$FORNECEDOR_NOME 
                   </td></tr>
             ";
        $consulta_data_query = $MySQL->query($consulta_data);

        while(list($data) = mysql_fetch_row($consulta_data_query))
        {
            echo "<tr><td colspan=\"4\" align=\"left\">".formata_data($data)."</td></tr>";

             $consulta_cliente="
                       SELECT DISTINCT(pc.id_cliente),cl.razaosocial, cl.nome 
                       FROM pedidos_cliente pc    
                       INNER JOIN pedidos pe ON pe.ID_PEDIDO = pc.id_pedido_cliente                       
                       INNER JOIN produtos pd ON pd.id = pe.ID_PRODUTO                       
                       INNER JOIN fornecedores fd ON fd.id = pd.fornecedor
                       INNER JOIN clientes cl ON cl.id = pc.id_cliente                                              
                       WHERE fd.id = $id and pc.data = '$data'                     
                       ORDER BY cl.nome, cl.razaosocial
                   ";
                   
                    echo "<tr>
                              <td align=\"left\" width=\"40%\">NOME DO PRODUTO</td>
                              <td align=\"center\" width=\"20%\">QUANTIDADE</td>
                              <td align=\"right\" width=\"20%\">preço UNITÁRIO</td>
                              <td align=\"right\" width=\"20%\">SEMI TOTAL</td>
                          </tr>
                       ";

            $consulta_cliente_query = $MySQL->query($consulta_cliente);
            while(list($cliente,$CLIENTE_RAZAOSOCIAL,$CLIENTE_NOME) = mysql_fetch_row($consulta_cliente_query))
            {
                 echo "<tr><td colspan=\"4\" align=\"left\">$CLIENTE_RAZAOSOCIAL$CLIENTE_NOME</td></tr>";

                  $consulta_itens="
                                    SELECT
                                      pd.nome,
                                      pe.quantidade,
                                      pe.preco_uni,
                                      pe.semi_total
                                    FROM pedidos pe  
                                    INNER JOIN produtos pd ON pd.id=pe.ID_PRODUTO     
                                    INNER JOIN fornecedores fd ON fd.id=pd.fornecedor          
                                    INNER JOIN pedidos_cliente pc ON pc.id_pedido_cliente=pe.ID_PEDIDO          
                                    INNER JOIN clientes cl ON cl.id=pc.id_cliente     
                                    WHERE fd.id = $id and pc.data = '$data' and pc.id_cliente=$cliente
                                    ORDER BY pe.ID_PRODUTO                  
                                 ";
                 $SUB_TOTAL=0.00;
                 $consulta_itens_query = $MySQL->query($consulta_itens);
                   while(list(
                              $PRODUTO_NOME,
                              $QUANTIDADE,
                              $PRECO_UNI,
                              $SEMI_TOTAL
                            ) = mysql_fetch_row($consulta_itens_query))
                {
                    $SUB_TOTAL+=$SEMI_TOTAL;

                    echo "<tr>
                              <td align=\"left\" width=\"40%\">$PRODUTO_NOME</td>
                              <td align=\"center\" width=\"20%\">$QUANTIDADE</td>
                              <td align=\"right\" width=\"20%\">R$ ".number_format($PRECO_UNI, 2, '.', '')."</td>
                              <td align=\"right\" width=\"20%\">R$ ".number_format($SEMI_TOTAL, 2, '.', '')."</td>
                          </tr>
                       ";
                }
                    echo "<tr><td align=\"right\" colspan=\"4\">TOTAL NA DATA: R$ ".number_format($SUB_TOTAL, 2, '.', '')."</td></tr>";

                    $TOTAL_GERAL+=$SUB_TOTAL;

            }
        }
                 echo "<tr><td colspan=\"4\" align=\"center\">TOTAL GERAL: R$ ".number_format($TOTAL_GERAL, 2, '.', '')."</td></tr>";

     echo "</table>";
}
?>

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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...