...

View Full Version : Help with cart script



djdna
05-17-2011, 06:41 PM
Below is a php script that ive created for my online shopping cart, it uses cookie to remember cart contents, the problem i have is the script doesnt seem to do anythin, i have tested the get methods work by using a test variable and echo-ing the value of that variable, how-ever if i place an echo statement during the switch statement nothing happens, any ideas im really stuck, cheers nathan



<?php
session_start();

if(isset($_GET['action']))
{

$func = $_GET['action'];
}
else
{
echo "error";
}

mysql_connect("localhost", "root", "p104728");
mysql_select_db("p104728");


function GetCartId()
{

// This function will generate an encrypted string and
// will set it as a cookie using set_cookie. This will
// also be used as the cookieId field in the cart table

if(isset($_COOKIE["cartId"]))
{
return $_COOKIE["cartId"];
}
else
{
// There is no cookie set. We will set the cookie
// and return the value of the users session ID
setcookie("cartId", session_id(), time() + ((3600 * 24) * 30));
return session_id();
}

switch($func)
{
case "add":
{
echo "working";
AddItem($_GET['id'], $_GET['qty']);
ShowCart();
break;
}
case "update":
{
UpdateItem($_GET['id'], $_GET['qty']);
ShowCart();
break;
}
case "remove":
{
RemoveItem($_GET['id']);
ShowCart();
break;
}
default:
{
ShowCart();
}
}

function AddItem($itemId, $qty)
{
$result = mysql_query("SELECT COUNT(*) from cart WHERE cookieID ='".GetCartId()."' AND itemID = $itemId");

echo $result;

$row = mysql_fetch_row($result);
$numRows = $row[0];

if($numRows == 0)
{
// This item doesn't exist in the users cart,
// we will add it with an insert query

mysql_query("INSERT INTO cart(cookieID, itemID, quantity) VALUES ('".GetCartId()."', $itemId, $qty)");
}
else
{
// This item already exists in the users cart,
// we will update it instead
UpdateItem($itemId, $qty);
}
}

function UpdateItem($itemId, $qty)
{
mysql_query("update cart set quantity = $qty where cookieID = '" .GetCartId(). "' and itemID = $itemId");
}

function RemoveItem($itemId)
{
mysql_query("delete from cart where cookieID = '".GetCartId()."'and itemId = $itemId");
}
?>

<?php
function ShowCart()
{
$result = mysql_query("select * from cart inner join products on cart.itemID = products.ID where cart.cookieID = '".GetCartId()."'");

while($row = mysql_fetch_array($result))
{
// Increment the total cost of all items
$totalCost += ($row['quantity'] * $row['price']);
?>

<tr>
<td width="15%" height="25">
<font face="verdana" size="1" color="black">
<select name="<?php echo $row['itemID']; ?>" onChange= "UpdateQty(this)">
<?php
for($i = 1; $i <= 20; $i++)
{
echo "<option ";
if($row['quantity'] == $i)
{
echo " SELECTED ";
}
echo ">" . $i . "</option>";
}
?>
</select>
</font>
</td>
<td width="55%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row['name']; ?>
</font>
</td>
<td width="20%" height="25">
<font face="verdana" size="1" color="black">
<?php echo number_format($row['price'], 2, ".", ",");?>
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
<a href="cart.php?action=remove&id=<?php echo $row['itemID']; ?>">Remove</a>
</font>
</td>
</tr>
<?php
}
?>

<tr>
<td width="100%" colspan="4">
</td>
</tr>
<tr>
<td width="70%" colspan="2">
<font face="verdana" size="1" color="black">
<a href="products.php">&lt;&lt; Keep Shopping</a>
</font>
</td>
<td width="30%" colspan="2">
<font face="verdana" size="2" color="black">
<b>Total: <?php echo number_format($totalCost, 2, ".", ","); ?></b>
</font>
</td>
<?php
}

}
}
?>

shadowmaniac
05-17-2011, 07:18 PM
Your problem is that the variable $func is not within the scope of your function GetCartID().

To give you an idea of what I mean, simply copy


if(isset($_GET['action']))
{

$func = $_GET['action'];
}
else
{
echo "error";
}

into your GetCartId() function and it should work fine.



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum