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