2016-05-30 75 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()的東西。