PHP会话HTML表承载问题

PHP会话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中的数组中重新调用特定变量,以便客户可以确认订单总额以及他们的个人详细信息

我正在使用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中的数组中重新调用特定变量,以便客户可以确认订单总额以及他们的个人详细信息

当我使用以下变量时,我似乎只能使用会话变量来携带最后添加的项目/行:

$_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,而不是使用会话数据。假设会话是从多个选项卡访问的,用户在过时的选项卡上单击签出。如果使用会话变量,服务器只知道用户请求签出会话中最近的项目,而不是当前可见的项目