Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 11:40

Olá.

Tenho o código abaixo.

Um while dentro de outro while.

O que acontece:

Tenho duas consultas no código:

$QuerySQL_fornece e $QuerySQL.

No Front do Mysql, o retorno esta tendo dois registros (dois ids de fornecedores)

Dai, ele só mostra um registro no loop while.

Porem, não entendi o porque, se eu retirar a segunda consulta $QuerySQL e a chamada $Resultado = $MySQL->query($QuerySQL);

Aí o primeiro loop while que mostra os dois fornecedores funciona.

Daí fiz o seguinte texte: No lugar da conulta com variaveis php no meio e imprimi a consulta, copiei e substitui a consulta pela impressão da mesma. Deu a mesma coisa.

O que será que esta acontecendo?
<form method="post" action="carrinho.php?op=atualizar"> <table BORDER=0 CELLSPACING=2 CELLPADDING=4 WIDTH="95%" align="center"> <tr BGCOLOR="#0080C0"><td align="center" colspan="9"><b><font color="#FFFFFF">Pedido</font></b></td></tr> <tr BGCOLOR="#004080"> <td align="center"><b><font color="#FFFF99">Lista</font></b></td> <td align="center"><b><font color="#FFFF99">Produto</font></b></td> <td align="center"><b><font color="#FFFF99">QTD na Caixa</font></b></td> <td align="center"><b><font color="#FFFF99">PRE&Ccedil;O UNIT&Aacute;RIO</font></b></td> <td align="center"><b><font color="#FFFF99">Quantidade</font></b></td> <td align="center"><b><font color="#FFFF99">TOTAL</font></b></td> <td align="center">&nbsp;</td> </tr> <? $QuerySQL_fornece = " SELECT f.id, concat(f.nome, f.razaosocial), f.pgto_prazo, p.id, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ") and pl.data_fim>= CURRENT_DATE GROUP by f.id order by concat(f.nome, f.razaosocial)"; $QuerySQL = $MySQL->query($QuerySQL_fornece); $i = 0; $j = 0; while(list($id_fornece, $nome_fornece, $pgto_prazo, $id_produto, $id_lista_query) = mysql_fetch_row($QuerySQL)) { echo "<tr bgcolor=\"#00FFFF\"> <td align=left colspan=4>Fornecedor: &nbsp;&nbsp;" . $nome_fornece. "</td> <td align=left colspan=7>"; if($MeuCarrinho->ObtemPgtoTipo($id_produto,$id_lista_query)=="1") { echo "Condição de pagamento: À Vista"; } if($MeuCarrinho->ObtemPgtoTipo($id_produto,$id_lista_query)=="2") { $sql_prazo=mysql_query("select pgto_prazo from fornecedores where id=$id_fornece"); list($prazo)=mysql_fetch_row($sql_prazo); echo "Condição de pagamento: À Prazo<br>"; echo "Prazos para pagamento para produtos deste fornecedor:". $prazo; } echo " </td> </tr>"; echo " <tr><td align=left colspan=11>"; echo " Observação do cliente para o fornecedor: " . $MeuCarrinho->ObtemObservaCli($id_produto,$id_lista_query); echo " </td> </tr>"; $QuerySQL = " select p.id, p.foto, p.nome, pl.preco_produto, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ") and pl.data_fim>= CURRENT_DATE and f.id=".$id_fornece; $Resultado = $MySQL->query($QuerySQL); $preco_total = 0.00; $quantidade_por_fornecedor =0; while(list($id, $foto, $nome, $preco, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor, $id_listagem) = mysql_fetch_row($Resultado)) { //Computando preco total $preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco,$id_listagem); $quantidade_por_fornecedor = $quantidade_por_fornecedor + $MeuCarrinho->ObtemQuantidadeItem($id,$id_listagem); session_register("preco_total"); include("../global/funcoes_php/foto_ver.php"); echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id,$id_listagem)."</td> <td align='left'><font size=-1>". $nome ."</font></td> <td align='center'><font size=-1>". $quantidadecaixa ."</font></td> <td align='center'>R$ ". number_format($preco, 2, '.', '')." </td> <td align='center'><font size=-1><input style=\"text-align:right\" type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id,$id_listagem) ."></font></td> <td align='center'>R$ ". number_format($MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco,$id_listagem), 2, '.', '') ."</td> <td align='center'><b> <a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor&id_lista=$id_listagem>Excluir</a> </b></td> </tr> "; } } ?> <tr><td align="center" colspan="3">&nbsp;</td> <td align="right" colspan="1"><font color="#FF0000"><b>Quantidade de produtos:</td> <td align="center" colspan="1"> <?=$quantidade_por_fornecedor;?> </td> <td align="center" colspan="2">&nbsp;</td> </tr> <tr><td align="center" colspan="3">&nbsp;</td> <td align="right" colspan="2"><font color="#FF0000"><b>VALOR TOTAL DO PEDIDO</td> <td align="center" colspan="1"> R$ <?=number_format($preco_total, 2, '.', '');?></b></font></td> <td align="center" colspan="1">&nbsp;</td> </tr> <tr><td align="center" colspan="9"> <input type="hidden" name="id_lista" value="<?=$id_da_lista.$id_lista;?>"> <input type="submit" value="Atualizar" name="Atualizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"><br> </td> </tr> </table> </form> <table align="center" width="800"> <tr> <td align="right"> <form method="post" action="pedidos_fazer.php?acao=mostra_listas"> <input type="hidden" name="id_lista" value="<?=$id_da_lista.$id_lista;?>"> <input type="submit" value="<< Voltar as Compras" name="voltar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> <td align="left"> <form method="post" action="carrinho.php?op=finalizar" name='FORM'> <input type="hidden" name="id_lista" value="<?=$id_da_lista.$id_lista;?>"> <input type="hidden" name="preco_total" value="<?=number_format($preco_total, 2, '.', ''); ?>"> <input type="submit" value="Finalizar Compra >>" name="Finalizar" WIDTH="78" HEIGHT="20" style="background-color: rgb(0,111,55); color: rgb(255,255,0)"> </form> </td> </tr> </table> <? } ?>

MOVIDO DE PHP PARA MYSQL
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 12:03

Porque não faz o seguinte: Deixa uma consulta só, que parece que funciona, ai você cria uma função PHP que terá dentro a segunda consulta, nela você passa o id gerado na primeira consulta.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 13:07

Tentei assim mas ai, como a funçao esta fora do while, não da retorno de valor
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 13:18

Para ter retorno, você tem que usar o return, por exemplo

while...{ // esse é o while principal

// aqui você irá pegar o id e passar para a função

echo funcao_tal($id);

} // fim do while

Sua função vai ficar fora do while e ter toda consulta, baseada no $id
O resultado você chama por return dentro da função

return $info; // essa variável é gerada dentro da função.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 13:23

Fiz assim e continua interrompendo o primeiro loop.
<?php function consulta ($string) { $retorno = mysql_query($string); return $retorno; } ?> <?php $QuerySQL_fornece = " SELECT f.id, concat(f.nome, f.razaosocial), f.pgto_prazo, p.id, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ") and pl.data_fim>= CURRENT_DATE GROUP by f.id order by concat(f.nome, f.razaosocial)"; $QuerySQL = $MySQL->query($QuerySQL_fornece); $i = 0; $j = 0; while(list($id_fornece, $nome_fornece, $pgto_prazo, $id_produto, $id_lista_query) = mysql_fetch_row($QuerySQL)) { echo "<tr bgcolor=\"#00FFFF\"> <td align=left colspan=4>Fornecedor: &nbsp;&nbsp;" . $nome_fornece. "</td> <td align=left colspan=7>"; if($MeuCarrinho->ObtemPgtoTipo($id_produto,$id_lista_query)=="1") { echo "Condição de pagamento: À Vista"; } if($MeuCarrinho->ObtemPgtoTipo($id_produto,$id_lista_query)=="2") { $sql_prazo=mysql_query("select pgto_prazo from fornecedores where id=$id_fornece"); list($prazo)=mysql_fetch_row($sql_prazo); echo "Condição de pagamento: À Prazo<br>"; echo "Prazos para pagamento para produtos deste fornecedor:". $prazo; } echo " </td> </tr>"; echo " <tr><td align=left colspan=11>"; echo " Observação do cliente para o fornecedor: " . $MeuCarrinho->ObtemObservaCli($id_produto,$id_lista_query); echo " </td> </tr>"; $QuerySQL = " select p.id, p.foto, p.nome, pl.preco_produto, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ") and pl.data_fim>= CURRENT_DATE and f.id=".$id_fornece; $Resultado = consulta($QuerySQL); $preco_total = 0.00; $quantidade_por_fornecedor =0; while(list($id, $foto, $nome, $preco, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor, $id_listagem) = mysql_fetch_row($Resultado)) { ........

0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 13:25

Pelo que entendi você continua usando uma consulta dentro de outra, e não a função como indiquei.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 13:33

Você não viu a função fora dos whiles?
No inicio do codigo.

Dentro do while só tem a chamada à função.

mandei imprimir o resultado da variavel da consulta e saiu assim:
select p.id, p.foto, p.nome, pl.preco_produto, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where ((pl.id_produto = 3 and pl.id_lista=2) or (pl.id_produto = 4 and pl.id_lista=2) or (pl.id_produto = 6 and pl.id_lista=2) or (pl.id_produto = 5 and pl.id_lista=2) or (pl.id_produto = 1 and pl.id_lista=2)) and pl.data_fim>= CURRENT_DATE and f.id=2

Se, eu colocar essa string em vez da variavel QuerySQL da no mesmo.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 13:42

Não tinha visto. É que seu código está sem comentários, então fica difícil entender. Eu vou postar uma estrutura mais simples do que estou falando.

<?php include("conexao.php"); // arquivo de conexão function chamada($id) { include("conexao.php"); // arquivo de conexão $query=mysql_query("SELECT ..."); while($dados=mysql_fetch_array($query)) { // consulta da função extract($dados); return "$colunatal"; // uso do return } // fim do while } // fim da função $query=mysql_query("SELECT ..."); while($dados=mysql_fetch_array($query)) { // consulta principal extract($dados); echo chamada('$id')<br />"; } ?>

Nesse script tem a consulta principal, que vai listar diversos dados, incluindo o identificador "id"

Na consulta principal, em cada laço eu carrego a função lá de cima. Quando a consulta principal for feita, o id irá ser usado na consulta da da função, e mostrará o valor através do return na função.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 14:00

Não entendi muito bem mas isso seria o mesmo que pegar todo o segundp while e colocar dentro da funçao e fazer a chamada dentro do primeiro while tipo assim? Se for, não funcionou ainda.
function consulta($id_fornece) { $QuerySQL = " select p.id, p.foto, p.nome, pl.preco_produto, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo " . $MeuCarrinho->QuerySQL_ObtemListaDeItens(). ") and pl.data_fim>= CURRENT_DATE and f.id=".$id_fornece; $Resultado = $MySQL->query($QuerySQL); $preco_total = 0.00; $quantidade_por_fornecedor =0; while(list($id, $foto, $nome, $preco, $quantidadecaixa, $grupo, $nome_grupo, $fornecedor, $id_listagem) = mysql_fetch_row($Resultado)) { //Computando preco total $preco_total = $preco_total + $MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco,$id_listagem); $quantidade_por_fornecedor = $quantidade_por_fornecedor + $MeuCarrinho->ObtemQuantidadeItem($id,$id_listagem); session_register("preco_total"); include("../global/funcoes_php/foto_ver.php"); echo " <tr> <td align='center'>".$MeuCarrinho->ObtemListaItem($id,$id_listagem)."</td> <td align='left'><font size=-1>". $nome ."</font></td> <td align='center'><font size=-1>". $quantidadecaixa ."</font></td> <td align='center'>R$ ". number_format($preco, 2, '.', '')." </td> <td align='center'><font size=-1><input style=\"text-align:right\" type=TEXT name=". $id ." size=2 value=". $MeuCarrinho->ObtemQuantidadeItem($id,$id_listagem) ."></font></td> <td align='center'>R$ ". number_format($MeuCarrinho->ObtemSubTotalDeUmItem($id,$preco,$id_listagem), 2, '.', '') ."</td> <td align='center'><b> <a href=carrinho.php?op=excluir&id_prod=$id&id_fornece=$fornecedor&id_lista=$id_listagem>Excluir</a> </b></td> </tr> "; } }

Aí estou chamando assim:

while ($id_do_fornecedor...........) = primeiro while
consulta($id_do_fornecedor);
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 14:05

Não entendi quase nada do seu código. Você teria que alinhar e comentar. Essa forma que indiquei funciona, usando função para segunda consulta. Só que no caso parece que usar class. Cria um documento simples e faz um teste com o exemplo que indiquei.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 14:12

Pois e colega, o problema esta na consulta, pois quando tiro ela do código.
Um delete mesmo na parte do codigo, dai segunda volta do pimeiro while aparece.

Eu estou acostumado usar assim while dentro de while.


Daí, eu dei um echo na variavel que contem a consulta $QuerySQL e saiu assim no navegador:
Select p.id, p.foto, p.nome, pl.preco_produto, p.quantidadecaixa, p.grupo, g.nome, p.fornecedor, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where ((pl.id_produto = 3 and pl.id_lista=2) or (pl.id_produto = 4 and pl.id_lista=2) or (pl.id_produto = 6 and pl.id_lista=2) or (pl.id_produto = 5 and pl.id_lista=2) or (pl.id_produto = 1 and pl.id_lista=2)) and pl.data_fim>= CURRENT_DATE and f.id=2

O que será que há de errado com essa query?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 14:19

Você deu um echo no que é executado dentro de uma query. Agora dizer o que tem de errado não dá. Isso depende muito do erro. O que te indico é fazer um teste como indiquei, com o script que postei.
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:
 
Mais de 10 postagens
Mais de 10 postagens
Tópico Autor
Mensagens: 16
Sexo: Masculino

Código dando break sem ter break

13-08-2011 14:25

Consegui achar o problema.

É que tinham duas variaveis com o mesmo nome.

Se fosse asp, o asp me avisava atraves da declaraçao de variaveis.

Mas, valeu.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17385
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Código dando break sem ter break

13-08-2011 14:28

Boa. ;)
0
Tem um script legal em HTML, CSS, PHP, HTML, JavaScript, jQuery? Poste e compartilhe com os usuários do fórum :rock:

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado