-1

送信後にメールのチェックボックスからの入力情報を表示するコードがあります。これは完全に正常に機能しますが、ユーザーがチェックボックスから選択を行わない場合、電子メールメッセージに「オプションがチェックされていません」と表示させます。これどうやってするの?以下は関連するコードです-これらのチェックボックスの両方でこれを達成する必要があります。ある種のELSEステートメントが必要だと思います。

コード:

if(!empty($_POST['features'])) {
foreach($_POST['features'] as $value) {
    $check_msg1 .= "Features checked: ".$value."\n";          
}}

if(!empty($_POST['fright'])) {
foreach($_POST['fright'] as $value) {
    $check_msg2 .= "Fright checked: ".$value."\n";            
}}
4

3 に答える 3

1

チェックボックスの値は、一度チェックされないと送信されないため、$_POST['cb_name']空の場合は何もチェックされません。これによると、次のようなコードが必要になります(「fright」についても同じ):

if(!empty($_POST['features'])) {
   foreach($_POST['features'] as $value) {
       $check_msg1 .= "Features checked: ".$value."\n";          
   }
} else {
   $check_msg1 .= "No options checked\n"
}
于 2012-12-13T10:24:41.390 に答える
1

ユーザーが何もチェックしていない場合、$ _POST['features']または$_POST['fright']はありません。

isset、より正確には!を実行する必要があります。isset

if ( ! isset($_POST['features']))
{
    $check_msg1 .= "No features selected.\n";
}
else
{
    foreach ($_POST['features'] as $value)
    {
        $check_msg1 .= "Features checked: " . $value . "\n";
    }
}

if ( ! isset($_POST['fright']))
{
    $check_msg2 .= "No fright selected.\n";
}
else
{
    foreach ($_POST['fright'] as $value)
    {
        $check_msg2 .= "Fright checked: " . $value . "\n";
    }
}
于 2012-12-13T10:24:48.377 に答える
1

試す:

if(isset($_POST['features'])) {
foreach($_POST['features'] as $value) {
    $check_msg1 .= "Features checked: ".$value."\n";          
}}
else {
    $check_msg1 .= "No options checked \n";
}

if(isset($_POST['fright'])) {
foreach($_POST['fright'] as $value) {
    $check_msg2 .= "Fright checked: ".$value."\n";            
}}
else {
    $check_msg2 .= "No options checked \n";
}

オプションがチェックされていない場合、POSTはチェックボックスの値を返しません。したがって、POST配列の値が設定されているかどうかを確認する必要があります。'empty'をチェックすると、チェックボックスがチェックされていてもtrueが返されますが、値は空です。

于 2012-12-13T10:25:22.467 に答える