我是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 :(得分:0)
将其更改为:
<input type="checkbox" id="normal-p" name="coupon" value="sku_<?php echo html_escape($p_item2['CouponID']) ?>">;
答案 1 :(得分:0)
您的代码错误
错误
- 在
中遗失name="coupon"
<input>
- 在
中遗失{}
声明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
参考文献
答案 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()
之类的内容。