Anyone know where is my mistake?
The error show when i click on "buy" in product.php.
Please guide me.
---------------------------------------------------------

Error shown:
Fatal error: Call to a member function fetch_row() on
a non-object in C:\test\kelly.php on line 14

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

//product.php
<?php
 
include("db.php");
$db=new mysqli('localhost','root','','test');
$db->select_db('test');
 
$query="select * from book order by title asc";
$result = $db->query($query);
?>
<?php
while($row =$result->fetch_assoc())
{
?>
 
<table border=1 width=80% bgcolor="pink">
<tr>
<td width=20%>
<font face="verdana" size="2" color="black" >
ISBN :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["isbn"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
TITLE:
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["title"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Author :
</font>
</td>
<td > 
<font face="verdana" size="2" color="black">
<?php echo $row["author"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Description :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["description"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Condition :
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["condition"]; ?>
</font>
</td>
</tr>
<tr>
<td width=20%>
<font face="verdana" size="2" color="black">
Price(RM) : 
</font>
</td>
<td >
<font face="verdana" size="2" color="black">
<?php echo $row["price"]; ?>
</font>
</td>
</tr>
 
 
<td >
<font face="verdana" size="2" color="black">
<a href="cart.php?action=add_item&id=<?php echo $row["bookid"];?>">Buy</a>
</font>
</td>
</tr>
<br />
</table>
<?php }?>
<tr>
<td >
<hr size="2" color="red" NOSHADE>
</td>
</tr>
 
<tr>
<td >
<font face="verdana" size="5" color="black">
<a href="cart.php"> View Your Shopping Cart &gt;&gt;</a>
</font>
</td>
</tr>
</table>
</body>
</html>
------------------------------------------------
//kelly.php
<?php

function AddItem($bookid){

$db=new mysqli('localhost','root','','test');
$db->select_db('test');
$query="select count(*) from cart where cookieId = '" . GetCartId() . "' and bookid = $bookid";
$result=$db->query($query);

$row =$result->fetch_row();
$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, bookid) values('" . GetCartId() . "', $bookid)";
$result=$db->query($query);
}
else
{
 echo "The book already in your shopping cart.";
 
// This item already exists in the users cart,
}
}
function RemoveItem($bookid){
$db=new mysqli('localhost','root','','test');
$db->select_db('test');
$query="delete from cart where cookieId = '" . GetCartId() . "' and bookid = $bookid";
$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.bookid = book.bookid where cart.cookieId = '" . GetCartId() . "' order by book.title asc";
$result=$db->query($query);
$totalCost=0;
while($row = $result->fetch_assoc())
{
// Increment the total cost of all items
$totalCost+=$row["price"];
?>
 

<td width="55%" height="25">
<font face="verdana" size="1" color="black">
<?php echo $row["title"]; ?>
</font>
</td>
<td width="20%" height="25">
<font face="verdana" size="1" color="black">
$<?php echo number_format($row["price"], 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["bookid"]; ?>">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($totalCost, 2); ?></b>
</font>
</td>
</tr>
<?php } ?>
---------------------------------------------------
//cart.php
<?php
include("kelly.php");
include("db.php");
?>

<?php
switch($_GET["action"])
{
case "add_item":
{
AddItem($_GET["bookid"]);
ShowCart();
break;
}

case "remove_item":
{
RemoveItem($_GET["bookid"]);
ShowCart();
break;
}
default:
{
ShowCart();
}
}
?>

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

Recommended Answers

All 4 Replies

....

You're serious?

1. Don't just post 200 lines of code and expect us to wade through it every single time. I have a feeling if I collected all the code you've posted, I could run your application myself and it would work. Only post the code that is broken. That should be obvious enough by looking at the line number.
2. The error is coming from kelly.php, not product.php! Even if I was prepared to search through another 200 lines of code, I couldn't find an error which comes from a completely seperate file.

Anyways, from what I can tell, you didn't declare the class which fetch_row() belongs to properly.

Hello cty my I be so bold to give you some advice. Try to look into going object orientated and perhaps some smarty. It might take some time but in the end it will make your life so much easier...

http://devzone.zend.com/node/view/id/1236

Like the other member suggested, you have pasted too much code. Since you only have one fetch_row method in the code and the error happened on that line I would guess:

The "$result" was not initialized successfully. I would check if the query returned successfully. If the syntax has no problem, check if "$bookId" is passed in correctly...

Your query fails, thus $result is not an object. Try debugging to see what causes it to fail:

//kelly.php

//......

$result=$db->query($query);

if(!$result) die($db->error); //output the error if the query fails
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.