Carlos Rocha Posted July 20, 2011 Report Share Posted July 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>"; } ?> Quote Link to comment Share on other sites More sharing options...
0 Carlos Rocha Posted July 20, 2011 Author Report Share Posted July 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. Quote Link to comment Share on other sites More sharing options...
0 raphael_suporte Posted July 20, 2011 Report Share Posted July 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. Quote Link to comment Share on other sites More sharing options...
0 Carlos Rocha Posted July 20, 2011 Author Report Share Posted July 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? Quote Link to comment Share on other sites More sharing options...
0 Carlos Rocha Posted July 20, 2011 Author Report Share Posted July 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>"; } ?> Quote Link to comment Share on other sites More sharing options...
0 Carlos Rocha Posted July 20, 2011 Author Report Share Posted July 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>"; } ?> Quote Link to comment Share on other sites More sharing options...
Question
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 to comment
Share on other sites
5 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.