2016-05-30 78 views
0

我是PHP和Codeigniter的新手。尝试提交表单,但由于某些原因,值不会发送给控制器。如果我不使用isset函数,那么我得到一个未定义的索引错误。我究竟做错了什么?

HTML

<form action="<?= site_url('Buyer_Controller/view_cart') ?>" method= "post"> 

    <div class="lalign"> 
     <input type="checkbox" /> <span id="normal-p" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>">; 
</div> 
<button type="submit">Add to Cart</button> 
</form> 

PHP

public function view_cart() 
    { 

      $this->load->model("cart_model", "cartm"); 
      if (!empty($_SESSION['id'])) 
       redirect('Buyer_Controller'); 

       if(!isset($_POST['coupon'])) { 

       redirect('Buyer_Controller/test'); 
       } 

       else{ 

       $data= $_POST['coupon']; 
       } 

} 
+0

复选框没有'name'属性。 –

+0

范围具有'name'属性而不是'input'。切换它们 – Thamilan

+0

谢谢。我觉得我好笨。 :( – user3151013

回答

0

它改成这样:

<input type="checkbox" id="normal-p" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>">; 
0

你的代码是错误

错误

  1. <input>
  2. 缺少name="coupon"IF声明
  3. 缺少{}缺少的一部分else第一IF条件

提高

  1. 确定名称字段
  2. 新增{}IF
  3. 使用empty而不是isset

<input type="checkbox" /> # No Name attribute 
<span id="normal-p" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>"> 

应该

在查看

<input type="checkbox" id="normal-p" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>"> 

在控制器

public function view_cart() 
{ 

    $this->load->model("cart_model", "cartm"); 

    if (!empty($_SESSION['id'])) # missing {} 
    { 
     redirect('Buyer_Controller'); 
    } 
    else # Missing 
    { 
     $post = $this->input->post('coupon'); 
     if(!empty($post)) { 
      redirect('Buyer_Controller/test'); 
     } 
     else{ 
      $data = $post 
     } 
    } 
} 

注意:确保你的网站是不工作index.php


参考

  1. HTML checked Attribute - W3Schools.com
0
<input type="checkbox" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>"/> <span id="normal-p" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>">; 

改变它像这样..

0

尝试

<input type="checkbox" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>" /> <span id="normal-p" for="coupon"> <?echo "sku_".html_escape($p_item2['CouponID']);?></span> 
0

虽然其他的答案和评论是正确的 - 你需要把name属性您input - 这并不能彻底解决你的问题。不过你确实需要改变它。

另一个问题是未经检查的复选框不会被浏览器发送到服务器。

因此,在处理复选框时,您总是需要使用类似isset()empty()的东西。