Switch 0 Denunciar post Postado Maio 31, 2006 Bom Pessoal, vamos lá... Tenho na tabela "produtos" os campos: id codigo = codigo do produto, é informado pelo usuario nome = nome do produto ... o resto dos campos não tem interesse. Na tabela "venda_produtos" tenho os campos: id codigo = Código do pedido de venda cod_produto = código do produto. Vamos ao problema agora, eu preciso exibir numa tela os produtos do pedido de venda. Por exemplo, o número do pedido é 1 (na tabela "venda_produtos") então eu vou selecionar todos os códigos na tabela de acordo com o pedido, usei o seguinte: <? $consulta_produtos = "SELECT * FROM vendas_produtos WHERE codigo=$codigo ORDER BY id"; $exec_produtos = mysql_query($consulta_produtos) or die (mysql_error()); while($dfor = mysql_fetch_array($exec_produtos)){ echo "$dfor[cod_produto]"."<br>"; } ?> Até aí, beleza... ele me mostra os códigos dos produtos que tem vinculo com o número do pedido. Agora eu preciso exibir o nome do produto de acordo com os códigos que ele está me exibindo no código acima. Usei isso: <? $exe2 = mysql_query("SELECT * FROM vendas_produtos WHERE codigo=$codigo ORDER BY id") or die(mysql_error()); while ($dados2 = mysql_fetch_array($exe2)){ $codigo_teste = $dados2["cod_produto"]."<br>"; } $desc_produtos = "SELECT * FROM produtos WHERE codigo=$codigo_teste"; $exec_desc = mysql_query($desc_produtos) or die (mysql_error()); while($nomefor = mysql_fetch_array($exec_desc)){ echo "$nomefor[nome]<br>"; } ?> Resultado: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Alguém pode me ajudar aí ? Sou iniciante no PHP, to me matando aqui... ehehe please ! Vlw... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 31, 2006 Switch, tente:$consulta_produtos = "SELECT vendas_produtos.*, produtos.nome FROM vendas_produtos INNER JOIN produtos ON vendas_produtos.codigo=produtos.id WHERE vendas_produtos.codigo=$codigo ORDER BY vendas_produtos.id";Assim os produtos retornam no campo nome.Não tive como testar, mas qualquer coisa, posta aí ;-)[]sAnderson Mello Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Maio 31, 2006 o Correto seria: SELECT vendas_produtos.*, produtos.nome FROM vendas_produtos INNER JOIN produtos ON vendas_produtos.cod_produto=produtos.codigo WHERE vendas_produtos.codigo=$codigo ORDER BY vendas_produtos.id Ele continou exibindo como antes. O meu problema está sendo nessa parte aqui <? $exe2 = mysql_query("SELECT vendas_produtos.*, produtos.nome FROM vendas_produtos INNER JOIN produtos ON vendas_produtos.cod_produto=produtos.codigo WHERE vendas_produtos.codigo=$codigo ORDER BY vendas_produtos.id") or die(mysql_error()); while ($dados2 = mysql_fetch_array($exe2)){ $codigo_teste = $dados2['cod_produto']."<br>"; } $desc_produtos = "SELECT nome FROM produtos WHERE codigo=$codigo_teste"; $exec_desc = mysql_query($desc_produtos) or die (mysql_error()); while($nomefor = mysql_fetch_array($exec_desc)){ echo "$nomefor[nome]"."<br>"; } ?> Eu quero exibir o nome do produto, que está na tabela "produtos" no campo "nome"... mas pra min exibir o nome, ele tem que puxar o código do produto, que está na tabela "vendas_produtos" no campo "cod_produtos" e relacionar com o campo "codigo" da tabela "produtos" Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 31, 2006 O erro é o mesmo de antes?Como tu vai exibir os dados? Todos juntos?Algo tipo Código da Venda - Código do Produto - Nome do Produto?[]sAnderson Mello Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Maio 31, 2006 Sim, é o mesmo erro de antes.É isso mesmo que eu quero exibir, essas 3 informações, sendo que o código do produto tem que ser somente o que está relacionado com a venda. Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 31, 2006 Bom, então dá pra fazer tudo numa única query. Recapitulando:TABELA produtosidcodigonomeTABELA "venda_produtos"idcodigocod_produto$codigo = $_POST['codigo']; //aqui nao sei como tu chama a variavel$q = mysql_query("SELECT venda_produtos.*, produtos.nome FROM venda_produtos INNER JOIN produtos ON venda_produtos.cod_produto=produtos.id WHERE vendas_produtos.codigo='$codigo'");while($r = mysql_fetch_array($q)) { $codigoVenda = $r['codigo']; $codigoProduto = $r['cod_produto']; $nomeProduto = $r['nome']; //exibe echo "$codigoVenda - $codigoProduto - $nomeProduto";}Veja bem: o erro antes acusava na primeira linha. Se o script que tu passou não é o início do arquivo, o erro pode ser bem antes do que estamos analisando. Dá uma conferida, qualquer coisa avisa aí.[]sAnderson Mello Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Maio 31, 2006 Ta retornando esse erro Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\root\eControl - Duda\vendas\incluir_produtos.php on line 517 $q = mysql_query("SELECT venda_produtos.*, produtos.nome FROM venda_produtos INNER JOIN produtos ON venda_produtos.cod_produto=produtos.id WHERE vendas_produtos.codigo='$codigo'"); while ($r = mysql_fetch_array($q)){ $codigoVenda = $r['codigo']; $codigoProduto = $r['cod_produto']; $nomeProduto = $r['nome']; echo "$codigoVenda - $codigoProduto - $nomeProduto"; } Linha 517 : while ($r = mysql_fetch_array($q)){ Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 31, 2006 A conexão do banco de dados é feita normalmente antes do script? Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Maio 31, 2006 Consegui resolver :D Ainda estou testando para ver se está perfeito, mas de imediato seria isso: <? $consulta_produtos = mysql_query("SELECT vendas_produtos.*, produtos.* FROM vendas_produtos INNER JOIN produtos ON vendas_produtos.cod_produto=produtos.codigo WHERE vendas_produtos.codigo=$codigo ORDER BY vendas_produtos.id") or die(mysql_error()); while ($exec = mysql_fetch_array($consulta_produtos)){ $codigo_teste = $exec['cod_produto']." - "; $nome_produto = $exec['nome']." - "; $quantidade = $exec['quant']." - "; $valor_vista= $exec['pvista']; if($formapg=="À Vista"){ $valor = $exec['pvista']." - "; } if($formapg=="À Prazo"){ $valor = (($valor_vista*13)/100) + $valor_vista." - "; } if($formapg=="Oficina"){ $valor = $exec['poficina']." - "; } if($formapg=="Atacado"){ $valor = $exec['patacado']." - "; } $valortotal = $valor*$quantidade."<br>"; echo "$codigo_teste"."$nome_produto"."$quantidade"."R$ $valor"."R$ $valortotal"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Maio 31, 2006 Pessoal, seguinte... O script acima está funcionando perfeito até agora, porém eu preciso fazer uma coisa e não estou conseguindo, segue a imagem dessa parte do sistema: A parte de produtos é o seguinte código: <? $consulta_produtos = mysql_query("SELECT vendas_produtos.*, produtos.* FROM vendas_produtos INNER JOIN produtos ON vendas_produtos.cod_produto=produtos.codigo WHERE vendas_produtos.codigo=$codigo ORDER BY vendas_produtos.id") or die(mysql_error()); while ($exec = mysql_fetch_array($consulta_produtos)){ $codigo_teste = $exec['cod_produto']; $nome_produto = $exec['nome']; $quantidade = $exec['quant']; $valor_vista= $exec['pvista']; if($formapg=="À Vista"){ $valor = $exec['pvista']; } if($formapg=="À Prazo"){ $valor = (($valor_vista*13)/100) + $valor_vista; } if($formapg=="Oficina"){ $valor = $exec['poficina']; } if($formapg=="Atacado"){ $valor = $exec['patacado']; } $valortotal = $valor*$quantidade; echo " <div align=center> <table width=100% border=0> <tr> <td height='1' width=10% align=left>$codigo_teste</td> <td height='1' width=50% align=left>$nome_produto</td> <td height='1' width=04% align=left>$quantidade</td> <td height='1' width=13% align=left>R$ $valor</td> <td height='1' width=13% align=left>R$ $valortotal</td> </tr> </table> </div> "; } ?>Ok, eu preciso fazer o seguinte, somar o total de cada item e fazer o total geral do pedido, como fazer isso ? Vlw... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Maio 31, 2006 Coloca dentro do while uma variavel e vá somando ela a cada loop ;-) Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Junho 1, 2006 Então, isso que eu não entendi http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Vou somar o que ? Não entendi como fazer, esse é o problema :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Junho 1, 2006 Então, isso que eu não entendi http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Vou somar o que ? Não entendi como fazer, esse é o problema :huh:Up ! http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif :( Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Junho 1, 2006 Então, vamos lá. Vi que você está utilizando várias condições para o pagamento, que resulta num $valortotal ($valor * $quantidade). O que tu precisa é somar este $valortotal, enquanto tiver produtos no pedido. Tente algo como://define variável que vai receber a soma$somaTotal = 0;while ($exec = mysql_fetch_array($consulta_produtos)){ $codigo_teste = $exec['cod_produto']; $nome_produto = $exec['nome']; $quantidade = $exec['quant']; $valor_vista= $exec['pvista']; if($formapg=="À Vista"){ $valor = $exec['pvista']; } if($formapg=="À Prazo"){ $valor = (($valor_vista*13)/100) + $valor_vista; } if($formapg=="Oficina"){ $valor = $exec['poficina']; } if($formapg=="Atacado"){ $valor = $exec['patacado']; } $valortotal = $valor*$quantidade;//soma o valortotal$somaTotal += $valortotal;... daqui em diante segue o códigoPra então exibir a soma, utilize um novo echo com uma linha da tabela, mas fora do while, senão a soma vai aparecer após cada produto :-p[]sAnderson Mello Compartilhar este post Link para o post Compartilhar em outros sites
Switch 0 Denunciar post Postado Junho 1, 2006 http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Valew Anderson !!! Eu não estava sabendo fazer a soma, nem lembrava do +=... hehehe :huh: Vlw aí ! Compartilhar este post Link para o post Compartilhar em outros sites
Anderson Mello 3 Denunciar post Postado Junho 1, 2006 Ok, de nada ;-) Compartilhar este post Link para o post Compartilhar em outros sites