Ir para conteúdo

Arquivado

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

tubadc

Problema com carrinho de compras

Recommended Posts

Olá galera... estou usando um script que a algum tempo vinha usando para fazer um carrinho de compras no entanto agora preciso de acrescentar mais dois campos na Sessão e não estou conseguindo acertar isso.

 

Antes tinha a sessão apenas com a id do produto e a quantidade dele... funcionava tranquilo... agora alem disso preciso de por na sessao a cor e o tam ...

 

as variáveis passam tranquilo porem não estou conseguindo:

 

- add item na mesma sessão, e caso o item já tenha sido selecionado ele acrescenta 1 ao item;

- add item com mesmo id porem com cores ou tamanhos diferente em outra array da sessão;

 

Onde estou errando ?????

 

phpCart_manage.php

<?ob_start();?><?$id_pro=$_REQUEST['act'];$cor_pro=$_REQUEST['cor_pro'];$tam=$_REQUEST['tam'];$act=$_REQUEST['act'];require "functions_cart.php";?><?// UPDATE BASKET QUANTITYif (isset($_REQUEST["UpdateChg"])) {	session_start();				$i = 0;		$size = count($_REQUEST["eid"]);		for ($i = 0; $i <= $size-1; $i++) {						$badsymbols = array(" ","-","+","*","/",".");			$_REQUEST["newquan"][$i] = str_replace($badsymbols,"", $_REQUEST["newquan"][$i]);					if (is_numeric($_REQUEST["newquan"][$i])) {					  if ($_REQUEST["newquan"][$i] == 0) {					unset($_SESSION["cart"][$_REQUEST["eid"][$i]]);				}				if (array_key_exists($_REQUEST["eid"][$i], $_SESSION["cart"])) {					add_item_to_cart($_REQUEST["eid"][$i], $_REQUEST["newquan"][$i],$_SESSION["cart"][$cor],$_SESSION["cart"][$tam]);								} 							} 				}								header ("location:".$_SERVER['HTTP_REFERER']);	} if (isset($_REQUEST["act"])) {	if ($_REQUEST["act"] == $act) {				session_start();					if (!isset($_SESSION["cart"])) {						add_item_to_cart($_REQUEST["id_pro"],1,$_REQUEST["cor_pro"],$_REQUEST["tam"]);				} 			else if (array_key_exists($_GET["id_pro"],$_SESSION["cart"]))				{				add_item_to_cart($_GET["id_pro"],++$_SESSION["cart"][$_GET["id_pro"]][1],$_REQUEST["cor_pro"],$_REQUEST["tam"]);		}				else 		{					add_item_to_cart($_REQUEST["id_pro"],1, $_REQUEST["cor_pro"],$_REQUEST["tam"]);					}			}				if ($_REQUEST["act"] == "del") {				del_item($_REQUEST["id_pro"]);			}	}	?><?ob_end_flush();?>

functions_cart.php

<?$mysql_server = "localhost";$mysql_username = "*";$mysql_pwd = "*";$mysql_dbname = "*";$mysql_tablename = "produtos";$cur_symbol = "R$ ";function db_connect () {		global $mysql_server, $mysql_username, $mysql_pwd, $mysql_dbname;				$db = mysql_connect($mysql_server, $mysql_username, $mysql_pwd, false, 128) or die("Problem connecting");			mysql_select_db($mysql_dbname,$db) or die("Problem selecting database");		}	function setstp () {		settype($str,"string");					for ($i=0;$i<20;$i++) {				  $str .= chr (rand (1, 255));				}			$sha = sha1 ($str);		setcookie ("SESSSEC", $sha, NULL);		$_SESSION["CookieChk"]['SESSSEC'] = $sha;				}function add_item_to_cart($id_pro, $quantity, $cor_pro, $tam) {		setstp();			db_connect();		$passou = "$id_pro , $cor_pro";		$sel_products = mysql_query("SELECT produtos.*, atributos_produto.* FROM produtos, atributos_produto WHERE produtos.id_pro='$id_pro' and atributos_produto.id_pro='$id_pro' and atributos_produto.cor_pro = '$cor_pro'")or die ("$passou ".mysql_error());		$item = mysql_fetch_array($sel_products);		$num_rows = mysql_num_rows($sel_products);		$cor_pro=$item["cor_pro"];		$id_pro = $item["id_pro"];		if ($num_rows >= 1) {		$_SESSION["cart"][$id_pro][0]=$id_pro;		$_SESSION["cart"][$id_pro][1]=$quantity;		$_SESSION["cart"][$id_pro][2]=$cor_pro;		$_SESSION["cart"][$id_pro][3]=$tam;				header ("location:".$_SERVER['HTTP_REFERER']);				}	}function validate() {					if (!isset($_COOKIE['SESSSEC'])) {			$valid = FALSE;			} elseif (!isset($_SESSION["CookieChk"]['SESSSEC'])) {			$valid = FALSE;			} elseif ($_COOKIE["SESSSEC"] == $_SESSION["CookieChk"]['SESSSEC']) {						$valid = TRUE;			setstp();		} else {			$valid = FALSE;				} 		return $valid;	}function del_item($id_pro) {		db_connect();		global $mysql_tablename;		$sel_products = mysql_query("SELECT * FROM $mysql_tablename WHERE id_pro=".$id_pro."");		$item = mysql_fetch_array($sel_products);			session_start();			session_regenerate_id();			unset($_SESSION["cart"][$id_pro]);						header ("location:".$_SERVER['HTTP_REFERER']);	}	?>

mostra_carrinho.php

<form name="update" method="post" action="phpCart_manage.php">				<table width="100%"  border="0" cellspacing="0" cellpadding="5">				<tr bgcolor="#EEEEEE">				<td width="9%" class="bottomline"> </td>				<td width="13%" class="bottomline"><strong class="font6">Quantidade</strong></td>				<td width="42%" class="bottomline"><strong class="font6">Produto</strong></td>				<td width="21%" class="bottomline"><strong class="font6">Preço</strong></td>				<td width="15%" class="bottomline"><strong class="font5"> Total </strong></td>				</tr><?include "functions_cart.php";$totalvalue = 0;session_start();if (!isset($_SESSION["cart"])) {	$_SESSION["cart"] = NULL;}if (validate() == TRUE && $_SESSION["cart"] != NULL) {		foreach ($_SESSION["cart"] as $key => $session_data) {				list($ses_id, $ses_quan, $ses_cor, $ses_tam) = $session_data;									db_connect();			$sel_products = mysql_query("SELECT produtos.*, atributos_produto.* FROM produtos, atributos_produto WHERE produtos.id_pro='$ses_id' and atributos_produto.id_pro='$ses_id' and atributos_produto.cor_pro ='$ses_cor'");			$item = mysql_fetch_array($sel_products);							$totalvalue = $totalvalue + ($item["pre_liq"]*$ses_quan);			$subtotal = ($item["pre_liq"]*$ses_quan);						?>				<tr>		<td class="border_bt"><a href="<? echo "phpCart_manage.php?act=del&id_pro=".$ses_id; ?>"><img src="imgs/icon_del.gif" width="13" height="13" border="0"></a></td>				<td class="border_bt" align="center"><input name="newquan[]" type="text" id="newquan[]3" value="<? echo $ses_quan; ?>" size="3" maxlength="4" class='campoForm' onfocus="this.className='campoFormOver'" onblur="this.className='campoForm'"/>				<input name="eid[]" type="hidden" id="eid[]" value="<? echo $ses_id; ?>"></td>				<td class="border_bt"><span class="font2"><? echo $item["nom_pro"]."  ".$ses_cor."  ".$ses_tam; ?></span></td>				<td class="border_bt"><span class="font2"><? echo $cur_symbol."".number_format($item["pre_liq"], 2, '.', ''); ?></span></td>				<td class="border_bt"><span class="font2"><? echo $cur_symbol."".number_format($subtotal, 2, '.', ''); ?></span></td>				</tr>	<?	} 	} elseif ($_SESSION["cart"] == NULL) {	echo "<td colspan=\"5\"><center><p>Seu carrinho está vazio.</p></center></td>";			} else {		echo "<td colspan=\"5\"><center><p>Estamos em manutenção.</p></center></td>";}	?>				<tr><td> </td>				<td align="center"><? if ($_SESSION["cart"] != NULL) { echo "<input name=\"UpdateChg\" type=\"submit\" id=\"UpdateChg\" value=\"Atualizar\" class='campoForm4'>"; } ?></td>	<td></td>	<td><strong class="font6">Total<span class="font4"> (frete não incluso) </span></strong></td>	<td><span class="font5"><? echo $cur_symbol."".number_format($totalvalue, 2, '.', ''); ?></span></td></tr></table>	  </form>

Obrigado a todos pela força mais uma vez....

Compartilhar este post


Link para o post
Compartilhar em outros sites

plzzz..... alguem me ajuda....tkx

Galera dei uma diminuida no código..... plz.... só me digam onde estou errando pois estou testando de tudo quanto é jeito e não consigo add mesmo itens com mesmo atributos... ou add itens com mesmo id porem atributos diferentes em outro array....plz... helpe.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda Thiago, no entanto jah tinha tentado isso e não cosegui resultado tb.... acontece o seguinte: id | produto | cor | tamanhoQuando add o produto 1| Vestido | vermelho | t36pp na sessao e tento adcionar outro ele não soma... e quanto seleciono o mesmo produto soh que com a cor ou tamanho diferente ele não adciona outro e sim troca o produto que possui a mesma id.....Não sei oq ocorre to ficando doido já não sei mais oq testar.... então qualquer ajuda é sempre muito bem vinda....Obrigado mais uma x

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.