簡體   English   中英

$ POST未發送復選框值,PHP未定義索引錯誤

[英]$POST not sending checkbox values, PHP Undefined index error

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

}

更改為:

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

您的代碼是錯誤的

失誤

  1. <input>缺少name="coupon"
  2. IF語句中缺少{}
  3. 缺少第一個IF條件的else部分

改善

  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選中的屬性-W3Schools.com
<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']) ?>">;

像這樣改變它..

嘗試

<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>

盡管其他答案和注釋是正確的-您需要在input放置name屬性-不能完全解決問題。 您確實需要更改它。

另一個問題是瀏覽器未將未選中的復選框發送到服務器。

因此,在處理復選框時,始終需要使用isset()empty()類的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM