UK WEB HOSTING FORUM FOR DISCUSSION ON WEB HOSTING SERVICE AND SUPPORT
LINUX HOSTING WINDOWS HOSTING PACKAGES SHOPPING CART OSCOMMERCE ZEN CART AGORA
ECOMMERCE HOSTING ASP MSSQL FRONTPAGE HOSTING PHP MYSQL HOSTING DISCUSSION FORUM
CPANEL RESELLER HOSTING DEDICATED SERVER VPS HOSTING PLESK VIRTUOZZO
Quick Search
Your forum announcement here!

  UK Web Hosting | Dedicated Server Windows and Linux VPS Forum > Web Hosting and Domains > PHP Hosting

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 14-12-2006, 14:33
cty cty is offline
Junior Member
 
Join Date: Dec 2006
Posts: 5
Default Syntax error,plz help

PHP Code:
[code]
1)Error display in cart.php page:

PHP Notice: Undefined offset: 0 in C:\test\kelly.php on line 16 PHP Notice: Undefined variable: totalCost in C:\test\kelly.php on line 61

2)Error show when i try to remove item form cart:

PHP Notice: Undefined variable: db in C:\test\kelly.php on line 43 PHP Fatal error: Call to a member function query() on a non-object in C:\test\kelly.php on line 43


--------------------------------------------------------
//This is  "db.php"

<?php

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

?>
-------------------------------------------------------------------
//This is "product.php"

<?php



include("db.php");

$db=new mysqli('localhost','root','','test');
$db->select_db('test');



$query="select * from items order by itemName asc";
$result $db->query($query);
?>

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

<table border=2>
<tr>
<td width="30%" height="25">
<font face="verdana" size="2" color="black">
<?php echo $row["itemName"]; ?>
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="2" 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="2" color="black">
<a href="cart.php?action=add_item&id=<?php echo $row["itemId"]; ?>&qty=1">Add Item</a>
</font>
</td>
</tr>
<br />


<?php }?>

<tr>
<td width="100%" colspan="4">
<hr size="1" color="red" NOSHADE>
</td>
</tr>



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


---------------------------------------------------------
//This is "cart.php"

<?php
include("kelly.php");
include(
"db.php");
?>


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

?>


-----------------------------------------------

//This is "kelly.php"


<?php


function AddItem($itemId$qty){


$db=new mysqli('localhost','root','','test');
$db->select_db('test');

$query="select count(*) from cart where cookieId = '" GetCartId() . "' and itemId = $itemId";
$result=$db->query($query);


$row =$result->fetch_assoc();

$numRows $row[0];
if(
$numRows == 0)

{
// This item doesn't exist in the users cart,
// we will add it with an insert query

$query="insert into cart(cookieId, itemId, qty) values('" GetCartId() . "', $itemId, $qty)";
$result=$db->query($query);
}
else
{
// This item already exists in the users cart,
// we will update it instead

UpdateItem($itemId$qty);
}
}


function 
UpdateItem($itemId$qty){
$query="update cart set qty = $qty where cookieId = '" GetCartId() . "' and itemId = $itemId";
$result=$db->query($query);
}

function 
RemoveItem($itemId){
$query="delete from cart where cookieId = '" GetCartId() . "' and itemId = $itemId";
$result=$db->query($query);
}





function 
ShowCart(){

$db=new mysqli('localhost','root','','test');
$db->select_db('test');


$query="select * from cart inner join items on cart.itemId = items.itemId where cart.cookieId = '" GetCartId() . "' order by items.itemName asc";
$result=$db->query($query);
while(
$row $result->fetch_assoc())
{
// Increment the total cost of all items
$totalCost += ($row["qty"] * $row["itemPrice"]);

?>




<td width="55%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row["itemName"]; ?>
</font>
</td>
<td width="20%" height="25">
<font face="verdana" size="1" color="black">
$<?php echo number_format($row["itemPrice"], 2"."","); ?>

</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["itemId"]; ?>">Remove</a>
</font>
</td>
</tr>
<br />

<?php ?>

<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">&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($totalCost2"."","); ?></b>
</font>
</td>
</tr>
<?php ?>



--------------------------------------------------end//
[/code]
Reply With Quote
  #2 (permalink)  
Old 08-02-2007, 01:19
mephisto's Avatar
Senior Member
 
Join Date: Feb 2007
Location: Darlington
Posts: 100
Send a message via ICQ to mephisto Send a message via MSN to mephisto
Default

Your error is because you are declaring $db inside the AddItem function in kelly.php, but not in UpdateItem or RemoveItem. Personally I'd use a class.

PHP Code:
<?php
    
class Kelly {
        private 
$db;
        public function 
__construct() {
            
$this->db = new mysqli('localhost''root''''test');
            
$this->db->select_db('test');
        }
        
        public function 
AddItem($itemID$qty) {
            
$query "select count(*) from cart where cookieId = '" GetCartId() . "' and itemId = $itemId";
            
$result $this->db->query($query);
            
$row $result->fetch_assoc();
            
$numRows $row[0];
            if(
$numRows == 0) {

                
// This item doesn't exist in the users cart,
                // we will add it with an insert query

                
$query="insert into cart(cookieId, itemId, qty) values('" GetCartId() . "', $itemId, $qty)";
                
$result=$this->db->query($query);
            }
            else {
                
// This item already exists in the users cart,
                // we will update it instead

                
$this->UpdateItem($itemId$qty);
            }
        }

        public function 
UpdateItem($itemID$qty) {
            
$query="update cart set qty = $qty where cookieId = '" GetCartId() . "' and itemId = $itemId";
            
$result=$this->db->query($query);
        }

        public function 
RemoveItem($itemId){
            
$query="delete from cart where cookieId = '" GetCartId() . "' and itemId = $itemId";
            
$result=$this->db->query($query);
        }


        public function 
ShowCart(){
            
$query="select * from cart inner join items on cart.itemId = items.itemId where cart.cookieId = '" GetCartId() . "' order by items.itemName asc";
            
$result=$this->db->query($query);
            
$output "";
            while(
$row $result->fetch_assoc()) {
                
// Increment the total cost of all items
                
$totalCost += ($row["qty"] * $row["itemPrice"]);
                
$itemName $row["itemName"];
                
$itemID $row["itemId"];
                
$formatedPrice number_format($row["itemPrice"], 2"."",");
                
$output. = <<< EOT
<td width="55%" height="25">
<font face="verdana" size="1" color="black">
{$itemName}
</font>
</td>
<td width="20%" height="25">
<font face="verdana" size="1" color="black">
{$formatedPrice}
</font>
</td>
<td width="10%" height="25">
<font face="verdana" size="1" color="black">
<a href="cart.php?action=remove_item&id=
{$itemID}">Remove</a>
</font>
</td>
</tr>
EOT;
            }
            
            
$formatedTotal number_format($totalCost2"."",");
            
            
$output .= <<< EOT
<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: 
${$formatedTotal}</b>
</font>
</td>
</tr>
EOT;
        }
    }
?>
Note, all I have done here is took your functions and put them in a class, so that they will use the same database connection. There are still plenty of improvments that could be made, but that's another issue.
Reply With Quote
Reply



Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


All times are GMT. The time now is 00:27.

 

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by Web Hosting 3.1.0
Copyright © 2001-2008, eUKhost.com. All rights reserved.

 
Site Map

knowledgebase articles

popular blog categories