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

Loop infinito


Carlos Rocha

Pergunta

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 para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 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
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...