希望有人能帮忙解决这个问题 - 我继承了一个网站,并试图修改一些我不熟悉的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";
}
答案 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 } ?>
它不像它可能那样优雅,但它似乎有效!