Jump to content

Trying to go to another page


SpokaneDude
Go to solution Solved by mac_gyver,

Recommended Posts

I have some PHP code that does eCommerce; I have a 'Continue Shopping' button with this code:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
   if (isset($_POST['productcode']))
   {
      AddToCart();
   }
else {
      $action = isset($_POST['action']) ? $_POST['action'] : '';
      $value = strtoupper(substr($action, 0, 5));
      switch ($value)
      {
      // continue shopping
      case "CONTI":
         header("Location: "."index.html");
         break;


which is not working - status on bottom of Firefox browser just says: waiting for sitename.com and nothing ever happens.

 

So, what is the correct way to go to another page from the current page?

 

BTW, I'm a noob (but I'm learning) at PHP, so please excuse the lame question.

Edited by SpokaneDude
Link to comment
Share on other sites

You'll have to figure out what is taking so long (infinite loop?) in PHP - what the browser says is irrelevant.

 

Nothing in the code you've posted would be at fault so look elsewhere. Maybe AddToCart? The rest of the code you didn't post?

Link to comment
Share on other sites

 

which is not working - status on bottom of Firefox browser just says: waiting for sitename.com and nothing ever happens.

That to me seems like your code is stuck in a loop or something is taking a long time to process. The code you posted is fine and will redirect the user, provided you are not outputting anything before the use of header

 

If the only purpose of the continue shopping button is to redirect the user back to your store, then why not just use a link which links back to your stores homepage. If you want the link to appear as a button you can style it using css.

Link to comment
Share on other sites

That's exactly what I was trying to do - redirect the user back to the home page (index.html) and they can go from there... where do I find out how to "style it using CSS"?  (I'm a noob at CSS also, but I do know other languages).  Here is the complete code for the View Cart page:

		<?php
		session_start();
		define("PRODUCTCODE", 0);
		define("PRODUCTNAME", 1);
		define("QUANTITY", 2);
		define("PRICE", 3);
		define("URL",4);

		if ($_SERVER['REQUEST_METHOD'] == 'POST')
		{
		   if (isset($_POST['productcode']))
		   {
			  AddToCart();
		   }
		else {
			  $action = isset($_POST['action']) ? $_POST['action'] : '';
			  $value = strtoupper(substr($action, 0, 5));
		echo $value;
			  switch ($value)
			  {
			  // continue shopping
			  case "CONTI":
				 header("Location: "."index.html");
		//			header("Location" ".$GET['referringURL']);
				 break;
			  // recalculate
			  case "RECAL":
		RecalculateCart();
				 break;
			  // proceed to checkout
			  case "CHECK":
				 header("Location: "."customer.php");
		break; }
		} }
		function AddToCart()
		{
		   $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
		   $itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
		   $cart[PRODUCTCODE][$itemcount] = $_POST['productcode'];
		   $cart[PRODUCTNAME][$itemcount] = $_POST['productname'];
		   $cart[QUANTITY][$itemcount] = intval($_POST['quantity']);
		   $cart[PRICE][$itemcount] = $_POST['price'];
		   $itemcount = $itemcount + 1;
		   $_SESSION['cart'] = $cart;
		   $_SESSION['itemcount'] = $itemcount;
		}
		function RecalculateCart()
		{
		   $cart = isset($_SESSION['cart']) ? $_SESSION['cart'] : '';
		   $itemcount = isset($_SESSION['itemcount']) ? $_SESSION['itemcount'] : 0;
		   for ($i=0; $i<$itemcount; $i++)
		{
		   $quantity = $_POST['quantity'.($i)];
		   if (empty($quantity))
		   {
			  $quantity = 0;
		   }
		   else
		   if (($quantity < 0) || (!is_numeric($quantity)))
		   {
			  $quantity = 0;
		   }
		   $cart[QUANTITY][$i] = intval($quantity);
		}
		for ($j=0; $j<$itemcount; $j++)
		{
		   $quantity = $cart[QUANTITY][$j];
		   // remove item from the cart
		   if ($quantity == 0)
		   {
			  $itemcount--;
			  $curitem = $j;
			  while(($curitem+1) < count($cart[0]))
			  {
				 for ($k=0; $k<4; $k++)
				 {
		$cart[$k][$curitem] = $cart[$k][$curitem+1];
					   $cart[$k][$curitem+1] = '';
					}
					$curitem++;
				 }
		} }
		   $_SESSION['itemcount'] = $itemcount;
		   $_SESSION['cart'] = $cart;
		}
		?>
Edited by SpokaneDude
Link to comment
Share on other sites

The problem appears to be that the variable associated with the POST action ($value) is not set properly in the code above.  If I take the switch statement and add the 'default' to it with the following statement, it works:

header("Location: "."index.html");

if I add this statement to it under 'default',

header("Location" ".$GET['referringURL']);

it causes an error (blank page)

 

So the question is: why is the variable not being set?

Link to comment
Share on other sites

  • Solution

in addition to that, it's $_GET not $GET, and you are concatenating incorrectly.

 

btw - your cart definition is overly complicated, requiring a huge amount of code to maintain. all you should store in the cart is the productcode as an array index and the quantity as the value. you can do this directly in a session variable - $_SESSION['cart']. there's no need to copy it to another php variable, then copy it back.

 

once you simplify your cart definition, to get a count of the different items in the cart, you can just use count($_SESSION['cart']). to get the total quantity of items, you can just use array_sum($_SESSION['cart']). when you need to display the cart, by retrieving the information for all the productcodes that are in the cart, you can just use array_keys($_SESSION['cart']) to get all the productcodes.

Edited by mac_gyver
Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.