Php 从购物车中删除代码不起作用
我正在做一个电子商务练习——将物品添加到购物车,然后将其移除。项目/购物车是存储在会话中并在控制器功能中操作的项目id和数量值-除了产品id之外,没有从数据库中提取任何内容。添加到购物车或更新正在工作,但删除不起作用 据我所知,用于添加或删除的函数很简单——一个应该增加一个值,另一个应该减少。代码如下。有什么想法吗 从篮子中取出:Php 从购物车中删除代码不起作用,php,codeigniter,Php,Codeigniter,我正在做一个电子商务练习——将物品添加到购物车,然后将其移除。项目/购物车是存储在会话中并在控制器功能中操作的项目id和数量值-除了产品id之外,没有从数据库中提取任何内容。添加到购物车或更新正在工作,但删除不起作用 据我所知,用于添加或删除的函数很简单——一个应该增加一个值,另一个应该减少。代码如下。有什么想法吗 从篮子中取出: public function remove_from_basket($item_id) { // remove an item fr
public function remove_from_basket($item_id)
{
// remove an item from a cart
$quantity = $this->session->userdata($item_id);
$quantity -= $this->session->post('qty');
$this->session->set_userdata($item_id, $quantity);
redirect('/eCommerceItems/eCommerce_basket');
}
Called from
<?php
$total=0;
foreach ($items as $item)
{
$temp = $item['price'] * $this->session->userdata($item['id']);
$total += $temp;
if ($this->session->userdata($item['id']) > 0)
{
echo "<div class='item'>
<div class='description'>
<p>Name: {$item['name']}</p>
<p>Price: {$item['price']}</p>
<p>Quantity: {$this->session->userdata($item['id'])}</p>
<form action '/eCommerceItems/remove_from_basket/{$item['id']}' method='post'>
<select name='qty'>";
for($i=1;$i <= $this->session->userdata($item['id']);$i++)
{
echo "<option>{$i}</option>";
}
echo "</select>
<input type='submit' value='Remove'>
</form>
</div>
</div>";
}
}
致电:
<?php
foreach($items as $item)
{
echo "<div class='item'>
<div class='description'>
<p>Name: {$item['name']}</p>
<p>Description: {$item['description']}</p>
<p>Price: \${$item['price']}</p>
<p>Quantity Available: {$item['quantity']}</p>
<p>Item ID is: {$item['id']}</p>
<form action='/eCommerceItems/add_to_basket/{$item['id']}' method='post'>
<select name='qty'>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
<input type='submit' value='Add to basket'>
</form>
</div>
</div>";
}
?>
在您的代码中,您有:
$quantity -= $this->session->post('qty');
这应该是:
$quantity -= $this->input->post('qty');
试试看。。。还需要考虑到低于0,我会假设吗
public function remove_from_basket($item_id)
{
// remove an item from a cart
$increment = $this->input->post('qty');
$quantity = $this->session->userdata($item_id);
$newQuantity = $quantity - $increment;
if ($newQuantity > 1) {
$this->session->set_userdata($item_id, $Quantity);
} else {
$this->session->unset_userdata($item_id);
}
}
如果您仍然有问题,我建议print\r($variable);死亡代码>每个步骤(或使用CI的日志功能)并查看您的值是否与您认为的值相同
有时候写出来更简单,更简单,让它工作起来…感谢所有的建议-这似乎是Opera中生成的HTML按钮没有正确激活的问题,而不是PHP代码的问题。我没有根本原因(可能是空格或格式),但从头重写html段修复了按钮操作。
public function remove_from_basket($item_id)
{
// remove an item from a cart
$increment = $this->input->post('qty');
$quantity = $this->session->userdata($item_id);
$newQuantity = $quantity - $increment;
if ($newQuantity > 1) {
$this->session->set_userdata($item_id, $Quantity);
} else {
$this->session->unset_userdata($item_id);
}
}