Jump to content

Fatal error


mtgriffiths

Recommended Posts

Hi All,

 

I am having a problem when trying to get my shopping cart working. The error i am getting isL

 

Fatal error: Call to undefined function: additem() in /var/www/html/m.griffiths/ECOMM/ShoppingCart.php on line 45

 

The code around and for the shopping cart is:

 

if(isset($_GET['action'])){
switch($_GET["action"])
{
	case "add_item":
	{
		$newq=$_POST["Quantity"];
		additem(mysql_real_escape_string($_GET["id"]), $newq);
		ShowCart();
		break;
	}

 

Can anyone help me?

 

Thanks in advance

 

Matthew

Link to comment
https://forums.phpfreaks.com/topic/90572-fatal-error/
Share on other sites

Sure. Here is all of the code for the shopping cart.

If anymore script from other pages is needed. I will post it as soon as possible.

Thanks again

 

<?php
Ini_set('error_reporting', E_ALL);
session_start();
if (!array_key_exists('first_name', $_SESSION)) {
header("Location: login.php");
}
else {
?>
<?php	require('mysql_connect.php');?>
<html>
<STYLE type="text/css">
A:link{color:Blue;text-decoration:none}
A:visited{color:Blue;text-decoration:none}
A:active{color:Blue;text-decoration:none}
A:hover{color:Blue;text-decoration:none}
</STYLE>
<style type="text/css">
<!--
.style1 {
font-family: Calibri;
font-weight: bold;
color: #FFFFFF;
}
.style2 {font-family: Calibri}
.style4 {color: #FFFFFF}
.style6 {font-family: Calibri; font-weight: bold; }
-->
</style>

<title> The Car Company </title>
<script src="Scripts/AC_RunActiveContent.js" type="text/javascript"></script>
<body>
<div align="center">
  <table width="100%" border="0" height="100%">
    <tr BGCOLOR="#0099FF">
    
          <?php
  
if(isset($_GET['action'])){
switch($_GET["action"])
{
	case "add_item":
	{
		$newq=$_POST["Quantity"];
		additem(mysql_real_escape_string($_GET["id"]), $newq);
		ShowCart();
		break;
	}
	case "update_item":
	{
		UpdateItem(mysql_real_string_escape($_GET["id"]), mysql_real_string_escape($_GET["qty"]));
		ShowCart();
		break;
	}
	case "remove_item":
	{
		RemoveItem(mysql_real_string_escape($_GET["id"]));
		ShowCart();
		break;
	}

	case "remove_all_items":
	{
		RemoveAllItems();
		ShowCart();
		break;
	}

	case "replace_items":
	{
		ReplaceItem(mysql_real_string_escape($_GET["id"]), mysql_real_string_escape($_GET["qty"]));
		ShowCart();
		break;
	}
	default:
	{
		ShowCart();
		break;
	}

}
}else{
echo ' i am here there is a problem with the URL GET function ';
} ?>

     
  <?php
function RemoveAllItems()
   
      {
         // Uses an SQL delete statement to remove ALL items 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 > 0");
  
      }

function additem($car_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 car_id = $car_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, car_id, qty) values('" . GetCartId() . "', $car_id, $qty)");
	}
	else
	{
		// This item already exists in the users cart,
		// we will update it instead
		UpdateItem($car_id, $qty);
	}
}

function UpdateItem($car_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($car_id);
	}
	else
	{
		$result=mysql_query("select qty from cart where cookieId = '" . GetCartId() . "' and car_id = $car_id");
		$row=mysql_fetch_array($result);
		$newq=$row['qty']; // so this is getting the value from the sql query result and assigning it to the newq variable
		$newq=$newq+$qty; // the calculation done here
		mysql_query("update cart set qty = $newq where cookieId = '" . GetCartId() . "' and car_id = $car_id");
	}
}

function RemoveItem($car_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 car_id = $car_id");
}

function ReplaceItem($car_id,$qty)
{
	//here is where we are going to replace the values
	global $dbServer, $dbUser, $dbPass, $dbName;

	// Get a connection to the database
	$cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
	mysql_query("update cart set qty = $qty where cookieId = '" . GetCartId() . "' and car_id = $car_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 car_details on cart.car_id = car_details.car_id where cart.cookieId = '" . GetCartId() . "' order by car_details.Model asc");
	$sql_num_rows = mysql_num_rows($result);

	?>
      <td height="68"><p align="center" class="style1"><font size="+3"><img src="Banner.jpg"></font></p>      </td>
    </tr>
<tr BGCOLOR="#0099FF">
      <td><div align="center" class="style1">
      <a href="Home.php">Home</a> ---- 
      <a href="Main.php">Car Search</a>----
      <a href="ShoppingCart.php">Shopping Cart</a>
      <a href="logout.php">Logout</a>----
      <a href="change_password.php">Change Password</a>
      <span class="style4"> ---- </span>Contact</span></div></td>
    </tr>
    <tr bordercolor="#0099FF">
      <td><p align="center"><span class="style6">
      <font color="#0099FF">Your Personal Shopping Cart:</font>
            <script language="JavaScript">

		function UpdateQty(item)
		{
			itemId = item.name;
			newQty = item.value;

document.location.href = 'ShoppingCart.php?action=replace_items&id='+itemId+'&qty='+newQty;
		}

	    </script>
  </span>
        <body bgcolor="#ffffff">
<form method="get" name="frmCart" class="style2">
	  <table width="100%" cellspacing="0" cellpadding="0" border="0">
            <tr>
              <td width="13%" height="25" bgcolor="#0099FF"><font size="2" color="white">   <b>Qty</b> </font> </td>
              <td width="17%" height="25" bgcolor="#0099FF"><font size="2" color="white"> <b>Manufacturer</b> </font> </td>
              <td width="13%" height="25" bgcolor="#0099FF"><font size="2" color="white"> <b>Model</b> </font> </td>
              <td width="13%" height="25" bgcolor="#0099FF"><font size="2" color="white"> <b>Colour</b> </font> </td>
              <td width="13%" bgcolor="#0099FF"><font size="2" color="white"><b>Price</b></font></td>
              <td width="17%" height="25" bgcolor="#0099FF"><font size="2" color="white"><b>Amount in Stock</b></font></td>
              <td width="14%" height="25" bgcolor="#0099FF"><font size="2" 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"]);
			?>
            <tr>
              <td width="13%" height="25"><font size="2" color="black"><?php $qty0 += $row["qty"]; ?>
               <input type="text" name="<?php echo $row["car_id"]; ?>" onChange="UpdateQty(this)" value= "<?php echo $row["qty"] ?> " size="3"/>               </td>
              <td width="17%" height="25"><font size="2" color="black"> <?php echo $row["Manufacturer"]; ?> </font> </td>
              <td width="13%" height="25"><font size="2" color="black"> <?php echo $row["Model"]; ?></font> </td>
              <td width="13%" height="25"><font size="2" color="black"> <?php echo $row["Colour"]; ?></font> </td>
              <td width="13%"><font size="2" color="black">£<?php echo number_format($row["Price"], 2, ".", ","); ?> </font></td>

              
              <?php 
//$stock = mysql_query("UPDATE car_database.car_details SET Stock_Level = (Stock_Level - $qty)WHERE car_details.car_id = $row[car_id]"); 
		  
		  ?>
              
              <td width="17%" height="25"><font size="2" color="black">
		  <?php echo $row["Stock_Level"]; ?></font></td>
              <td width="14%" height="25"><font size="2" color="black"> <a href="ShoppingCart.php?action=remove_item&id=<?php echo $row["car_id"]; ?>">Remove</a></font> </td>
            
            <?php
		}

		// Display the total
		?>
            <tr>
              <td colspan="7"><hr size="1" color="#0099FF" noshade>              </td>
            </tr>
            <tr>
              <td colspan="2"><font size="2" color="black"> <a href="main.php"><< Continue Searching</a></font></td>
              <td width="13%" colspan="1"><div align="center"></div></td>
              <td> </td>
              <td><font size="2" color="black"><b>Total Cars: <?php echo "$sql_num_rows" ?></b></font></td>
              <td> </td>
              <td><font size="2" color="black">
              
              <a href="ShoppingCart.php?action=remove_all_items">Empty Cart</a></font></td>
            </tr>
            <tr>
              <td> </td>
              <td> </td>
              <td> </td>
              <td> </td>
              <td><font size="2" color="black"><b>Total Quantity: <?php echo "$qty0" ?></b></font></td>
              <td> </td>
            </tr>
            <tr>
              <td> </td>
              <td> </td>
              <td> </td>
              <td> </td>
              <td><font size="2" color="black"><b>Total: £<?php echo number_format($totalCost, 2, ".", ","); ?></b></font></td>
              <td> </td>
            </tr>
          </table>
    </form>
</body>
		</html>
		<?php
}

?><br>
        </p>
      <p>      </p></td>
    </tr>
    <tr BGCOLOR="#0099FF">
      <td><div align="center" class="style1">The Car Company</div></td>
    </tr>
  </table>
</div>
</body>
</html>
<?php } ?>

  

Link to comment
https://forums.phpfreaks.com/topic/90572-fatal-error/#findComment-464383
Share on other sites

Your using the functions, then creating the functions, it doesn't make sense.

 

Example

 

<?php

sayHello(); // UNDEFINED FUNCTION BECAUSE FUNCTION WAS CREATED AFTER YOU USED THE FUNCTION 

function sayHello(){

echo "hello";

}

function sayHello(){

echo "hello";

}


sayHello(); // OUTPUT: HELLO
?>

Link to comment
https://forums.phpfreaks.com/topic/90572-fatal-error/#findComment-464393
Share on other sites

I have had the cart working using the way that was posted. I was told to change the functions and cases so that they are the other way around and still get errors.

 

The cart was working fine, i then tried to introduce to my website a secure login and since then it has all gone wrong

Link to comment
https://forums.phpfreaks.com/topic/90572-fatal-error/#findComment-464404
Share on other sites

The problem is not that the function definition is located after it is referenced (php is a parsed/executed language, so function definitions can be located anywhere in the source code - as long as they are not conditionally defined), the problem is that the function definition(s) is(are) located inside of a conditional statement. The definition won't exist until the code in the conditional statement is executed.

 

Either put the function definitions near the start of the file (proper/common programming convention or if you really want, put them at the end of the file, outside of the conditional {} statements) or put them in an include/require file and include that near the start of the file.

Link to comment
https://forums.phpfreaks.com/topic/90572-fatal-error/#findComment-464416
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.