2011-09-12 92 views
1

我在我的网站上有一个表单,但我有一个问题传递复选框的值。复选框和PHP

我得到以下错误...

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']; ?>" > 

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

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

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

+0

做'var_dump'或'print_r'上'$ _POST'看到什么是真正存在。 – Icode4food

+0

'注意:'通知不是错误。检查'$ _POST ['upgradeable']'是否包含'inputFilter()'函数之前的内容。 – powtac

+0

用什么var_dump显示更新了我的问题。 –

回答

1

复选框的值,如果该复选框实际上被设为检查,才会发送。如果没有被选中,那么这个值根本没有设置,所以$_POST['upgradable']将是未定义的。

试试这个:

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

谢谢!这个伎俩。 –

0

如果我没有弄错,当复选框未选中时,_POST数组中没有任何东西。 (对战“上升级=”,当它被选中。)所以,如果你想避免的警告,你可以简单地做:

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

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

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

(然后你就在$upgradeable得到TRUE/FALSE值对应选中/取消。)

0

如果该复选框未被选中,那么它将不会在$ _POST

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

0

如果未选中某个复选框,则不会传回您的表单处理程序。

所以使用

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