Ricardo Gonçalves Posted May 28, 2012 at 05:47 PM Report #458611 Posted May 28, 2012 at 05:47 PM Boa tarde, Estou a ter um problemas em passar dados de uma página para a outra é que eu criei um carrinho de compras em que ao finalizar a comprar apresenta-lhe uma fatura de pagamento e eu não estou a conseguir passar valores de uma página para outra, os dados do cliente consigo passar agora o preço a quantidade e o produto não estou a conseguir passar. Alguém sabes como fazer isto, eu pensava que era como o GET que se fazia isto mas não está a resultar ou sou eu que estou a fazer mal. Obrigado.
dash Posted May 28, 2012 at 06:02 PM Report #458614 Posted May 28, 2012 at 06:02 PM Pode ser com GET, com POST ou até mesmo com variáveis de sessão, mas se não mostrares o código parece-me impossível alguém te conseguir ajudar.
Ricardo Gonçalves Posted May 28, 2012 at 06:07 PM Author Report #458616 Posted May 28, 2012 at 06:07 PM o Código seguinte é o que eu tenho na pagina do carrinho <form action="carrinho.php?acao=modifica" method="post"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> <th width="15%" scope="col"> </th> </tr> <? $sql_meu_carrinho = "SELECT id_pedidos, id_produto, descricao, marca, modelo, tipo_produto, preco, qtd FROM pedidos p JOIN tipo_produto tp ON p.id_tipo = tp.id_tipo WHERE sessao = '".session_id()."' ORDER BY modelo ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $ligacaoDB) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']); ?> <tr> <td> <span class="style3"> <strong><?=$row_rs_produto_carrinho['tipo_produto']?></strong><br /> <strong>Marca:</strong> <?=$row_rs_produto_carrinho['marca']?> - <strong>Modelo:</strong> <?=$row_rs_produto_carrinho['modelo']?><br /> <strong>Descrição:</strong> <?=$row_rs_produto_carrinho['descricao']?> </span> </td> <td> <div align="center" class="style3"> <?= number_format($row_rs_produto_carrinho['preco'],2,",","."); ?> </div> </td> <td> <div align="center" class="style3"> <input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['id_produto']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /> </div> </td> <td> <div align="center" class="style3"> <?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?> </div> </td> <td> <div align="center"> <a href="carrinho.php?id_produto=<?=$row_rs_produto_carrinho['id_produto']?>&acao=excluir"> <img src="imgs/del_carrinho.jpg" width="110" height="21" border="0" /></a> </div> </td> </tr> <? } } ?> <tr> <td colspan="3"> <div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div> </td> <td> <div align="center" class="style3 style4"> <?= isset($soma_carrinho)?number_format($soma_carrinho,2,"."," ").' € ':'0.00 €';?> </div> </td> <td> </td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="33%" height="60" scope="col"> <span class="style3"> <a href="index.php"><img src="imgs/comprando.jpg" width="146" height="31" border="0" /></a> </span> </th> <th width="33%" scope="col"><?php echo '<a href="fatura.php?id_produto='.$id_produto.'&acao=incluir">';?>Finalizar a compra </a></th> <th width="34%" scope="col"> <label> <input type="image" name="imageField" src="imgs/atualizar.jpg" /></label> </th> </tr> </table></td> </tr> </table> </form> este é o código que tenho na fatura: if ($acao == "incluir") { $sql = 'SELECT id_produto, preco FROM pedidos WHERE id_pedidos = "'.$id_pedidos.'"'; $sql_prods = mysql_query($sql, $db); //echo $sql; if (mysql_num_rows($sql_prods)>0) { $linha=mysql_fetch_assoc($sql_prods); extract($linha); } } $preco = isset($_GET['preco'])? $_GET['preco']: ''; <table id="meta"> <tr> <td class="meta-head">Fatura nr.</td> <td><input id="id_produto" style="border:0px; text-align:right" readonly="readonly" value="<?=$id_produto;?>"></td> </tr> <tr> <td class="meta-head">Data</td> <td><?php echo date('Y-m-d'); ?></td> </tr> <tr> <td class="meta-head">Pagamento</td> <td><div class="due"><?=$preco.' € '?> Neste código teste em passar o preço do carrinho para a factura e não consigo e utilizei o get como já tinha dito antes.
johnmaia Posted May 28, 2012 at 06:19 PM Report #458621 Posted May 28, 2012 at 06:19 PM Não estás a receber porque não o estás a enviar. Tenta assim: <form action="carrinho.php?acao=modifica" method="post"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> <th width="15%" scope="col"> </th> </tr> <? $sql_meu_carrinho = "SELECT id_pedidos, id_produto, descricao, marca, modelo, tipo_produto, preco, qtd FROM pedidos p JOIN tipo_produto tp ON p.id_tipo = tp.id_tipo WHERE sessao = '".session_id()."' ORDER BY modelo ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $ligacaoDB) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']); ?> <tr> <td> <span class="style3"> <strong><?=$row_rs_produto_carrinho['tipo_produto']?></strong><br /> <strong>Marca:</strong> <?=$row_rs_produto_carrinho['marca']?> - <strong>Modelo:</strong> <?=$row_rs_produto_carrinho['modelo']?><br /> <strong>Descrição:</strong> <?=$row_rs_produto_carrinho['descricao']?> </span> </td> <td> <div align="center" class="style3"> <?= number_format($row_rs_produto_carrinho['preco'],2,",","."); ?> </div> </td> <td> <div align="center" class="style3"> <input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['id_produto']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /> </div> </td> <td> <div align="center" class="style3"> <?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?> </div> </td> <td> <div align="center"> <a href="carrinho.php?id_produto=<?=$row_rs_produto_carrinho['id_produto']?>&acao=excluir"> <img src="imgs/del_carrinho.jpg" width="110" height="21" border="0" /></a> </div> </td> </tr> <? } } ?> <tr> <td colspan="3"> <div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div> </td> <td> <div align="center" class="style3 style4"> <?= isset($soma_carrinho)?number_format($soma_carrinho,2,"."," ").' € ':'0.00 €';?> </div> </td> <td> </td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="33%" height="60" scope="col"> <span class="style3"> <a href="index.php"><img src="imgs/comprando.jpg" width="146" height="31" border="0" /></a> </span> </th> <th width="33%" scope="col"><?php echo '<a href="fatura.php?id_produto='.$id_produto.'&preco='.$soma_carrinho.'&acao=incluir">';?>Finalizar a compra </a></th> <th width="34%" scope="col"> <label> <input type="image" name="imageField" src="imgs/atualizar.jpg" /></label> </th> </tr> </table></td> </tr> </table> </form> Apesar de que eu aconselhava-te a guardar o valor total do carrinho num sitio mais seguro. Por caso contrário é muito facil alterar o valor final do teu carrinho, se esse valor for enviado pelo GET. Tens duas hipóteses, ou calculas o valor do carrinho novamente na pagina da factura, ou então, guardas o valor na BD e recolhes o valor de lá quando quizeres imprimir a factura.
Ricardo Gonçalves Posted May 28, 2012 at 07:04 PM Author Report #458639 Posted May 28, 2012 at 07:04 PM consegui com o código que postas-te agora em relação ao modelo marca descrição ... já não consigo, reparei que mexes-te no link eu no link acresceitei por exemplo a marca , e pus na página fatura o get da marca e já não deu, fica em Branco, eu para criar a variável marca posso faz como está embaixo não posso? $marca = $row_rs_produto_carrinho['marca']; depois no link ponho $marca não é?
johnmaia Posted May 28, 2012 at 08:55 PM Report #458676 Posted May 28, 2012 at 08:55 PM consegui com o código que postas-te agora em relação ao modelo marca descrição ... já não consigo, reparei que mexes-te no link eu no link acresceitei por exemplo a marca , e pus na página fatura o get da marca e já não deu, fica em Branco, eu para criar a variável marca posso faz como está embaixo não posso? $marca = $row_rs_produto_carrinho['marca']; depois no link ponho $marca não é? Se queres acrescentar a variável $marca no url, o código ficará assim: <? echo '<a href="fatura.php?id_produto='.$id_produto.'&preco='.$soma_carrinho.'&marca='.$marca.'&acao=incluir">';?>Finalizar a compra </a> E no ficheiro fatura.php, terás de acrescentar esta linha: $marca = $_GET['marca'];
Ricardo Gonçalves Posted May 28, 2012 at 09:04 PM Author Report #458681 Posted May 28, 2012 at 09:04 PM já vi onde tinha-me errado, agora está a funcionar, o único problema é que me transfere para a factura o último produto, e eu queria que passa-se todos os produtos que estão no carrinho, como faço isso?
johnmaia Posted May 28, 2012 at 09:10 PM Report #458683 Posted May 28, 2012 at 09:10 PM (edited) já vi onde tinha-me errado, agora está a funcionar, o único problema é que me transfere para a factura o último produto, e eu queria que passa-se todos os produtos que estão no carrinho, como faço isso? Para isso o melhor mesmo será então recolheres os produtos, preço final, etc... como recolhes no ficheiro carrinho.php Edited May 28, 2012 at 09:12 PM by johnmaia
Ricardo Gonçalves Posted May 28, 2012 at 09:14 PM Author Report #458686 Posted May 28, 2012 at 09:14 PM para recolher toda a informação tem de ser no carrinho.php tenho que criar uma variável que la dentro contenha todo e depois transfiro essa variável para a factura? é que se for isto não estou a ver como posso fazer.
johnmaia Posted May 28, 2012 at 09:23 PM Report #458693 Posted May 28, 2012 at 09:23 PM para recolher toda a informação tem de ser no carrinho.php tenho que criar uma variável que la dentro contenha todo e depois transfiro essa variável para a factura? é que se for isto não estou a ver como posso fazer. O que tu queres é por exemplo um Array de Produtos. Mas esse tipo de variaveis não podem ser enviadas de uma página para outra. A unica forma que tu tens mesmo, é armazenar aquilo que está no carrinho na tua base de dados, numa tabela que guarda o id_cliente, id_produto e quantidade, e depois na factura listavas todos os produtos que estivessem relacionados com o do id_cliente que gerou a lista do carrinho de compras. E já agora, quando essa factura fosse criada, ou seja, a compra tivesse sido concluido, transferir todos os elementos dessa tabela, para uma tabela com as listas de compras, onde era guardado: id_compra, id_cliente, id_produto, quantidade. O id_compra seria igual para todos os elementos da mesma compra. Depois para guardar mais dados relacionadas com a compra, criavas mais uma tabela com: id_compra, datahora, etc.
Ricardo Gonçalves Posted May 28, 2012 at 09:31 PM Author Report #458697 Posted May 28, 2012 at 09:31 PM eu tabelas já tenho que no carrinho quando o cliente finaliza a compra quando clica "finalizar a comprar" ele é recaminhado para a fatura e automaticamente grava na BD com o nome pedidos que é para depois o dono do site através de uma página que vou criar apresenta-lhe todos os pedidos que foram efectuados. Se eu fizer o que estás a dizer por exemplo eu faço 1 comprar ao finalizar vai para a tabela e depois apresenta na factura, mas depois de ter finalizado esqueci-me de fazer um pedido de outro material, se for no mesmo dia fazer o pedido, na 2ª vez ia aparecer o pedido que eu fiz naquele momento e o pedido que fiz anteriormente. e o problema é este que não estou a conseguir resolver isto
johnmaia Posted May 28, 2012 at 10:14 PM Report #458715 Posted May 28, 2012 at 10:14 PM (edited) eu tabelas já tenho que no carrinho quando o cliente finaliza a compra quando clica "finalizar a comprar" ele é recaminhado para a fatura e automaticamente grava na BD com o nome pedidos que é para depois o dono do site através de uma página que vou criar apresenta-lhe todos os pedidos que foram efectuados. Se eu fizer o que estás a dizer por exemplo eu faço 1 comprar ao finalizar vai para a tabela e depois apresenta na factura, mas depois de ter finalizado esqueci-me de fazer um pedido de outro material, se for no mesmo dia fazer o pedido, na 2ª vez ia aparecer o pedido que eu fiz naquele momento e o pedido que fiz anteriormente. e o problema é este que não estou a conseguir resolver isto Não porque ao finalizares a compra, deves eliminar todas as ocorrencias do id_cliente na tabela carrinho (suponhamos: tcarrinho). E essas ocorrencias devem ser todas guardadas numa tabela de encomendas (tencomendas). Ao serem guardadas nessa tabela, deves gerar um id_encomenda, em que é único para essas ocorrencias todas. Por exemplo: O cliente (21) vai escolhendo os produtos, e vai adicionando os produtos que quer no seu carrinho de compras: O cliente (21) conclui a compra, e então ao clicar em finalizar a compra, a tabela carrinho ficará assim: Repara como os produtos do resto dos clientes (55) continuam na lista, e só as linhas do cliente 21 é que foram removidas e enviadas para a tabela de encomendas: Podes ainda pensar em guardar o preço dos produtos, nessa mesma tabela, uma vez que mais tarde pode não dar para recalcular o valor original da encomenda se o preço dos produtos for alterado. Podes ainda ter uma outra tabela que guarda mais informação sobre a encomenda: Podes até guardar o valor final, a taxa de iva utilizada, taxa de desconto, forma de pagamento, estado da encomenda (entregue/não entregue/enviado), morada da entrega, etc... Espero que tenha ficado mais claro. Edited May 28, 2012 at 10:36 PM by johnmaia
Ricardo Gonçalves Posted May 29, 2012 at 06:17 PM Author Report #458982 Posted May 29, 2012 at 06:17 PM Então acho que eu estou a fazer mal porque eu na BD tenho uma tabela a que chamei produto onde aqui tenho id_produto , id_tipo (aqui vai buscar á outra tabela a que tipo de produto o cd pretence) tenho a marca, preco, descricao, stock e a extenção da imagem porque eu tenho uma opção que ele vai buscar á pasta a imagem que eu quero atraves do nome que ponho aqui. Depois tenho a tabela pedidos onde ai tenho campos com id_pedidos , id_produto , id_utilizador (aqui ainda ma está a dar mal porque fica a 0) , modelo, marca, data_pedido, preco, descricao, qtd, id_ipo eu meti também sessao mas acho que vou tirar, que ao carregar no botão "finalizar" a compra ele é adicionado nesta tabela e automaticamente ele vai logo para a Factura. o que estás a dizer tenho que criar mais duas tabelas na BD?
johnmaia Posted May 29, 2012 at 06:26 PM Report #458983 Posted May 29, 2012 at 06:26 PM Então acho que eu estou a fazer mal porque eu na BD tenho uma tabela a que chamei produto onde aqui tenho id_produto , id_tipo (aqui vai buscar á outra tabela a que tipo de produto o cd pretence) tenho a marca, preco, descricao, stock e a extenção da imagem porque eu tenho uma opção que ele vai buscar á pasta a imagem que eu quero atraves do nome que ponho aqui. Depois tenho a tabela pedidos onde ai tenho campos com id_pedidos , id_produto , id_utilizador (aqui ainda ma está a dar mal porque fica a 0) , modelo, marca, data_pedido, preco, descricao, qtd, id_ipo eu meti também sessao mas acho que vou tirar, que ao carregar no botão "finalizar" a compra ele é adicionado nesta tabela e automaticamente ele vai logo para a Factura. o que estás a dizer tenho que criar mais duas tabelas na BD? Aquilo que eu mostrei é só uma sugestão, não estou a dizer que tens de alterar o teu sistema todo. Se perceberes como funciona o sistema que eu sugeri, então saberás o que tens de alterar.
Ricardo Gonçalves Posted May 29, 2012 at 06:32 PM Author Report #458986 Posted May 29, 2012 at 06:32 PM sim eu percebi o que posso fazer e como tu disses-te e tem lógica é o seguinte enquanto o cliente está a meter produtos no carrinho ele está a inserir para a tabela carrinho, depois de ele carregar no botão finalizar o programa transfere todos os dados que estão na tabela carrinho para a tabela pedidos, posso fazer assim não posso?
Paulo Jorge Posted May 29, 2012 at 06:39 PM Report #458989 Posted May 29, 2012 at 06:39 PM (edited) aqui tens o teu carrinho.php, fiz ainda há pouco o código pois tambem estou a fazer um carrinho de compras. <!DOCTYPE html> <!-- Template by freewebsitetemplates.com --> <html> <head> <script type="text/javascript"> function confirmation() { var answer = confirm("Deseja Confirmar ?") if (answer){ window.location = "pagar.php"; } else{ window.location = "carrinho.php"; } } </script> <meta charset="utf-8" /> <title>Inforbew</title> <link rel="stylesheet" type="text/css" href="style.css" media="all" /> <style type="text/css"> <!-- .style7 { font-family: Arial, Helvetica, sans-serif; font-size: 24cm; } .style8 {font-size: x-large} .style13 {font-size: smaller} .style16 {font-size: medium} .style18 { font-family: Arial, Helvetica, sans-serif; color: #00FFFF; font-weight: bold; } --> </style> </head> <?php session_start(); if ($_SESSION['Utilizador']<>"") { ?> <body> <div id="header"> <div id="logo"> <a href="index.html"><img src="images/infor.jpg" alt="" width="350" /></a> </div> <ul> <li><a href="logout.php"><span>logout</span></a></li> <li><a href="Conta.php">Conta </a></li> <li class="selected"><a href="carrinho.php">Meu carrinho</a></li> <li><a href="produtos.php"><span>Produtos</span></a></li> <li><a href="contactos.php"><span>Contactos</span></a></li> </ul> </div> <?php // Iniciamos nossa sess?o que vai indicar o usu?rio pela session_id $conexao = mysql_connect("localhost", "root", ""); if (!$conexao) { die('N?o foi poss?vel conectar: ' . mysql_error()); } //serve para reconhecer os caracteres especiais header('Content-Type: text/html; charset=utf-8'); mysql_query("SET NAMES 'utf8'"); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_results=utf8'); //leitura de uma tabela na base de dados $select = mysql_select_db("inforbew", $conexao); if (!$select) { die ('N?o ? poss?vel utilizar a Bade de Dados ?inforbew?: ' . mysql_error()); } // Recuperamos os valores passados por parametros if (isset ($_GET['acao'])) $acao = $_GET['acao']; else $acao = ''; if (isset($_GET['cod'])) $cod = $_GET['cod']; // Verificamos se a acao ? igual a incluir if ($acao == "incluir") { // Verificamos se cod do produto ? diferente de vazio if ($cod != '') { // Se for diferente de vazio verificamos se ? num?rico if (is_numeric($cod)) { // Tratamos a variavel de caracteres indevidos $cod = addslashes(htmlentities($cod)); // Verificamos se o produto referente ao $cod j? est? no carrinho para o session id correnpondente $query_rs_carrinho = "SELECT * FROM carrinho WHERE carrinho.cod = '".$cod."' AND carrinho.sessao = '".session_id()."'"; $rs_carrinho = mysql_query($query_rs_carrinho, $conexao) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho); $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho); // Se o total for igual a zero ? sinal que o produto ainda n?o est? no carrinho if ($totalRows_rs_carrinho == 0) { // Aqui pegamos os dados do produto a ser incluido no carrinho $query_rs_produto = "select * from artigos where PK_Cod_Artigo = '".$cod."'"; $rs_produto = mysql_query($query_rs_produto, $conexao) or die(mysql_error()); $row_rs_produto = mysql_fetch_assoc($rs_produto); $totalRows_rs_produto = mysql_num_rows($rs_produto); // Se total for maior que zero esse produto existe e ent?o podemos incluir no carrinho if ($totalRows_rs_produto > 0) { $registro_produto = mysql_fetch_assoc($rs_produto); // Incluimos o produto selecionado no carrinho de compras $add_sql = "INSERT INTO carrinho (id, cod, nome, Preco, qtd, sessao) VALUES ('','".$row_rs_produto['PK_Cod_Artigo']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')"; $rs_produto_add = mysql_query($add_sql, $conexao) or die(mysql_error()); $registro_produto = mysql_fetch_assoc($rs_produto); // Verificamos se o produto referente ao $cod j? est? no carrinho para o session id correnpondente $query_rs_carrinho = "SELECT * FROM carrinho WHERE carrinho.cod = '".$cod."' AND carrinho.sessao = '".session_id()."'"; $rs_carrinho = mysql_query($query_rs_carrinho, $conexao) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_carrinho); $totalRows_rs_carrinho = mysql_num_rows($rs_carrinho); // Se o total for igual a zero ? sinal que o produto ainda n?o est? no carrinho if ($totalRows_rs_carrinho > 0) { // Aqui pegamos os dados do produto a ser incluido no carrinho $query_rs_cliente = "select * from clientes where PK_Cod_Cliente = '".$_SESSION['id']."'"; $rs_cliente = mysql_query($query_rs_cliente, $conexao) or die(mysql_error()); $row_rs_cliente = mysql_fetch_assoc($rs_cliente); $totalRows_rs_cliente = mysql_num_rows($rs_cliente); } } } } } } // Verificamos se a acao ? igual a excluir if ($acao == "pagar") { echo "<SCRIPT LANGUAGE='javascript'>confirmation();</SCRIPT>"; } // Verificamos se a acao ? igual a excluir if ($acao == "excluir") { // Verificamos se cod do produto ? diferente de vazio if ($cod != '') { // Se for diferente de vazio verificamos se ? num?rico if (is_numeric($cod)) { // Tratamos a variavel de caracteres indevidos $cod = addslashes(htmlentities($cod)); // Verificamos se o produto referente ao $cod est? no carrinho para o session id correnpondente $query_rs_car = "SELECT * FROM carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'"; $rs_car = mysql_query($query_rs_car, $conexao) or die(mysql_error()); $row_rs_carrinho = mysql_fetch_assoc($rs_car); $totalRows_rs_car = mysql_num_rows($rs_car); // Se encontrarmos o registro, excluimos do carrinho if ($totalRows_rs_car > 0) { $sql_carrinho_excluir = "DELETE FROM carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'"; $exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conexao) or die(mysql_error()); } } } } // Verificamos se a a??o ? de modificar a quantidade do produto if ($acao == "modifica") { $quant = $_POST['qtd']; // Se for diferente de vazio verificamos se ? num?rico if (is_array($quant)) { // Aqui percorremos o nosso array foreach($quant as $cod => $qtd) { // Verificamos se os valores s?o do tipo numeric if(is_numeric($cod) && is_numeric($qtd)) { // Fazemos nosso update nas quantidades dos produtos $sql_modifica = "UPDATE carrinho SET qtd = '$qtd' WHERE cod = '$cod' AND sessao = '".session_id()."'"; $rs_modifica = mysql_query($sql_modifica, $conexao) or die(mysql_error()); } } } } ?> <div align="center"> </div> <form action="carrinho.php?acao=modifica" method="post"> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> <th width="15%" scope="col"> </th> </tr> <? $sql_meu_carrinho = "SELECT * FROM carrinho WHERE sessao = '".session_id()."' ORDER BY nome ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $conexao) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['Preco']*$row_rs_produto_carrinho['qtd']); ?> <tr> <td><span class="style3"> <?=$row_rs_produto_carrinho['nome']?> </span></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['Preco'],2,",","."); ?></div></td> <td><div align="center" class="style3"><input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /></div></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['Preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?></div></td> <td><div align="center"><a href="carrinho.php?cod=<?=$row_rs_produto_carrinho['cod']?>&acao=excluir"><img src="imgs/del_carrinho.jpg" width="110" height="21" border="0" /></a></div></td> </tr> <?php } } ?> <tr> <td colspan="3"><div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div></td> <td><div align="center" class="style3 style4"> <?= number_format($soma_carrinho,2,",","."); ?></div></td> <td> </td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <th width="33%" height="60" scope="col"><span class="style3"><a href="produtos.php"><img src="imgs/comprando.jpg" width="287" height="40" border="0" /></a></span></th> <th width="33%" height="60" scope="col"><span class="style3"><a href="carrinho.php?cod=<?=$row_rs_produto_carrinho['cod']?>&acao=pagar"><img src="imgs/pagar.jpg" width="287" height="40" border="0" /></a></span></th> <th width="34%" scope="col"><label><input type="image" name="imageField" src="imgs/atualizar1.jpg" /> </label></th> </tr> </table></td> </tr> </table> </form> </body> <?php } ?> </html> ao clicares em pagar vai-te abrir a pagar.php onde irá mandar o pdf com a encomenda para o e-mail do cliente. <DOCTYPE html> <!-- Template by freewebsitetemplates.com --> <html> <head> <meta charset="utf-8" /> <title>Inforbew</title> <link rel="stylesheet" type="text/css" href="style.css" media="all" /> <style type="text/css"> <!-- .style7 { font-family: Arial, Helvetica, sans-serif; font-size: 24cm; } .style8 {font-size: x-large} .style13 {font-size: smaller} .style16 {font-size: medium} .style18 { font-family: Arial, Helvetica, sans-serif; color: #00FFFF; font-weight: bold; } --> </style> </head> <?php session_start(); if ($_SESSION['Utilizador']<>"") { ?> <body> <div id="header"> <div id="logo"> <a href="index.html"><img src="images/infor.jpg" alt="" width="350" /></a> </div> <ul> <li><a href="logout.php"><span>logout</span></a></li> <li><a href="Conta.php">Conta </a></li> <li class="selected"><a href="carrinho.php">Meu carrinho</a></li> <li><a href="produtos.php"><span>Produtos</span></a></li> <li><a href="contactos.php"><span>Contactos</span></a></li> </ul> </div> <?php // Iniciamos nossa sess?o que vai indicar o usu?rio pela session_id $conexao = mysql_connect("localhost", "root", ""); if (!$conexao) { die('N?o foi poss?vel conectar: ' . mysql_error()); } //serve para reconhecer os caracteres especiais header('Content-Type: text/html; charset=utf-8'); mysql_query("SET NAMES 'utf8'"); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_results=utf8'); //leitura de uma tabela na base de dados $select = mysql_select_db("inforbew", $conexao); if (!$select) { die ('N?o ? poss?vel utilizar a Bade de Dados ?inforbew?: ' . mysql_error()); } // Recuperamos os valores passados por parametros if (isset ($_GET['acao'])) $acao = $_GET['acao']; else $acao = ''; if (isset($_GET['cod'])) $cod = $_GET['cod']; $date = date('Y-n-j H:i:s'); $sql_clientes = "SELECT * FROM clientes WHERE Username = '".$_SESSION['Utilizador']."' ORDER BY nome ASC"; $exec_clientes = mysql_query($sql_clientes, $conexao) or die(mysql_error()); $qtd_clientes = mysql_num_rows($exec_clientes); if ($qtd_clientes > 0) { $row_rs_clientes = mysql_fetch_assoc($exec_clientes); } $nome_clientes = $row_rs_clientes['Nome']; $email_clientes = $row_rs_clientes['Email']; $codigo_clientes = $row_rs_clientes['PK_Cod_Cliente']; // Incluimos o produto selecionado no carrinho de compras $add_sql = "INSERT INTO encomendacliente (FK_Cod_Cliente, Data, session_id) VALUES ('".$_SESSION['id']."','".$date."','".session_id()."')"; //echo $add_sql; $rs_produto_add = mysql_query($add_sql, $conexao) or die(mysql_error()); // selecionar a tabela encomenda cliente por codcliente = $_SESSION['id'] e session id () // Verificamos se o produto referente ao $cod est? no carrinho para o session id correnpondente $query_rs_car1 = "SELECT PK_Cod_Encomenda FROM encomendacliente WHERE FK_Cod_Cliente = '".$_SESSION['id']."' AND session_id = '".session_id()."'"; $rs_car1 = mysql_query($query_rs_car1, $conexao) or die(mysql_error()); $row_rs_carrinho1 = mysql_fetch_array($rs_car1); // Verificamos se o produto referente ao $cod est? no carrinho para o session id correnpondente $query_rs_car = "SELECT * FROM carrinho WHERE sessao = '".session_id()."'"; $rs_car = mysql_query($query_rs_car, $conexao) or die(mysql_error()); while ($row_rs_carrinho = mysql_fetch_array($rs_car)) { // Incluimos o produto selecionado no carrinho de compras $add_sql = "INSERT INTO encomenda_cliente_detalhe (FK_Cod_Encomenda_Cliente, FK_Cod_Artigo, Quantidade, Preco_Uni, Iva, session_id) VALUES ('".$row_rs_carrinho1['PK_Cod_Encomenda']."', '".$row_rs_carrinho['cod']."', '".$row_rs_carrinho['qtd']."','".$row_rs_carrinho['Preco']."','0.21','".session_id()."')"; // $rs_produto_add = mysql_query($add_sql, $conexao) or die(mysql_error()); //$registro_produto = mysql_fetch_assoc($rs_produto_add); } // Verificamos se o produto referente ao $cod est? no carrinho para o session id correnpondente $query_rs_encomenda = "SELECT * FROM encomendacliente WHERE FK_Cod_Cliente = '".$_SESSION['id']."' AND session_id = '".session_id()."'"; $rs_encomenda = mysql_query($query_rs_encomenda, $conexao) or die(mysql_error()); $row_rs_encomenda = mysql_fetch_array($rs_encomenda); $codigo_encomenda = $row_rs_encomenda['PK_Cod_Encomenda']; $data_encomenda = $row_rs_encomenda['Data']; $conexao = mysql_connect("localhost", "root", ""); if (!$conexao) { die('Não foi possível conectar: ' . mysql_error()); } //serve para reconhecer os caracteres especiais header('Content-Type: text/html; charset=utf-8'); mysql_query("SET NAMES 'utf8'"); mysql_query('SET character_set_connection=utf8'); mysql_query('SET character_set_client=utf8'); mysql_query('SET character_set_results=utf8'); //leitura de uma tabela na base de dados $select = mysql_select_db("inforbew", $conexao); if (!$select) { die ('Não é possível utilizar a Bade de Dados «inforbew»: ' . mysql_error()); } ?> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">Cliente</div></th> <th width="22%" scope="col">Data</th> </tr> <tr> <td><span class="style3"> <?=$nome_clientes?> </span></td> <td><div align="center" class="style3"><?= date('l jS \of F Y h:i:s A') ?></div></td> </tr> <tr> <td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> </tr> </table></td> </tr> </table> <br> </br> <table width="100%" border="1" cellspacing="0" cellpadding="0"> <tr> <th width="36%" scope="col"><div align="left">PRODUTO</div></th> <th width="22%" scope="col">PREÇO</th> <th width="13%" scope="col">QUANTIDADE</th> <th width="14%" scope="col">SUBTOTAL</th> </tr> <? $sql_meu_carrinho = "SELECT * FROM carrinho WHERE sessao = '".session_id()."' ORDER BY nome ASC"; $exec_meu_carrinho = mysql_query($sql_meu_carrinho, $conexao) or die(mysql_error()); $qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho); if ($qtd_meu_carrinho > 0) { $soma_carrinho = 0; while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho)) { $soma_carrinho += ($row_rs_produto_carrinho['Preco']*$row_rs_produto_carrinho['qtd']); ?> <tr> <td><span class="style3"> <?=$row_rs_produto_carrinho['nome']?> </span></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['Preco'],2,",","."); ?></div></td> <td><div align="center" class="style3"><?=$row_rs_produto_carrinho['qtd']?></div></td> <td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['Preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?></div></td> </tr> <?php } } ?> <tr> <td colspan="3"><div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div></td> <td><div align="center" class="style3 style4"> <?= number_format($soma_carrinho,2,",","."); ?></div></td> </tr> </table> </table> <?php // value sent from form // value sent from form $nome=$nome_clientes; $email=$email_clientes; $nome_artigo=$row_rs_produto_carrinho['nome']; $assunto='Confirmação da Encomenda !'; $mensagem='Obrigado por ter efectuado a sua encomenda. Em anexo segue-se a nota de encomenda respectiva ao seu pedido ! Atenciosamente Paulo Lopes'; require_once('tcpdf/config/lang/eng.php'); require_once('tcpdf/tcpdf.php'); // create new PDF document $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // set document information $pdf->SetCreator(PDF_CREATOR); $pdf->SetAuthor('Paulo Lopes'); $pdf->SetTitle('Inforbew'); $pdf->SetSubject('Nota de Encomenda'); $pdf->SetKeywords('TCPDF, PDF, example, test, guide'); // set default header data $pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE.' 048', PDF_HEADER_STRING); // set header and footer fonts $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // set default monospaced font $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED); //set margins $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->SetHeaderMargin(PDF_MARGIN_HEADER); $pdf->SetFooterMargin(PDF_MARGIN_FOOTER); //set auto page breaks $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); //set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO); //set some language-dependent strings $pdf->setLanguageArray($l); // --------------------------------------------------------- // set font $pdf->SetFont('helvetica', 'B', 20); // add a page $pdf->AddPage(); $pdf->Write(0, "Nota de Encomenda nº: $codigo_encomenda", '', 0, 'L', true, 0, false, false, 0); $pdf->SetFont('helvetica', '', 8); // ----------------------------------------------------------------------------- $tbl = <<<EOD <table cellspacing="0" cellpadding="1" border="1"> <tr> <td rowspan="3"><h3><b>Cliente</b></h3><br />$nome </td> <td rowspan="3"><h3><b>Data</b></h3><br />$data_encomenda </td> </tr> </table> EOD; $pdf->writeHTML($tbl, true, false, false, false, ''); // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- $html = ' <style> table { border-collapse: collapse; border-spacing: 0; margin: 0 20px; } tr { padding: 3px 0; } th { background-color: #CCCCCC; border: 1px solid #DDDDDD; color: #333333; font-family: trebuchet MS; font-size: 30px; padding-bottom: 4px; padding-left: 6px; padding-top: 5px; text-align: left; } td { border: 1px solid #CCCCCC; font-size: 25px; padding: 3px 7px 2px; } </style> <table width="600" cellspacing="2" cellpadding="1" border="0"> <tr style="background-color:#FF0000;color:#FFFF00;"> <th><font face="Arial, Helvetica, sans-serif">Produto</font></th> <th><font face="Arial, Helvetica, sans-serif">Preco</font></th> <th><font face="Arial, Helvetica, sans-serif">Quantidade</font></th> <th><font face="Arial, Helvetica, sans-serif">SubTotal</font></th> </tr>'; $sql_meu_carrinho11 = "SELECT * FROM carrinho WHERE sessao = '".session_id()."' ORDER BY nome ASC"; $exec_meu_carrinho11 = mysql_query($sql_meu_carrinho11, $conexao) or die(mysql_error()); $qtd_meu_carrinho11 = mysql_num_rows($exec_meu_carrinho11); while ($row_meu_carrinho11 = mysql_fetch_assoc($exec_meu_carrinho11)) { $soma_carrinho += ($row_meu_carrinho11['Preco']*$row_meu_carrinho11['qtd']); $html .= ' <tr> <td>'.$row_meu_carrinho11['nome'].'</td> <td>'.number_format($row_meu_carrinho11['Preco'],2,",",".").'</td> <td>'.$row_meu_carrinho11['qtd'].'</td> <td>'.number_format($row_meu_carrinho11['Preco']*$row_meu_carrinho11['qtd'],2,",",".").'</td> </tr>'; } $hmtl .= '</table>'; $html .=' <table width="600" cellspacing="2" cellpadding="1" border="0"> <tr> <td colspan="3"><div align="right"><strong>TOTAL:</strong> </div> <div align="right"></div> <div align="right"></div></td> <td><div align="center" class="style3 style4">'.number_format($soma_carrinho,2,",",".").'</div></td> </tr> </table>'; $pdf->writeHTML($html, true, false, false, false, ''); //============================================================+ // END OF FILE //============================================================+ $filename = $codigo_clientes; $pdfdoc = $pdf->Output("$filename.pdf","F"); //error_reporting(E_ALL); error_reporting(E_STRICT); date_default_timezone_set('America/Toronto'); require_once('class.phpmailer.php'); //include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded $mail = new PHPMailer(); //$body = file_get_contents('contents.html'); $body = "Encomenda realizada pelo cliente ".$nome;//eregi_replace("[\]",'',$body); $mail->IsSMTP(); // telling the class to use SMTP $mail->Host = "mail.yourdomain.com"; // SMTP server $mail->SMTPDebug = 0; // enables SMTP debug information (for testing) // 1 = errors and messages // 2 = messages only $mail->SMTPAuth = true; // enable SMTP authentication $mail->SMTPSecure = "tsl"; // sets the prefix to the servier $mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server $mail->Port = 587; // set the SMTP port for the GMAIL server $mail->Username = "teuemail@gmail.com"; // GMAIL username $mail->Password = "tuapass"; // GMAIL password $mail->SetFrom($email, $nome); $mail->AddReplyTo("name@yourdomain.com","First Last"); $mail->Subject = ("Encomenda ".$nome); $mail->AltBody = "Olá, ".$nome; // optional, comment out and test $mail->MsgHTML($body); $address = $email; $mail->AddAddress('teuemail@gmail.com', 'teunome'); $mail->AddAttachment("$filename.pdf"); // attachment if(!$mail->Send()) { echo "Mailer Error: " . $mail->ErrorInfo; } else { $mail->SetFrom('teuemail@gmail.com', 'teu nome'); $mail->AddReplyTo("name@yourdomain.com","First Last"); $mail->Subject = $assunto; $mail->AltBody = "Olá, ".$nome; // optional, comment out and test $mail->MsgHTML($mensagem); $address = $email; $mail->AddAddress($address, $nome); $mail->AddAttachment("images/infor.gif"); // attachment $mail->Send(); echo "A sua encomenda foi feita com sucesso, obrigado!"; } ?> </form> </body> <?php } ?> </html> Edited May 29, 2012 at 08:15 PM by softklin Adicionado o GeSHI. Facilita a formatação de código
johnmaia Posted May 29, 2012 at 06:40 PM Report #458991 Posted May 29, 2012 at 06:40 PM (edited) sim eu percebi o que posso fazer e como tu disses-te e tem lógica é o seguinte enquanto o cliente está a meter produtos no carrinho ele está a inserir para a tabela carrinho, depois de ele carregar no botão finalizar o programa transfere todos os dados que estão na tabela carrinho para a tabela pedidos, posso fazer assim não posso? Sim podes. Transferes todas as ocorrencias da lista carrinho para a tabela encomenda. Dás um id novo a cada encomenda, que seja comum com todos os produtos que transferiste. Como deves imaginar, não tenho paciência nem cabeça para ler todo aquele código. 👍 Edited May 29, 2012 at 06:43 PM by johnmaia
Ricardo Gonçalves Posted May 29, 2012 at 06:59 PM Author Report #458996 Posted May 29, 2012 at 06:59 PM então posso fazer assim crio tabela igual aos dos pedidos mudando só o ID e dou nome na tabela de carrinho, enquanto o cliente clicar no botão " continuar a comprar " ele vai gravando na tabela carrinho, só quando carregar no botão " finalizar " é que vai transferir os dados todos da tabela carrinho para a tabela pedido, e na tabela pedido tenho que por lá mais um campo que é id_carrinho que é para depois na BD fazer relacionamento. qual é a melhor função que devo utilizar para quando o utilizador finalizar a compra ele transferir os dados para a tabela pedido e eliminar os dados que estão na tabela carrinho feito pelo o utilizador autenticado?
johnmaia Posted May 29, 2012 at 07:08 PM Report #458997 Posted May 29, 2012 at 07:08 PM (edited) então posso fazer assim crio tabela igual aos dos pedidos mudando só o ID e dou nome na tabela de carrinho, enquanto o cliente clicar no botão " continuar a comprar " ele vai gravando na tabela carrinho, só quando carregar no botão " finalizar " é que vai transferir os dados todos da tabela carrinho para a tabela pedido, e na tabela pedido tenho que por lá mais um campo que é id_carrinho que é para depois na BD fazer relacionamento. qual é a melhor função que devo utilizar para quando o utilizador finalizar a compra ele transferir os dados para a tabela pedido e eliminar os dados que estão na tabela carrinho feito pelo o utilizador autenticado? Para transferires fazes algo tipo: INSERT INTO table (col1, col2, col3) SELECT col1, col2, col3 FROM table2 WHERE col4='15'; E para apagares: DELETE FROM table WHERE id='15'; E convem que id_carrinho que vais guardar na tua tabela pedido seja unico para cada pedido, mas igual para todos os produtos desse pedido. Para recolheres sempre um valor novo basta recolheres o valor maximo dos id_carrinho da tabela pedidos e acrescentares 1. Edited May 29, 2012 at 07:09 PM by johnmaia
Ricardo Gonçalves Posted May 29, 2012 at 08:51 PM Author Report #459007 Posted May 29, 2012 at 08:51 PM o 15 é o id_carrinho certo?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now