我正在开发一个电子商务网站。我有一个产品页面,我有一个单独的表格,可以使用按钮同时添加多个产品数量。 在我的产品页面上,在我的单个表单中,我使用循环将单个产品值发送到下一页:
<?
$query_data=$this->db->get('products');
foreach($query_data->result() as $product)
{
?>
<input name="productname[]" value="<?=$product->Name?>" type="hidden" />
<input type = "hidden" id = "product_id" name = "product_id[]" value = "<?=$product->Code?>" />
<input name="num_pallets[]" id="num_pallets" value="<?=$pallet?>" type="hidden" />
<input type = "hidden" id = "num_packs" name = "num_packs[]" value = "<?=$packet?>" />
<input type="text" name="quantity[]" id="quantity" size="2" />
<input type = "hidden" id = "product_price" name = "product_price" value = "<?=$number?>" />
<?
}
?>
其中:
1)“数量”字段是客户订购的产品数量。
2)“num_pallets”字段是产品在数据库中具有的产品的托盘数量。
3)“num_packs”字段是产品在数据库中具有的产品的包装数量。
现在,我想在购物车页面上检索相应的值,以便我可以相应地执行计算。
我遇到的另一个问题是,当我提交表单时,它会在文本框中提交所有值,包括我不输入数量的产品值。
我的问题:
如何在我的页面上循环浏览产品(我在文本框中输入“数量”),这样它就可以只给我订购产品的相应值,即如果我填写产品的数量文本框( 11760)然后我想处理11760的值,而不是其他产品。
如何只检索1个或更多订购产品的相应值?谢谢
答案 0 :(得分:1)
如果我理解正确,您想检查是否已为任意数量的产品填写数量,如果是,请相应处理,对吧?
// controller method that receives posted form data
$quantity = $this->input->post('quantity');
foreach($this->input->post('product_id') as $key => $id){
if($quantity[$key]){
//there's a quantity for this product
}
}
答案 1 :(得分:0)
这是解决方案。我已经完成了测试,发现为了将相应的索引与各个产品保持在一起,我需要以多维数组的形式传递产品代码,如下所示:
<?
if (isset($_POST['quantity']) && is_array($_POST['quantity']))
{
$field_array = array();
foreach($_POST['quantity'] AS $itemID => $value)
{
if ($_POST['quantity'][$itemID]>0)
{
if (isset($_POST['product_id'][$itemID])&& (isset($_POST['product_price'][$itemID])) && (isset($_POST['counter'][$itemID]))&& (isset( $_POST['quantity'][$itemID])))
{
$productid=$_POST['product_id'][$itemID];
$this->load->model('m_shopping_cart');
$pricehead=($_POST['quantity'][$itemID])*($_POST['product_price'][$itemID]);
$this->m_shopping_cart->add_to_cart($_POST['product_id'][$itemID],$_POST['product_price'][$itemID],$_POST['quantity'][$itemID],$_SESSION['cart_id'],$pricehead,false,false,false);
}
}
}
}
?>