0

私は宿題に取り組んでいます。カート セッションがあり、製品 ID に基づいて mySql データベースの属性を取得できます。

<?php
$total_price=0;
if(isset($_SESSION['cart']) ? $_SESSION['cart'] : null)
{
echo "<tr>
    <th></th>
    <th>Product</th>
    <th>Price</th>
    <th>Quantity</th>
    </tr>";
foreach ($_SESSION['cart'] as $key => $product) {
    $the_query = "SELECT * FROM products WHERE id=" . $product->id;
    $the_product = $db->query($the_query) or die('Query failed: '.mysql_error());
        $the_product->execute();
        $the_product->setFetchMode(PDO::FETCH_OBJ);

        while ($row = $the_product->fetch()){
        $total_price = $total_price + $row->price*$product->quantity;
        echo "<tr><td>";
        echo "<img src='".$row->image_url_small."' /></a></td>";
        echo "<td><strong>".$row->name."</strong></td><td><em>$".$row->price."</em>";
        echo '</td>';
        echo '<td><input type="text" id="'.$row->id.'" class="override" value="'.$product->quantity.'"/></td>';
        echo '<td><a href="do_deletecart.php?id="'.$row->id.'">Delete item </a></td></tr>';
    }}

    echo "<tr><td colspan='2'></td></tr>";
    echo "<tr><td style='text-align:center;font-size:40px;'>$</td><td><strong>Total</strong><br /><em>$".$total_price."</em></td></tr>";

}
 else {
echo "Your cart is empty.";
}
?>

更新 ID を do_deletecart.php に渡すことができます。しかし、カートから商品を削除できるようになりました do_deletecart.php

<?php
session_start();

$product = $_GET['id'];

foreach($_SESSION['cart'] as $key=>$value) {

if($product == $value)
 {
     unset($_SESSION['cart'][$key]);
         break;

 } }

header("location:cart.php");    

?>
4

2 に答える 2

1

$row->id期待どおりの内容が含まれていると仮定すると、<a>要素のhref属性を実質的に終了させる引用符で囲みました。

次のようにコードを更新する必要があります。

echo '<td><a href="do_deletecart.php?id='.$row->id.'">Delete item </a></td></tr>';

また、実際にセッションを開始したことを確認することもできます。スーパーグローバルにアクセスするには、出力がブラウザに送信される前$_SESSIONにまず呼び出しを行う必要があります。session_start()

于 2013-05-02T10:56:40.863 に答える
0

session_start();$_SESSION を使用する前に必ず含める必要があります

于 2013-05-02T10:58:34.163 に答える