2

URL の add を使用して、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変数を使用して最後に追加されたアイテム/行を引き継ぐように見えるだけです:

$_SESSION['totalnameqty']=$name . " " . $qty . " " . $cost;

...そして、checkout.php ページでエコーを使用します。

$totnamqty=$_SESSION['totnamqty'];
echo $totnamqty;

... 1 項目/行だけでなく、cart.php の HTML テーブルに追加されたすべての項目 $name、$qty、および $cost を checkout.php に運びたいと考えています。これを行う方法がわからない、または可能かどうか。誰か助けてくれませんか?

ここに私の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;
4

1 に答える 1

0

ループ内で $name、$qty、および $cost の値を設定しているため、ループの下/外で最後に設定された値にアクセスしています。また、最初に $comic_id を使用していますが、以下では foreach ステートメントで同じ変数を使用しています。foreach を削除して代わりに使用できると思います: $qty = $_SESSION['cart'][$comic_id]?

それ以外の場合は、上部の isset() が正しくなく、カートから各 $comic_id をループしようとしていると仮定します。次に、$comic_id ごとに「cost」、「name」、「qty」、および「tonamqty」の値をインデックス化します。例えば。foreach ループ内で次のようなものを使用します。 $_SESSION['comics'][$comic_id]['cost'] = $cost;

ただし、セッション変数を使用しないチェックアウト アプローチの方が適していると思います。セッションデータを使用するのではなく、ユーザーが現在見ているものを checkout.php に投稿します。セッションが複数のタブからアクセスされ、ユーザーが古いタブでチェックアウトをクリックしたとします。セッション変数を使用している場合、サーバーは、アクティブに表示されていたものではなく、ユーザーがセッションで最新のアイテムのチェックアウトを要求したことのみを認識します。

于 2012-11-08T03:31:03.590 に答える