Jump to content

Recommended Posts

Posted

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.

Posted

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.

Posted

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.

Posted

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 é?

Posted

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'];
Posted (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 by johnmaia
Posted

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.

Posted

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

Posted (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:

Screen%20shot%202012-05-28%20at%2011.02.34%20PM.png

O cliente (21) conclui a compra, e então ao clicar em finalizar a compra, a tabela carrinho ficará assim:

Screen%20shot%202012-05-28%20at%2011.05.38%20PM.png

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:

Screen%20shot%202012-05-28%20at%2011.05.07%20PM.png

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:

Screen%20shot%202012-05-28%20at%2011.06.54%20PM.png

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 by johnmaia
Posted

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?

Posted

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.

Posted

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?

Posted (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 by softklin
Adicionado o GeSHI. Facilita a formatação de código
Posted (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 by johnmaia
Posted

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?

Posted (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 by johnmaia

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.