$ POST不发送复选框值,PHP未定义索引错误

时间:2016-05-30 06:51:24

标签: javascript php html codeigniter

我是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'];
               }

}

5 个答案:

答案 0 :(得分:0)

将其更改为:

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

答案 1 :(得分:0)

您的代码错误

  

错误

     
      
  1. name="coupon"
  2. 中遗失<input>   
  3. {}声明
  4. 中遗失IF   
  5. 缺少第一个IF条件的else部分
  6.   

<强>提高

  1. 修复名称字段
  2. {}
  3. 中添加了IF
  4. 使用empty代替isset
  5. <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

答案 2 :(得分: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']) ?>">;

像这样改变..

答案 3 :(得分: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>

答案 4 :(得分:0)

虽然其他答案和评论是正确的 - 您需要将name属性放在input上 - 这不会完全解决您的问题。你确实需要改变它。

另一个问题是浏览器不会将未选中的复选框发送到服务器。

因此,在处理复选框时,您始终需要使用isset()empty()之类的内容。