Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Enigma_Boy

add nova class ao carrinho de compras

Recommended Posts

boa tarde pessoal é o seguinte, eu sakei um script pronto de comercio, em que tem o carrinho de compras, mas nele so tras:

 

foto do produto

nome do produto

preço unitario

quantidade (que da para actualizar)

total subtotal

 

e como o que quero vender é vesturaio, eu queria adicionar um form list/menu com os tamanhos da roupa, para que quando actualizar ficase sempre o respectivo tamanho, o cliente adiciona o produto ao carrinho, e kd adicionado e ver o carrinho ter entao para cada tipo de produto um list/menu com os tamanhos, e entao escolher o tamanho, e kd actualiza-se ficase gravado para poder ser enviada a encomenda.

 

aqui fica o code da pag do carrinho

 

<?php
require_once 'library/config.php';
require_once 'library/cart-functions.php';


$action = (isset($_GET['action']) && $_GET['action'] != '') ? $_GET['action'] : 'view';

switch ($action) {
	case 'add' :
		addToCart();
		break;
	case 'update' :
		updateCart();
		break;	
	case 'delete' :
		deleteFromCart();
		break;
	case 'view' :
}

$cartContent = getCartContent();
$numItem = count($cartContent);


// mostra erro da mensagem (se houver erro)
displayError();

if ($numItem > 0 ) {
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1
" /><title>Pet World 2009 - Acessórios, Roupas entre outros para o seu animal de estimação...</title>
<link href="css/loja.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="css/warstwa.js"></script>
</head>
<body>
<table width="100" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
	<td>
	<div id="layout">
	  <div id="top_carr">
	  <div id="carr_estatisticas">Total De Visitas <span class="amarelo">
		<?php include('contador.txt') ?>
		<br />
	  </span><span style="padding-left:30px;">Online</span> <span class="amarelo">
	  <script type="text/javascript" src="http://fastonlineusers.com/on3.php?d=http://www.pet-world.net"></script>
	  </span></div>
	  <div id="carr_login"><?php include('log.php') ?></div>
	  <div id="carr_menu"><img src="images/space.gif" width="289" height="46" border="0" usemap="#Map" /></div>
	</div><div id="centro_carr"><br /><div align="center">
<form action="<?php echo $_SERVER['PHP_SELF'] . "?action=update"; ?>" method="post" name="frmCart" id="frmCart">
 <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#1F1D1E" class="entryTable">
  <tr class="entryTableHeader"> 
   <td height="26" colspan="2" align="center">Produto</td>
   <td width="122" align="center">Preço por Unidade</td>
   <td width="110" align="center">Quantidade</td>
   <td width="87" align="center">Total</td>
  <td width="77" align="center"> </td>
 </tr>
 <?php
$subTotal = 0;
for ($i = 0; $i < $numItem; $i++) {
	extract($cartContent[$i]);
	$productUrl = "index.php?c=$cat_id&p=$pd_id";
	$subTotal += $pd_price * $ct_qty;
?>
 <tr class="content"> 
  <td width="62" align="center"><a href="<?php echo $productUrl; ?>"><img src="<?php echo $pd_thumbnail; ?>" border="0"></a></td>
  <td width="147"><div align="center"><a href="<?php echo $productUrl; ?>"><?php echo $pd_name; ?></a></div></td>
   <td align="right"><div align="center"><?php echo displayAmount($pd_price); ?></div></td>
  <td width="110"><div align="center">
	<input name="txtQty[]" type="text" id="txtQty[]" size="5" value="<?php echo $ct_qty; ?>" class="box" onKeyUp="checkNumber(this);">
	<input name="hidCartId[]" type="hidden" value="<?php echo $ct_id; ?>">
	<input name="hidProductId[]" type="hidden" value="<?php echo $pd_id; ?>">
  </div></td>
  <td align="right"><label></label>
	
		<label></label>
	
<?php echo displayAmount($pd_price * $ct_qty); ?></td>
  <td width="77" align="center"> <input name="btnDelete" type="button" id="btnDelete" value="Apagar" onClick="window.location.href='<?php echo $_SERVER['PHP_SELF'] . "?action=delete&cid=$ct_id"; ?>';" class="box">  </td>
 </tr>
 <?php
}
?>
 <tr class="content"> 
  <td colspan="4" align="right">Sub-total</td>
  <td align="right"><?php echo displayAmount($subTotal); ?></td>
  <td width="77" align="center"> </td>
 </tr>
<tr class="content"> 
   <td colspan="4" align="right">Portes </td>
  <td align="right"><?php echo displayAmount($shopConfig['shippingCost']); ?></td>
  <td width="77" align="center"> </td>
 </tr>
<tr class="content"> 
   <td colspan="4" align="right">Total a pagar</td>
  <td align="right"><?php echo displayAmount($subTotal + $shopConfig['shippingCost']); ?></td>
  <td width="77" align="center"> </td>
 </tr>  
 <tr class="content"> 
  <td colspan="5" align="right"> </td>
  <td width="77" align="center">
<input name="btnUpdate" type="submit" id="btnUpdate" value="Actualizar" class="box"></td>
 </tr>
</table>
</form>
<?php
} else {
				echo"<script>window.location='home.php';alert('O seu carrinho encontra-se actualmente sem produtos, continue com uma boa visita :)');</script>";
 ?>
<?php
}

$shoppingReturnUrl = isset($_SESSION['shop_return_url']) ? $_SESSION['shop_return_url'] : 'home.php';
?>
<table width="550" border="0" align="center" cellpadding="10" cellspacing="0">
 <tr align="center"> 
  <td><input name="btnContinue" type="button" id="btnContinue" value="<< Continuar Compras" onClick="window.location.href='<?php echo $shoppingReturnUrl; ?>';" class="box"></td>
<?php 
if ($numItem > 0) {
?>  
  <td><input name="btnCheckout" type="button" id="btnCheckout" value="Proceguir Compras >>" onClick="window.location.href='checkout.php?step=1';" class="box"></td>
<?php
}
?>  
 </tr>
</table>
</div>
	</div><div id="footer_carr"><img src="images/footer_carr.jpg" width="800" height="115" /></div>
	</div>	</td>
  </tr>
</table>

<map name="Map" id="Map"><area shape="rect" coords="-1,0,56,48" href="home.php" title="Home page, página principal do site." />
<area shape="rect" coords="73,1,136,54" href="sobre.php" title="Sobre, sobre o site, vantagens, objectivos e outros." />
<area shape="rect" coords="149,0,205,56" href="cliente.php" alt="Cliente, zona dedicada ao cliente, registar-se, mudar os seus dados entre outros." />
<area shape="rect" coords="219,0,290,57" href="contacto.php" alt="Contacto, zona para enviar a administração dúvidas, sugestões entre outros." />
</map></body>
</html>

aqui fica o code do cart funcions:

 

<?php
require_once 'config.php';

/*********************************************************
*				 SHOPPING CART FUNCTIONS 
*********************************************************/
 
function addToCart()
{
	// verifica se produto existe
	if (isset($_GET['p']) && (int)$_GET['p'] > 0) {
		$productId = (int)$_GET['p'];
	} else {
		header('Location: home.php');
	}
	
	// poduto existe ?
	$sql = "SELECT pd_id, pd_qty
			FROM tbl_product
			WHERE pd_id = $productId";
	$result = dbQuery($sql);
	
	if (dbNumRows($result) != 1) {
		// produto nao existe
		header('Location: cart.php');
	} else {
		// quantos produtos temos em stock(armazem)
	
		$row = dbFetchAssoc($result);
		$currentStock = $row['pd_qty'];

		if ($currentStock == 0) {
			// ja nao temos este produto em stock mostra o erro
			// show the error message
			echo"<script>window.location='cart.php';alert('O produto que referiu já não existe em stock!');</script>";
			header('Location: cart.php');
			exit;
		}

	}		
	
	//  id sessao actual
	$sid = session_id();
	
	// verifica se produto ja existe na tabela do carrinho de compras nesta sessao
	
	$sql = "SELECT pd_id
			FROM tbl_cart
			WHERE pd_id = $productId AND ct_session_id = '$sid'";
	$result = dbQuery($sql);
	
	if (dbNumRows($result) == 0) {
		// coloca produto no carrinho
		$sql = "INSERT INTO tbl_cart (pd_id, ct_qty, ct_session_id, ct_date)
				VALUES ($productId, 1, '$sid', NOW())";
		$result = dbQuery($sql);
	} else {
		// actualiza produto no carrinho
		$sql = "UPDATE tbl_cart 
				SET ct_qty = ct_qty + 1
				WHERE ct_session_id = '$sid' AND pd_id = $productId";		
				
		$result = dbQuery($sql);		
	}	
	
	// trabalho extra para nos , aqui e apagado os carrinhos abandonados 
	// agora melhor opcao e chamar funcao aqui
	deleteAbandonedCart();
	
	header('Location: ' . $_SESSION['shop_return_url']);				
}

/*
	Vai buscar todos items da sessao actual do carrinho de compras
*/
function getCartContent()
{
	$cartContent = array();

	$sid = session_id();
	$sql = "SELECT ct_id, ct.pd_id, ct_qty, pd_name, pd_price, pd_thumbnail, pd.cat_id
			FROM tbl_cart ct, tbl_product pd, tbl_category cat
			WHERE ct_session_id = '$sid' AND ct.pd_id = pd.pd_id AND cat.cat_id = pd.cat_id";
	
	$result = dbQuery($sql);
	
	while ($row = dbFetchAssoc($result)) {
		if ($row['pd_thumbnail']) {
			$row['pd_thumbnail'] = WEB_ROOT . 'images/product/' . $row['pd_thumbnail'];
		} else {
			$row['pd_thumbnail'] = WEB_ROOT . 'images/no-image-small.png';
		}
		$cartContent[] = $row;
	}
	
	return $cartContent;
}

/*
	remove um item do carrinho
*/
function deleteFromCart($cartId = 0)
{
	if (!$cartId && isset($_GET['cid']) && (int)$_GET['cid'] > 0) {
		$cartId = (int)$_GET['cid'];
	}

	if ($cartId) {	
		$sql  = "DELETE FROM tbl_cart
				 WHERE ct_id = $cartId";

		$result = dbQuery($sql);
	}
	
	header('Location: cart.php');	
}

/*
	actualiza quantidade de itens no carrinho de compras
*/
function updateCart()
{
	$cartId	 = $_POST['hidCartId'];
	$productId  = $_POST['hidProductId'];
	$itemQty	= $_POST['txtQty'];
	$numItem	= count($itemQty);
	$numDeleted = 0;
	$notice	 = '';
	
	for ($i = 0; $i < $numItem; $i++) {
		$newQty = (int)$itemQty[$i];
		if ($newQty < 1) {
			// remove este item do carrinho de compras
			deleteFromCart($cartId[$i]);	
			$numDeleted += 1;
		} else {
			// verifica stock actual
			$sql = "SELECT pd_name, pd_qty
					FROM tbl_product 
					WHERE pd_id = {$productId[$i]}";
			$result = dbQuery($sql);
			$row	= dbFetchAssoc($result);
			
			if ($newQty > $row['pd_qty']) {
				//  so temos esta quantidade em stock
				$newQty = $row['pd_qty'];

				// se cliente colocar mais do que
				// temos em stock, da um erro 
				if ($row['pd_qty'] > 0) {
				echo"<script>window.location='cart.php';alert('A quantidade que pediu é superior a quantidade existente em stock.');</script>";
					
				} else {
					// ja nao ha produto em stock
					echo"<script>window.location='cart.php';alert('Pedimos desculpa, mas o produto que deseja já não existe em stock');</script>";

					// remove do carrinho de compras
					deleteFromCart($cartId[$i]);	
					$numDeleted += 1;					
				}
			} 
							
			// actualiza quantidade do produto
			$sql = "UPDATE tbl_cart
					SET ct_qty = $newQty
					WHERE ct_id = {$cartId[$i]}";
				
			dbQuery($sql);
		}
	}
	
	if ($numDeleted == $numItem) {
		header("Location: $returnUrl" . $_SESSION['shop_return_url']);
	} else {
		header('Location: cart.php');	
	}
	
	exit;
}

function isCartEmpty()
{
	$isEmpty = false;
	
	$sid = session_id();
	$sql = "SELECT ct_id
			FROM tbl_cart ct
			WHERE ct_session_id = '$sid'";
	
	$result = dbQuery($sql);
	
	if (dbNumRows($result) == 0) {
		$isEmpty = true;
	}	
	
	return $isEmpty;
}

/*
	Apaga todas entradas de carrinhos existentes a mais de 1 dia
*/
function deleteAbandonedCart()
{
	$yesterday = date('Y-m-d H:i:s', mktime(0,0,0, date('m'), date('d') - 1, date('Y')));
	$sql = "DELETE FROM tbl_cart
			WHERE ct_date < '$yesterday'";
	dbQuery($sql);		
}

?>

como faco entao para add essa list/menu e o respectivo code sff

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se na sua tabela de produtos não tiver o campo tamanho, então você terá que por.

Então, no carrinho do cliente, você escolhe um lugar de boa acessibilidade para colocar o <select> list/menu... Eu colocaría logo após o nome do produto.

 

<select name="tamanho">

	<option value="PP" <? if($row_produtos_carrinho['tamanho'] == 'PP'){  echo 'selected=selected'; } ?> >Pequeno PP</option>
	<option value="P" <? if($row_produtos_carrinho['tamanho'] == 'P'){  echo 'selected=selected'; } ?> >Pequeno P</option>
	<option value="M" <? if($row_produtos_carrinho['tamanho'] == 'M'){  echo 'selected=selected'; } ?> >Médio M</option>
	<option value="G" <? if($row_produtos_carrinho['tamanho'] == 'G'){  echo 'selected=selected'; } ?> >Grande G</option>
	<option value="GG" <? if($row_produtos_carrinho['tamanho'] == 'GG'){  echo 'selected=selected'; } ?> >Grande GG</option>

</select>

Então no onchange, eu faria com AJAX mas tería que aprender como ( hehehe ), ele atualizaria no base sem dar refresh na página.

Seria um modo com boa acessibilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a dúvida ?

faça mais um método para a tua classe.. que te retorna os options.

function montaComboBox()
{
   $sql = "SELECT"...
   $option .= '<option value="'.$dados['idCampo'].'"'>'.$dados['campo'].'</option>';
  
   return $option;
}
Os tamanhos da roupa virão do banco ?

se não, basta fazer o combobox em HTML mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ALEM DE:

 

<select name="tamanho">

	<option value="PP" <? if($row_produtos_carrinho['tamanho'] == 'PP'){  echo 'selected=selected'; } ?> >Pequeno PP</option>
	<option value="P" <? if($row_produtos_carrinho['tamanho'] == 'P'){  echo 'selected=selected'; } ?> >Pequeno P</option>
	<option value="M" <? if($row_produtos_carrinho['tamanho'] == 'M'){  echo 'selected=selected'; } ?> >Médio M</option>
	<option value="G" <? if($row_produtos_carrinho['tamanho'] == 'G'){  echo 'selected=selected'; } ?> >Grande G</option>
	<option value="GG" <? if($row_produtos_carrinho['tamanho'] == 'GG'){  echo 'selected=selected'; } ?> >Grande GG</option>

</select>

mesto algo mais no php nao? e k so assim dame erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

[21-Mar-2009 19:06:55] PHP Notice: Undefined variable: row_produtos_carrinho in /home/drmnet/public_html/ricardo/petworld/cart.php on line 84

[21-Mar-2009 19:06:55] PHP Notice: Undefined variable: row_produtos_carrinho in /home/drmnet/public_html/ricardo/petworld/cart.php on line 85

[21-Mar-2009 19:06:55] PHP Notice: Undefined variable: row_produtos_carrinho in /home/drmnet/public_html/ricardo/petworld/cart.php on line 86

[21-Mar-2009 19:06:55] PHP Notice: Undefined variable: row_produtos_carrinho in /home/drmnet/public_html/ricardo/petworld/cart.php on line 87

[21-Mar-2009 19:06:55] PHP Notice: Undefined variable: row_produtos_carrinho in /home/drmnet/public_html/ricardo/petworld/cart.php on line 88

 

peço desculpa pela ignorancia mas axo k tdos erramos e antes de aprendermos nao sabemos :S

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao to a ver como..

 

ele ja esta formado agora keria era k ao escolher o que ta no menu list, que me fica-se gravado. a maneira de o fazer simples e rapido, mas eficaz? porfavor me ajudem :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para fazer daquela maneira você preisará estudar a integração do AJAX + PHP.

Procure por isso!

É meio complicado, mas não há nada que não possamos aprender.

Se você tiver tempo, estude isso.

 

Esse é seu primeiro projeto PHP?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o seu conhecimento sobre?

 

se for zero nao conseguirá colcoar nada por mais simples para funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, temos o fórum para compartilhar as dúvidas, não precisa ser pelo msn, até mesmo porque não uso o msn para esclarecimento de dúvidas.

Eu te aconselho a começar por algo simples caso esse seja seu primeiro contato com a linguagem.

Comece do primeiro degrau e vá subindo.

Não use sistemas prontos no início do estudo, pois com eles você aprendera apenas a emendar código e fazer gambiarras, sistemas prontos são melhores para manejar quando se conhece a linguagem.

 

Comece por exemplo a desenvolver um sistema de notícias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.