Home arrow MySQL arrow Page 3 - Building A Persistent Shopping Cart With PHP and MySQL
MYSQL

Building A Persistent Shopping Cart With PHP and MySQL


If you take a look around any PHP resource site, you'll notice an exorbitant amount of shopping cart scripts. The fact of the matter is that shopping cart scripts aren't hard to develop. In this article Mitchell shows us how to build a simple shopping cart that persists across multiple browser sessions. He uses PHP, MySQL, and JavaScript to implement each part of the shopping cart.

Author Info:
By: Mitchell Harper
Rating: 4 stars4 stars4 stars4 stars4 stars / 214
May 18, 2002
TABLE OF CONTENTS:
  1. · Building A Persistent Shopping Cart With PHP and MySQL
  2. · Creating the database
  3. · Displaying the items
  4. · The cart.php script
  5. · The ShowCart function
  6. · Conclusion

print this article
SEARCH DEVARTICLES

Building A Persistent Shopping Cart With PHP and MySQL - Displaying the items
(Page 3 of 6 )

As I'm sure you can guess, displaying the list of items from our items table is fairly easy. Because we will be displaying items on one page, and showing a shopping cart on another page, we will create a file that will store the connection details of the database and two functions to connect to and work with the database. Create a file called db.php and enter the following code into it:

<?php

// This page contains the connection routine for the
// database as well as getting the ID of the cart, etc

$dbServer = "localhost";
$dbUser = "admin";
$dbPass = "password";
$dbName = "cart";

function ConnectToDb($server, $user, $pass, $database)
{
// Connect to the database and return
// true/false depending on whether or
// not a connection could be made.

$s = @mysql_connect($server, $user, $pass);
$d = @mysql_select_db($database, $s);

if(!$s || !$d)
return false;
else
return true;
}

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

session_start();
setcookie("cartId", session_id(), time() + ((3600 * 24) * 30));
return session_id();
}
}

?>


First off, we define four variables to hold the details of our MySQL database's server, username, password, and database name respectively. Next, we have the ConnectToDb function, which uses our database variables and connects to our MySQL database:

$s = @mysql_connect($server, $user, $pass);
$d = @mysql_select_db($database, $s);

if(!$s || !$d)
return false;
else
return true;


Notice how the calls to mysql_connect and mysql_select_db are prepended with the @ symbol. This tells PHP not to spit any errors if the connect fails. If either of the connection or database selection functions fail, then ConnectToDb returns false. Otherwise it returns true, indicating a successful connection.

The GetCartId function makes use of one cookie variable to track a user across multiple sessions. It starts by checking if the cartId cookie variable is set. If not, it grabs the users session ID and sets it as a cookie value which expires in 30 days (the expiry date of the setcookie function is specified in seconds, so (3600 * 24) * 30 means 3600 seconds ( 1 hour) * 24 (1 day) * 30 (1 month)). The GetCartId function is used in combination with the MySQL cart table to track which user has added which items to their cart.

Db.php is included by both our item listing page and cart. The item listing page is called products.php, and starts off like this:

<?php

// This page will list all of the items
// from the items table. Each item will have
// a link to add it to the cart

include("db.php");

// Get a connection to the database
$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
$result = mysql_query("select * from items order by itemName asc");
?>


As you can see, we include db.php and call the ConnectToDb function to attain a connection to our MySQL database. Next, we grab the entire list of items from the items table, and store the result in the $result variable.

Each item will be displayed as part of a table. We output some HTML tags and then the beginning row of our table before starting a loop through each item, like this:

<?php
while($row = mysql_fetch_array($result))
{
?>


For each item, we output its name, price, description, and a link to add it to that users shopping cart:

<tr>
<td width="30%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row["itemName"]; ?>
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
$<?php echo $row["itemPrice"]; ?>
</font>
</td>
<td width="50%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row["itemDesc"]; ?>
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
<a href="cart.php?action=add_item&id=<?php echo $row["itemId"]; ?>&qty=1">Add Item</a>
</font>
</td>
</tr>
<tr>
<td width="100%" colspan="4">
<hr size="1" color="red" NOSHADE>
</td>
</tr>


Lastly, we close all table and HTML tags, and display a link to the shopping cart, called cart.php (we will create this in the next step):

<tr>
<td width="100%" colspan="4">
<font face="verdana" size="1" color="black">
<a href="cart.php">Your Shopping Cart &gt;&gt;</a>
</font>
</td>
</tr>
</table>
</body>
</html>


Loading up products.php in my browser, I received the following page:

The products.php page

The "Add Item" link for each item links to cart.php. Let's now take a look at the cart.php page, which lets us add, update and delete items from our shopping cart.
blog comments powered by Disqus
MYSQL ARTICLES

- MySQL and BLOBs
- Two Lessons in ASP and MySQL
- Lord Of The Strings Part 2
- Lord Of The Strings Part 1
- Importing Data into MySQL with Navicat
- Building a Sustainable Web Site
- Creating An Online Photo Album with PHP and ...
- Creating An Online Photo Album with PHP and ...
- PhpED 3.2 More Features Than You Can Poke ...
- Creating An Online Photo Album with PHP and ...
- Creating An Online Photo Album with PHP and ...
- Security and Sessions in PHP
- Setup Your Personal Reminder System Using PHP
- Create a IP-Country Database Using PERL and ...
- Developing a Dynamic Document Search in PHP ...

Watch our Tech Videos 
Dev Articles Forums 
 RSS  Articles
 RSS  Forums
 RSS  All Feeds
Write For Us 
Weekly Newsletter
 
Developer Updates  
Free Website Content 
Contact Us 
Site Map 
Privacy Policy 
Support 

Developer Shed Affiliates

 




© 2003-2017 by Developer Shed. All rights reserved. DS Cluster - Follow our Sitemap
Popular Web Development Topics
All Web Development Tutorials