Estou com em um beco sem saída, trabalhando a semanas encima de um sistema de orçamento on-line via web para um cliente, mas não estou conseguindo entregar o projeto no prazo prometido, por isso venho aqui pedir humildemente à ajuda dos colegas e profissionais na área.
Como vocês podem ver pela imagem em anexo abaixo, a estrutura web se compõe da seguinte maneira:
Nome do computador (cadastrado na tabela "micros")
Descrição do computador (também cadastrado na tabela "micros")
Foto (também cadastrado na tabela "micros")
e, é claro o padrão "cod_micro" (auto_increment) para gerar uma nova id à cada computador novo cadastrado.
Após o cadastro do computador, temos as seguintes opções de cotação para orçamento:
- Valor (Valor TOTAL da soma das peças padrões que compõe o micro, peças padrões são as primeiras selecionadas/marcadas em cada categoria).
Categorias distintas onde dentro de cada categoria há os produtos e valor de cada produto daquela categoria.
Para isto, tenho uma segunda tabela, chamada: "produtos_site" com os seguintes campos:
- id (auto_increment) - código automáticamente gerado a cada produto cadastrado
- cod_micro - código do computador que aquelas peças pertencem
- produto - nome do produto, ex: HD Samsung 250GB Sata2 7200RPM
- valor - valor do produto
- primeiro - se o produto será o primeiro da categoria a qual ele pertence, no caso, se ele será o padrão utilizado no orçamento
- categoria - categoria a qual o produto pertence (EX: PROCESSADORES, MEMÓRIAS, etc..)
Estou utilizando ajax pra gerar o valor a cada produto clicado, com o cálculo de:
VALOR TOTAL DO COMPUTADOR ( - ) O VALOR DO PRIMEIRO PRODUTO DA CATEGORIA ( + ) O VALOR DO PRODUTO CLICADO
Consigo calcular a soma, porém somente para uma categoria, ele não guarda/armazena/grava das outras categorias, somente 1 categoria fica gravado/somado.
O código utilizado para gerar o valor é o seguinte:
<?include("setup.php");$id = $_GET['id']; // Pega o código do produto clicado$categoria = $_GET['categoria']; // Pega a categoria do produto clicado$cod_micro = $_GET['cod_micro']; // Pega o código do computador#procedimentos#1. somar o valor total do computador pegando apenas o primeiro de cada categoria$pega_total_primeiro = mysql_query("SELECT SUM(valor) as total FROM produtos_site WHERE cod_micro = '$cod_micro' AND primeiro = '1'",$conexao) or die(mysql_error());$row1 = mysql_fetch_array($pega_total_primeiro);$valor_total_primeiro = $row1['total'];#2. se o id e a categoria estiverem preenchidos:if($id !== "" AND $categoria !== "") { #Valor do clicado$pega_valor_clicado = mysql_query("SELECT valor FROM produtos_site WHERE id = '$id'",$conexao) or die(mysql_error());$row2 = mysql_fetch_array($pega_valor_clicado);$valor_clicado = $row2['valor'];#valor do primeiro$pega_valor_primeiro = mysql_query("SELECT valor FROM produtos_site WHERE cod_micro = '$cod_micro' AND categoria = '$categoria' AND primeiro = '1'",$conexao) or die(mysql_error());$row3 = mysql_fetch_array($pega_valor_primeiro);$valor_categoria = $row3['valor'];} #declaração de variáveis$valor_total_micro = $row1['total'];$valor_clicado = $row2['valor'];$_SESSION['valor'] = $valor_clicado;$valor_categoria = $row3['valor'];if($id !== "" AND $categoria !== "") {$valor_final = $valor_total_micro-$valor_categoria+$valor_clicado;$valor_final = number_format($valor_final, 2, ',', '.');} else { $valor_final = $valor_total_micro;$valor_final = number_format($valor_final, 2, ',', '.');}echo $valor_final;?>
O código para gerar a página de categorias e produtos é:
<?$cod_micro = $_GET['cod_micro'];$pega_categorias = mysql_query("SELECT * FROM produtos_site WHERE site = '1' AND cod_micro = '$cod_micro' group by categoria",$conexao) or die(mysql_error());while($line = mysql_fetch_array($pega_categorias)) { ?> <form action="" method="post" name="orcamento" id="orcamento"> <table width="100%" border="0" cellspacing="0" cellpadding="1"> <tr> <td colspan="2" bgcolor="#F8F8F8" class="style4 style5"> <? echo $line['categoria']; ?></td> </tr><?$cod_micro = $_GET['cod_micro'];$pega_produtos = mysql_query("SELECT * FROM produtos_site WHERE site = '1' AND categoria = '$line[categoria]' AND cod_micro = '$cod_micro' order by primeiro desc",$conexao) or die(mysql_error());while($row = mysql_fetch_array($pega_produtos)) {$valor_primeiro = mysql_query("SELECT * FROM produtos_site WHERE primeiro = '1' AND cod_micro = '$row[cod_micro]' AND categoria = '$row[categoria]'",$conexao) or die(mysql_error());$line = mysql_fetch_array($valor_primeiro);$valor_primeiro = $line['valor']; ?> <tr><td width="67%"><input name="id" id="id" type="radio" value="<? echo $row['id']; ?>" onClick="getvalor('<? echo $row['id']; ?>','<? echo $row['categoria']; ?>','<? echo $row['cod_micro']; ?>')" <? if($row['primeiro'] == 1) { echo "checked"; } ?> /><font color="#333333" size="1" face="Tahoma, Arial, sans-serif"><? echo $row['produto']; ?></font></td> <td width="33%"><div align="left"><strong><font color="#333333" size="1" face="Tahoma, Arial, sans-serif"><? $valor = $row['valor']-$valor_primeiro; if($row['primeiro'] != 1 AND $valor != 0) { ?>(+ R$ <? echo $valor ?>.00)<? } else { ?>(<? echo $row['valor']; ?>)<? } ?> </font></strong></div></td> </tr> <? } ?> </table> </form> <? echo "\n<br>"; } ?>
Se quiserem testar, disponibilizo este link para entenderem melhor o meu problema:
http://www.bjnet.com...hp?cod_micro=12
Se vocês tiverem idéia sobre como posso resolver este problema ficaria muitíssimo grato.
Desde já agradeço a atenção de todos!
Attached Files
Edição feita por: kohler, 12/11/2007, 16:03.