Carlos Rocha Postado Julho 20, 2011 Denunciar Share Postado Julho 20, 2011 Pessoal,Estou rodando o código abaixo e esta dando loop infinito no php . Mas, fazendo a consulta no mysql front não da loopO 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>"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 20, 2011 Autor Denunciar Share Postado Julho 20, 2011 a trava esta acontecendo nessa linha aquiwhile(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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 raphael_suporte Postado Julho 20, 2011 Denunciar Share Postado Julho 20, 2011 você não está passando para o registro seguinte...tente usar o foreach no lugar do whileque assim ele a cada loop passa para o proximo registro. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 20, 2011 Autor Denunciar Share Postado Julho 20, 2011 Observei o seguinte:Na minha query, tem uma chamada ao campo data do mysql.Quando ele retorna, esta gerndo loop infinito.Tirei ele de sena eo loop paroucomo posso resolver isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 20, 2011 Autor Denunciar Share Postado Julho 20, 2011 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>"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Carlos Rocha Postado Julho 20, 2011 Autor Denunciar Share Postado Julho 20, 2011 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>"; } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Carlos Rocha
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?
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.