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
https://forums.phpfreaks.com/topic/227536-a-small-problem-with-shopping-cart/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.