[英]$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']) ?>">;
您的代碼是錯誤的
失誤
<input>
缺少name="coupon"
IF
語句中缺少{}
- 缺少第一個IF條件的
else
部分
改善
IF
添加了{}
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
情況下正常工作
參考文獻
<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.