Page 1 of 1

[SOLVED] Not showing products!

Posted: Sat Apr 23, 2005 10:52 am
by bobsta63
Hi all,

So far I have the code below and when the user clicks on add to cart the data is added into the database and every thing seems fine, However When I try to view the cart I get this error message: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\inetpub\wwwroot\benefits\catalogue\cart\cart.php on line 155 The link I use to send the product data to the cart table is as follows: cart.php?action=add_item&id=57&qty=1 As I say the details are added to the database but when viewing the cart page I get the above error message. Could some one please look at the code and see If im missing anything, Thanks,

Regards,

Bobby

Code: Select all

<?php

	include("db.php");
		
	switch($_GET["action"])
	{
		case "add_item":
		{
			AddItem($_GET["id"], $_GET["qty"]);
			ShowCart();
			break;
		}
		case "update_item":
		{
			UpdateItem($_GET["id"], $_GET["qty"]);
			ShowCart();
			break;
		}
		case "remove_item":
		{
			RemoveItem($_GET["id"]);
			ShowCart();
			break;
		}
		default:
		{
			ShowCart();
		}
	}

	function AddItem($id, $qty)
	{
		// Will check whether or not this item
		// already exists in the cart table.
		// If it does, the UpdateItem function
		// will be called instead
		
		global $dbServer, $dbUser, $dbPass, $dbName;

		// Get a connection to the database
		$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
		
		// Check if this item already exists in the users cart table
		$result = mysql_query("select count(*) from cart where cookieId = '" . GetCartId() . "' and id = $id");
		$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, id, qty) values('" . GetCartId() . "', $id, $qty)");
		}
		else
		{
			// This item already exists in the users cart,
			// we will update it instead
			
			UpdateItem($id, $qty);
		}
	}
	
	function UpdateItem($id, $qty)
	{
		// Updates the quantity of an item in the users cart.
		// If the qutnaity is zero, then RemoveItem will be
		// called instead

		global $dbServer, $dbUser, $dbPass, $dbName;

		// Get a connection to the database
		$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
		
		if($qty == 0)
		{
			// Remove the item from the users cart
			RemoveItem($id);
		}
		else
		{
			mysql_query("update cart set qty = $qty where cookieId = '" . GetCartId() . "' and id = $id");
		}
	}
	
	function RemoveItem($id)
	{
		// Uses an SQL delete statement to remove an item from
		// the users cart

		global $dbServer, $dbUser, $dbPass, $dbName;

		// Get a connection to the database
		$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
		
		mysql_query("delete from cart where cookieId = '" . GetCartId() . "' and id = $id");
	}
	
	function ShowCart()
	{
		// Gets each item from the cart table and display them in
		// a tabulated format, as well as a final total for the cart
		
		global $dbServer, $dbUser, $dbPass, $dbName;

		// Get a connection to the database
		$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
		
		$totalCost = 0;
		$result = mysql_query("select * from cart inner join items on cart.id = products.id where cart.cookieId = '" . GetCartId() . "' order by products.name asc");
		?>
		<html>
		<head>
		<title> Your Shopping Cart </title>
		<script language="JavaScript">
		
			function UpdateQty(item)
			{
				id = item.name;
				newQty = item.options[item.selectedIndex].text;
				
				document.location.href = 'cart.php?action=update_item&id='+id+'&qty='+newQty;
			}
		
		</script>
		</head>
		<body bgcolor="#ffffff">
		<h1>Your Shopping Cart</h1>
		<form name="frmCart" method="get">
		<table width="100%" cellspacing="0" cellpadding="0" border="0">
			<tr>
				<td width="15%" height="25" bgcolor="red">
					<font face="verdana" size="1" color="white">
						&nbsp;&nbsp;<b>Qty</b>
					</font>
				</td>
				<td width="55%" height="25" bgcolor="red">
					<font face="verdana" size="1" color="white">
						<b>Product</b>
					</font>
				</td>
				<td width="20%" height="25" bgcolor="red">
					<font face="verdana" size="1" color="white">
						<b>Price Each</b>
					</font>
				</td>
				<td width="10%" height="25" bgcolor="red">
					<font face="verdana" size="1" color="white">
						<b>Remove?</b>
					</font>
				</td>
			</tr>
			<?php
			
			while($row = mysql_fetch_array($result))
			{
				// Increment the total cost of all items
				$totalCost += ($row["qty"] * $row["price"]);
				?>
					<?php do { ?>
					<tr>
					    <td width="15%" height="25">
						    <font face="verdana" size="1" color="black">
							    <select name="<?php echo $row["id"]; ?>" onChange="UpdateQty(this)">
							      <?php
								
									for($i = 1; $i <= 20; $i++)
									{
										echo "<option ";
										if($row["qty"] == $i)
										{
											echo " SELECTED ";
										}
										echo ">" . $i . "</option>";
									}
								?>
						        </select>
						    </font>
				        </td>
					    <td width="55%" height="25">
						    <font face="verdana" size="1" color="black"><?php echo $row_cart['name']; ?>
						    </font>
				        </td>
					    <td width="20%" height="25">
						    <font face="verdana" size="1" color="black">
					      </font>
				        </td>
					    <td width="10%" height="25">
						    <font face="verdana" size="1" color="black">
							    <a href="cart.php?action=remove_item&id=<?php echo $row["id"]; ?>">Remove</a>
						    </font>
				        </td>
				    </tr>
		  <?php } while ($row_cart = mysql_fetch_assoc($cart)); ?>
				<?php
			}
			
			// Display the total
			?>
					<tr>
						<td width="100%" colspan="4">
							<hr size="1" color="red" NOSHADE>
						</td>
					</tr>
					<tr>
						<td width="70%" colspan="2">
							<font face="verdana" size="1" color="black">
								<a href="products.php"><< 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>
					</tr>
		  </table>
		</form>
		</body>
</html>
			<?php
}

?>
Include: db.php

Code: Select all

<?php

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

	$dbServer = "localhost";
	$dbUser = "root";
	$dbPass = "*******";
	$dbName = "benefits";

	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();
		}
	}

?>
Thanks.