2011-09-12 5 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

が実際にあるものを見るために '$ _POST'上の' 'var_dump'またはprint_r'を行います。 – Icode4food

+0

'Notice:'はエラーではありません。 '$ _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 } 
関連する問題