Jump to content

A small problem with shopping cart


Bravat

Recommended Posts

I followed tutorial from youtube

http://www.youtube.com/watch?v=5b3TcoeY7Bs

and made shopping cart. Everything is working fine, but there is one part I want to add. I want user to be able to set the quantity of products without going to the cart (user have to be able to enter quantity himself). At the moment I have no idea how to do this, i am still researching this topic, but wanted to try to ask for help from the pros  :). This is the complete code (a bit large):

 

index.php:

<?php
session_start();
require("includes/connection.php");
if(isset($_GET['page'])){

	$pages=array("products", "cart");

	if(in_array($_GET['page'], $pages)) {

		$_page=$_GET['page'];

	}else{

		$_page="products";

	}

}else{

	$_page="products";

}

?>
<!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=utf-8" />
<link rel="stylesheet" href="css/reset.css" />
<link rel="stylesheet" href="css/style.css" />

<title>Shopping Cart</title>


</head>

<body>

<div id="container">

	<div id="main">

		<?php require($_page.".php"); ?>

	</div><!--end of main-->

	<div id="sidebar">
		<h1>Cart</h1>
		<?php

			if(isset($_SESSION['cart'])){

				$sql="SELECT * FROM products WHERE id_product IN (";

				foreach($_SESSION['cart'] as $id => $value) {
					$sql.=$id.",";
				}

				$sql=substr($sql, 0, -1).") ORDER BY name ASC";
				$query=mysql_query($sql);
				while($row=mysql_fetch_array($query)){

				?>
					<p><?php echo $row['name'] ?> x <?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?></p>
				<?php

				}
			?>
				<hr />
				<a href="index.php?page=cart">Go to cart</a>
			<?php

			}else{

				echo "<p>Your Cart is empty. Please add some products.</p>";

			}

		?>

	</div><!--end of sidebar-->

</div><!--end container-->

</body>
</html>

 

cart.php:

<?php

if(isset($_POST['submit'])){

	foreach($_POST['quantity'] as $key => $val) {
		if($val==0) {
			unset($_SESSION['cart'][$key]);
		}else{
			$_SESSION['cart'][$key]['quantity']=$val;
		}
	}

}

?>

<h1>View cart</h1>
<a href="index.php?page=products">Go back to products page</a>
<form method="post" action="index.php?page=cart">
    
<table>
    
	<tr>
	    <th>Name</th>
	    <th>Quantity</th>
	    <th>Price</th>
	    <th>Items Price</th>
	</tr>

	<?php

		$sql="SELECT * FROM products WHERE id_product IN (";

				foreach($_SESSION['cart'] as $id => $value) {
					$sql.=$id.",";
				}

				$sql=substr($sql, 0, -1).") ORDER BY name ASC";
				$query=mysql_query($sql);
				$totalprice=0;
				while($row=mysql_fetch_array($query)){
					$subtotal=$_SESSION['cart'][$row['id_product']]['quantity']*$row['price'];
					$totalprice+=$subtotal;
				?>
					<tr>
					    <td><?php echo $row['name'] ?></td>
					    <td><input type="text" name="quantity[<?php echo $row['id_product'] ?>]" size="5" value="<?php echo $_SESSION['cart'][$row['id_product']]['quantity'] ?>" /></td>
					    <td><?php echo $row['price'] ?>$</td>
					    <td><?php echo $_SESSION['cart'][$row['id_product']]['quantity']*$row['price'] ?>$</td>
					</tr>
				<?php

				}
	?>
				<tr>
				    <td>Total Price: <?php echo $totalprice ?></td>
				</tr>

</table>
<br />
<button type="submit" name="submit">Update Cart</button>
</form>
<br />
<p>To remove an item set it's quantity to 0. </p>

 

products.php:

<?php

if(isset($_GET['action']) && $_GET['action']=="add"){

	$id=intval($_GET['id']);

	if(isset($_SESSION['cart'][$id])){

		$_SESSION['cart'][$id]['quantity']++;

	}else{

		$sql_s="SELECT * FROM products
			WHERE id_product={$id}";
		$query_s=mysql_query($sql_s);
		if(mysql_num_rows($query_s)!=0){
			$row_s=mysql_fetch_array($query_s);

			$_SESSION['cart'][$row_s['id_product']]=array(
					"quantity" => 1,
					"price" => $row_s['price']
				);


		}else{

			$message="This product id it's invalid!";

		}

	}

}

?>
<h1>Product List</h1>
<?php
	if(isset($message)){
		echo "<h2>$message</h2>";
	}
?>
		<table>
		    <tr>
		        <th>Name</th>
		        <th>Description</th>
		        <th>Price</th>
		        <th>Action</th>
		    </tr>
		    
			<?php

				$sql="SELECT * FROM products ORDER BY name ASC";
				$query=mysql_query($sql);

				while ($row=mysql_fetch_array($query)) {

			?>
					<tr>
					    <td><?php echo $row['name'] ?></td>
					    <td><?php echo $row['description'] ?></td>
					    <td><?php echo $row['price'] ?>$</td>
					    <td><a href="index.php?page=products&action=add&id=<?php echo $row['id_product'] ?>">Add to cart</a></td>
					</tr>
			<?php

				}

			?>
		    
		</table>

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

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.