PHP if else - 表单提交按钮中的条件链接

时间:2014-08-04 19:24:22

标签: php

希望有人能帮忙解决这个问题 - 我继承了一个网站,并试图修改一些我不熟悉的PHP。我到目前为止已经有了它,但仍然有问题。

它是一个在线商店的页面,根据产品提供可选附加功能。产品是家具,所以有一些选择购买垫子。我想要做的改变是根据产品选择两种不同尺寸的垫子。

所以产品表中有一个字段'靠垫',还有一个页面'accessories.php',它提供了添加缓冲的选项。

我添加了一个新字段'cushions2'和一个新页面'accessories2.php'来覆盖新尺寸的靠垫。

网站就在这里,使用此示例产品:

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

如果单击“添加到购物车”,下一页将为您提供添加自定义绘画的选项。

如果你在那里输入一些东西,然后点击'添加颜色以订购'就行了 - 即下一页是提供垫子的那一页。

但是,如果你只是点击'不,谢谢你,继续订购'它只是重新加载页面 - 基本上URL没有被应用。

在该页面上,页面顶部的PHP如下所示:

<?php
session_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";
}
?>

输入/提交的表单如下所示:

<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>

希望这是有道理的 - 我认为它几乎必须存在,因为所有条件代码似乎都有效,但URL没有在表单中正确地提取。

如果有人可以看一眼,并希望在赛道上获得巨大成功,我真的很感激。

谢谢。


原件有点不同,只有一个选项可用于垫子:

$row = mysql_fetch_assoc($result);  
if (!@empty($_POST)) {
$_SESSION["basket"]["items"][$_POST["id"]]["paintwork"] = $_POST["colour"];
if (@empty($row["cushions"])) {
$url = "accessories.php?id=" . $_REQUEST["id"];
} elseif (!@empty($row["glasstop"])) {
$url = "glasstop.php?id=" . $_REQUEST["id"];
} else {
$url = "shopping_cart.php";
}

以下表格:

<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 (!@empty($row["cushions"])) ? "shopping_cart.php" : "accessories.php?id=" . $_REQUEST["id"]?>" 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>

所以在两者之间它离我不远,但是我的语法有点偏离我的语法,这显然是完全正确的。


问题显然与表单中链接中的代码有关。如果原件是:

<a href="<?php echo (!@empty($row["cushions"])) ? "shopping_cart.php" : "accessories.php?id=" . $_REQUEST["id"]?>">NO THANK YOU, PROCEED WITH ORDER</a>

这就是说:

如果'靠垫'不为空,请转到shopping_cart.php,否则请转到accessories.php。

可以改为说:

如果'cushionions'= -1则转到accessories.php,如果'cushions2 = -1则转到accessories2.php,否则转到shopping_cart.php?

匹配标题中的逻辑,当按下表单提交按钮时,该逻辑正常工作:

$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";
}

2 个答案:

答案 0 :(得分:1)

if (!empty($_POST)) { ...}表示如果POST不为空,请执行...对吗?所以,链接:

<a href="<?php echo $url?>" style="float: left; color: #251717; background-color: #DBC87B">NO    THANKYOU, PROCEED WITH ORDER</a>

不是实际的POST,而只是一个链接。因此代码:

  

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";

} }

永远不会触发,$ url永远不会被设置,因为$ _POST为空,给你一个空的$ url变量和链接,从而重新加载页面。

您可能想尝试:

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"; 
}
  

if(!empty($ _ POST)){

$_SESSION["basket"]["items"][$_POST["id"]]["paintwork"] = $_POST["colour"];
     

}

答案 1 :(得分:1)

好的,我想我现在有这个工作。我有一点顿悟,因为我可以在一些条件代码中包含三个链接,这些代码可以工作:

<?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 } ?>

它不像它可能那样优雅,但它似乎有效!