无法从购物车会话中获取ID

时间:2013-05-02 10:53:35

标签: php

我正在做作业。我有一个购物车会话,我可以根据产品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");    

?>

2 个答案:

答案 0 :(得分:1)

好吧,假设$row->id包含您所期望的内容,您可以在其中附上引号,这将基本上终止<a>元素的href属性。

您需要按如下方式更新代码:

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

此外,您可能想要检查您是否确实已启动会话。要访问$_SESSION超全局,您需要在将任何输出发送到浏览器之前先调用session_start()

答案 1 :(得分:0)

您需要确保包含 使用$ _SESSION之前session_start();