Jump to content

If else syntax - conditional link in form submit button


johngordon

Recommended Posts

Hope someone can help put with this - I have inherited a site and am trying to modify some PHP that I am unfamiliar with. I have gotten so far with it, but still have a problem with it.

 

Its a page on an online store offering optional extras depending on the product. The products are furniture, so and there was an option to buy cushions for some. The change I am trying to make is to have an option for two different sizes of cushion depending on the product.

 

So there was a field 'cushions' in the product table, and a page 'accessories.php' that offered the option to add cushions.

 

I have added a new field 'cushions2' and a new page 'accessories2.php' to cover the new size of cushions.

 

The site is here, with this example product:

 

http://www.lloydloomonline.com/product.php?id=32

 

If you click 'Add to cart' the next page offers you the option to add custom paintwork.

 

If you enter something there, and click on 'Add colour to order' it works - i.e. the next page is the one offering the cushions.

 

But if you just click on 'No thank you, proceed with order' it just reloads the page - basically the URL isn't being puled through as it should be.

 

On that page the PHP at the top of the page looks like this:

 

<?phpsession_start();$page = "paintwork";include("../includes/header.php");include("../includes/db_open.php");$sql =  "SELECT p.*, c.`name` AS `categoryname` " .  "FROM `products` p, `categories` c " .  "WHERE p.`category` = c.`id` " .  "AND p.`id` = '" . $_SESSION["basket"]["items"][$_REQUEST["id"]]["product"] . "'";$result = mysql_query($sql) or die("Query failed : $sql at line " . __line__);$row = mysql_fetch_assoc($result);if (!empty($_POST)) {        $_SESSION["basket"]["items"][$_POST["id"]]["paintwork"] = $_POST["colour"];        if ($row["cushions"] == -1) {        $url = "accessories.php?id=" . $_REQUEST["id"];    } else if ($row["cushions2"] == -1) {        $url = "accessories2.php?id=" . $_REQUEST["id"];    } else if (!empty($row["glasstop"])) {        $url = "glasstop.php?id=" . $_REQUEST["id"];    } else {        $url = "shopping_cart.php";    }?>
 
And the form with the input / submit looks like this:
 
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>" onsubmit="return validate(this)">
      <label for="quantity" style="float: left; width: 75px; margin: 0">COLOUR</label>
 <textarea name="colour" id="colour" style="float: left; height: 80px; width: 250px"></textarea>
      <img src="images/spacer.gif" class="clear" style="height: 10px" />
 <input type="submit" value="ADD COLOUR TO ORDER" id="submit" onmouseover="this.style.color = '#DBC87B'" onmouseout="this.style.color = '#FFFFFF'" style="float: left; margin-left: 75px; margin-right: 10px; width: 255px; padding-bottom: 3px; height: 23px" />
      <a href="<?php echo $url?>" style="float: left; color: #251717; background-color: #DBC87B">NO THANKYOU, PROCEED WITH ORDER</a>
     <input type="hidden" name="id" value="<?php echo $_REQUEST["id"]?>" />
</form>
 
Hope that makes sense - I think it must nearly be there, as all the conditional code seems to work, but the URL isn't being pulled through correctly in the form.
 
If anyone could have a look and hopefully get megabuck on track, I'd really appreciate it.
 
Thank you.
 
 
Link to comment
Share on other sites

No - not fixed, as the 'No thank you' link should only go to shopping_cart.php if both 'cushions' and 'cushions2' are empty / 0.

 

Looking at it again, I have it working with the form submit button which happens if someone chooses to have the paintwork added. That reloads the page, processes the code below, and the user goes to the correct page:

 

$row = mysql_fetch_assoc($result);if (!empty($_POST)) {    $_SESSION["basket"]["items"][$_POST["id"]]["paintwork"] = $_POST["colour"];    if ($row["cushions"] == -1) {        $url = "accessories.php?id=" . $_REQUEST["id"];    } else if ($row["cushions2"] == -1) {        $url = "accessories2.php?id=" . $_REQUEST["id"];    } else {        $url = "shopping_cart.php";    }
 
So the trick is to apply that same logic to the link in the form.
 
The original looks like:
 
<a href="<?php echo (!@empty($row["cushions"])) ? "shopping_cart.php" : "accessories.php?id=" . $_REQUEST["id"]?>">NO THANK YOU, PROCEED WITH ORDER</a>
 
Which is saying:
 
If 'cushions' is not empty then go to shopping_cart.php, otherwise go to accessories.php.
 
Can that be changed to say:
 
If 'cushions' = -1 then go to accessories.php, If 'cushions2 = -1 then go to accessories2.php, otherwise go to shopping_cart.php?
Link to comment
Share on other sites

OK, I think I have this working now. I had a bit of an epiphany in that I could wrap three links in a bit of conditional code which would work:

 

<?php if ($row['cushions']=="0" AND $row['cushions2']=="0"){ ?>
<a href="shopping_cart.php" style="float: left; color: #251717; background-color: #DBC87B">NO THANK YOU, PROCEED WITH ORDER</a><br>
<?php } ?>
<?php if ($row['cushions']=="-1"){ ?>
<a href="<?php echo "accessories.php?id=" . $_REQUEST["id"]?>" style="float: left; color: #251717; background-color: #DBC87B">NO THANK YOU, PROCEED WITH ORDER</a><br>
<?php } ?>
<?php if ($row['cushions2']=="-1"){ ?>
<a href="<?php echo "accessories2.php?id=" . $_REQUEST["id"]?>" style="float: left; color: #251717; background-color: #DBC87B">NO THANK YOU, PROCEED WITH ORDER</a><br>
<?php } ?>

 

Its not as elegant as it might be, but it seems to work!

Link to comment
Share on other sites

No need to state your link three times for each condition, Just define the url to be used for the link in a variable.

<?php 

// default url
$url = 'shopping_cart.php';

// override default url if cusions or cushions2 availabled
if ($row['cushions'] == "-1")
{ 
    $url = "accessories.php?id=" . $_REQUEST["id"];
}
elseif ($row['cushions2']=="-1")
{
    $url = "accessories2.php?id=" . $_REQUEST["id"];
}

// output the link
?>
<a href="<?php echo $url ?>" style="float: left; color: #251717; background-color: #DBC87B">NO THANK YOU, PROCEED WITH ORDER</a><br>
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.