希望有人能帮助把这个-我继承了一个网站,我试图修改一些PHP,我不熟悉。我已经学得差不多了,但还是有问题。
这是一个在线商店的页面,根据产品提供可选的附加功能。这些产品都是家具,所以有些人还可以买靠垫。我想做的改变是,根据产品的不同,有两种不同尺寸的坐垫可供选择。
在产品表中有一个字段' buffers ',还有一个页面'accessories.php'提供了添加缓冲的选项。
我已经添加了一个新的字段'cushion '和一个新的页面'accessories2.php'来覆盖垫子的新尺寸。
网站在这里,带有这个示例产品:
http://www.lloydloomonline.com/product.php?id=32如果您点击"添加到购物车",下一页为您提供了添加自定义油漆的选项。
如果你在那里输入一些东西,然后点击"添加颜色",它就会起作用——也就是说,下一页是提供靠垫的页面。
但是如果你只是点击'No thank you, proceed with order',它只是重新加载页面-基本上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没有被正确地拉过的形式。
如果有人能看一下,希望能让megabuck走上正轨,我将非常感激。
谢谢。
原版略有不同,只有一个坐垫选项:
$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>
也就是说:
如果' buffers '不是空的,请到shopping_cart.php,否则请到accessories.php。
可以改成:
如果' buffers ' = -1,则进入accessories.php,如果'cushion ' = -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";
}
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"];
}
好的,我想我现在可以工作了。我有一点顿悟,我可以把三个链接包装在一些条件代码中,这是可行的:
<?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 } ?>
它不像它可能的那样优雅,但它似乎有效!