复选框和PHP

时间:2011-09-12 14:39:44

标签: php checkbox

我的网站上有一个表单,但是我在传递复选框的值时出现问题。

我收到以下错误...

Notice: Undefined index: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 324 Unexpected error.

var_dump显示这些错误......

Notice: Undefined index: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 325 NULL Notice: Undefined variable: upgradeable in /var/www/vhosts/domain.com/httpdocs/***/includes/modules/admin.php on line 327 Unexpected error.

我的复选框看起来像这样......

<input type="checkbox" name="upgradeable" class="" value="<?php echo $membership['upgradeable']; ?>" >

在admin.php第324行,看起来像这样......

$upgradeable = inputFilter($_POST['upgradeable']);

任何人都可以帮我找到错误。

5 个答案:

答案 0 :(得分:1)

仅当复选框实际设置为选中时,才会发送复选框的值。如果未选中,则根本不设置该值,因此$_POST['upgradable']将不确定。

试试这个:

$upgradeable = isset($_POST['upgradeable']) ? inputFilter($_POST['upgradeable']) : '';

答案 1 :(得分:1)

使用类似isset()的内容来检查$ _POST数组是否实际包含给定键的值,然后再尝试访问它。未选中的复选框实际上永远不会作为POST参数传递,因此如果未选中该框,则密钥将不存在。事实上,您可以简化代码:

$upgradeable = isset($_POST['upgradeable']);

(然后,您将在$upgradeable中获得与已选中/未选中相对应的TRUE / FALSE值。)

答案 2 :(得分:0)

如果我没有弄错,当取消选中该复选框时,_POST数组中什么都没有。 (选中时“升级=开启”。)因此,如果您想避免警告,您可以这样做:

if (isset($_POST['upgradable']) && $_POST['upgradable'] === 'on') ...

答案 3 :(得分:0)

如果取消选中该复选框,则它不会在$ _POST

在使用之前,您需要使用isset($ _ POST ['upgradeable']),如果未设置,可能会将其设置为false值。

答案 4 :(得分:0)

如果未选中复选框,则不会将任何内容传递回表单处理程序。

所以使用

if (isset($_POST['upgradeable'])){  // now sanitize }