PHP会话HTML表承载问题
我正在使用URL中的外接程序将项目添加到我的cart.phpPHP会话HTML表承载问题,php,Php,我正在使用URL中的外接程序将项目添加到我的cart.php case "add": if (isset($_SESSION['cart'][$comic_id])) { $_SESSION['cart'][$comic_id]++; } else { $_SESSION['cart'][$comic_id] = 1;} 。。。我的项目显示在cart.php中的HTML表中。然后我只想从checkout.php中的数组中重新调用特定变量,以便客户可以确认订单总额以及他们的个人详细信息
case "add":
if (isset($_SESSION['cart'][$comic_id])) {
$_SESSION['cart'][$comic_id]++;
} else {
$_SESSION['cart'][$comic_id] = 1;}
。。。我的项目显示在cart.php中的HTML表中。然后我只想从checkout.php中的数组中重新调用特定变量,以便客户可以确认订单总额以及他们的个人详细信息
当我使用以下变量时,我似乎只能使用会话变量来携带最后添加的项目/行:
$_SESSION['totalnameqty']=$name . " " . $qty . " " . $cost;
…然后在checkout.php页面上使用回显:
$totnamqty=$_SESSION['totnamqty'];
echo $totnamqty;
。。。我想将添加到cart.php中HTML表中的所有项目$name、$qty和$cost带到checkout.php,而不仅仅是每行1个项目。不确定如何做或是否可能。有人能帮忙吗
这是我的cart.php:
if (isset($_SESSION['cart'][$comic_id])){
echo "<table border=\"0\" padding=\"10\" width=\"80%\">";
echo "<td colspan=\"1\" align=\"left\"><a href=\"title.php\">Continue Shopping</a></div>";
echo "<td colspan=\"6\" align=\"right\"><a href=\"$_SERVER[PHP_SELF]?action=empty\" onclick=\"return confirm('Crystal Fusion: Are you sure you wish to empty your cart?');\">Empty Cart</a></td>";
echo "<tr height=\"20px\">";
echo "<tr height=\"20px\">";
echo "<td align=center>Image</td><td align=center>Title</td><td align=center>Description</td><td colspan=3 align=center>Copies (+/-)</td><td align=center>Price</td>";
echo "<tr height=\"20px\">";
foreach($_SESSION['cart'] as $comic_id => $qty) {
$sql = sprintf("SELECT title, description, cost, image_thumbnail
FROM comic
WHERE comic_id = %d;",$comic_id);
$result = mysql_query($sql);
if(mysql_num_rows($result) > 0) {
list($name, $description, $price, $image_thumbnail) = mysql_fetch_row($result);
$cost = $price * $qty;
$total = $total + $cost;
$cost = number_format($cost,2);
$total = number_format($total,2);
$description = substr($description, 0, 250);
echo "<br><tr>";
echo "<td width=\"10px\" align=\"center\"><img height=100 align=center src=\"$image_thumbnail\">";
echo "<td align=\"center\">$name</td>";
echo "<td width=\"40%\" align=\"center\">$description...<a href=comic_dyn.php?comic_id=$comic_id>More Info</td>";
echo "<td width=\"30px\" align=\"center\"><a href=\"$_SERVER[PHP_SELF]?action=add&comic_id=$comic_id\">+<br></a><td align=\"center\">$qty <td width=\"20px\" align=\"center\"><a href=\"$_SERVER[PHP_SELF]?action=remove&comic_id=$comic_id\">-</a></td>";
echo "<td align=\"right\">$$cost</td>";
echo "</tr>";
}
}
echo "<br><tr><tr height=100px>";
echo "<td><td><td colspan=\"4\" align=\"right\">Total:</td>";
echo "<td width=\"60px\" align=\"right\">$$total</td>";
echo "<tr><td colspan=\"7\" align=\"right\"><a href=\"checkout_html.php\">Proceed to Checkout</a>";
echo "<tr height=\"50px\">";
echo "</table>";
}else{
echo "Your cart is currently empty.";
echo "<br><br><td colspan=\"1\" align=\"left\"><a href=\"title.php\">Continue Shopping</a></div>";
}
//session variables (to be carried to checkout.php
$_SESSION['cost']=$cost;
$_SESSION['name']=$name;
$_SESSION['qty']=$qty;
$_SESSION['totnamqty']=$name . " " . $qty . " " . $cost;
if(isset($\u SESSION['cart'][$comic\u id])){
回声“;
回声“;
回声“;
回声“;
回声“;
echo“ImageTitleDescriptionCopy(+/-)价格”;
回声“;
foreach($\会话['cart']作为$comic\u id=>$qty){
$sql=sprintf(“选择标题、描述、成本、图像\u缩略图
漫画
其中comic_id=%d;“,$comic_id);
$result=mysql\u查询($sql);
如果(mysql_num_rows($result)>0){
列表($name、$description、$price、$image\u缩略图)=mysql\u fetch\u行($result);
$成本=$价格*$数量;
$total=$total+$cost;
$cost=数字\格式($cost,2);
$total=数字\格式($total,2);
$description=substr($description,0250);
回声“
”;
回声“;
回显“$name”;
回显“$说明…$数量”;
echo“$$成本”;
回声“;
}
}
回声“
”;
回声“总计:”;
回显“$$total”;
回声“;
回声“;
回声“;
}否则{
echo“您的购物车当前为空。”;
回声“
”;
}
//会话变量(携带到checkout.php
$\会话['cost']=$cost;
$\会话['name']=$name;
$\会话['qty']=$qty;
$\会话['totnamqty']=$name.“$qty.”$cost;
您正在循环内设置$name、$qty和$cost值,因此您正在访问循环下/外的最后一个设置值。此外,您在开始时使用$comic\u id,但下面在您的foreach语句中使用了相同的变量。我猜您可以删除foreach,而改为使用:$qy=$会话['cart'][$comic id]?
否则,假设顶部的isset()不正确,并且您正试图从购物车循环每个$comic\u id;然后您希望为每个$comic\u id的'cost'、'name'、'qty'和'tonamqty'值编制索引。例如,在foreach循环中使用类似的内容:$\u会话['comics'][$comic\u id]['cost']=$cost
但是,我认为不使用会话变量的签出方法更合适。我会将用户当前看到的内容发布到checkout.php,而不是使用会话数据。假设会话是从多个选项卡访问的,用户在过时的选项卡上单击签出。如果使用会话变量,服务器只知道用户请求签出会话中最近的项目,而不是当前可见的项目