-2

フォームの送信後に何が選択されたかを記憶しているチェックボックスの簡単な例があり、エラーが発生しています。

その部分はうまく機能します...しかし、結果の「チェック済み」ボックスをフォームのメール機能に投稿したいと思います。

私が今持っているものは、チェックされているかチェックされていないかを報告するだけです。チェックされていないボックスが登録されていなくても、チェックされたボックスの「値」が必要です。

<?php

$CB_1 = 'unchecked';
$CB_2 = 'unchecked';
$CB_3 = 'unchecked';
$CB_4 = 'unchecked';
$CB_5 = 'unchecked';

if (isset($_POST['submit'])) {

if (isset($_POST['CB_1'])) {$CB_1 = $_POST['CB_1'];
if ($CB_1 == 'item_01') {$CB_1 = 'checked';}
}

if (isset($_POST['CB_2'])) {$CB_2 = $_POST['CB_2'];
if ($CB_2 == 'item_02') {$CB_2 = 'checked';}
}

if (isset($_POST['CB_3'])) {$CB_3 = $_POST['CB_3'];
if ($CB_3 == 'item_03') {$CB_3 = 'checked';}
}

if (isset($_POST['CB_4'])) {$CB_4 = $_POST['CB_4'];
if ($CB_4 == 'item_04') {$CB_4 = 'checked';}
}

if (isset($_POST['CB_5'])) {$CB_5 = $_POST['CB_5'];
if ($CB_5 == 'item_05') {$CB_5 = 'checked';}
}
}

if (isset($_POST['submit'])) {
$error  = "";

    if (!empty($_POST['email'])) {
    $email = $_POST['email'];

    if (!preg_match("/^[a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){ 
    $error .= "E-mail address not valid.";
    }

    } else {

    $error .= "E-mail address is required.";
    }

    if (empty($error)) {

    $from = 'From: '. @TEST .' <'. $email .'>';
    $to = "someone@company.com";
    $subject = "CHECKBOX TEST";
    $content = "

    checkbox selections: 
                        check box 01: $CB_1
                        check box 02: $CB_2
                        check box 03: $CB_3
                        check box 04: $CB_4
                        check box 05: $CB_5

    ";

    $success = mail($to,$subject,$content,$from);
    }
    }

?>



<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

<?php if (!empty($error)) echo $error ?>

<br><br><br>

e-mail: <input type="text" name="email" value="<?php if (isset ($_POST {'email'})) { echo $_POST['email']; } ?>" />

<P>

<input type="checkbox" name="CB_1" value="item_01" <?PHP echo $CB_1; ?> /> Item 01 

<input type="checkbox" name="CB_2" value="item_02" <?PHP echo $CB_2; ?> /> Item 02 

<input type="checkbox" name="CB_3" value="item_03" <?PHP echo $CB_3; ?> /> Item 03 

<input type="checkbox" name="CB_4" value="item_04" <?PHP echo $CB_4; ?> /> Item 04 

<input type="checkbox" name="CB_5" value="item_05" <?PHP echo $CB_5; ?> /> Item 05 

<P>

<input type="submit" name="submit" value="Submit"></input>

</form>
4

3 に答える 3

0

これは必ずしも質問に答えるわけではないかもしれませんが、コードをより効率的にする方法はこれを行うことです。

for($i=1; $i<=5;$i++)
{

     if(isset($_POST['submit'])&& isset($_POST['CB_'.$i]) && $CB_.$i=='item_0'.$i)
     {
        $CB_.$i = $_POST['CB_'.$i];
        $CB_.$i = 'checked';
     }
}

そのように修正すると、デバッグが容易になる場合もあります。

于 2012-12-12T17:06:14.010 に答える
0

さて、私は自分がやりたいことをする方法を見つけましたが、PHPを実際に経験した人がそれを行う方法ではないと確信しています。助言がありますか?

redelman431、あなたの提案に感謝しますが、それは私のスキルレベルには本当に高度すぎました。

<?php

        if(isset($_POST['item_01'])) {$item_01 = 'Item 01';}
        if(isset($_POST['item_02'])) {$item_02 = 'Item 02';}
        if(isset($_POST['item_03'])) {$item_03 = 'Item 03';}
        if(isset($_POST['item_04'])) {$item_04 = 'Item 04';}
        if(isset($_POST['item_05'])) {$item_05 = 'Item 05';}

if (isset($_POST['submit'])) {
$error  = "";

    if (!empty($_POST['email'])) {
    $email = $_POST['email'];

    if (!preg_match("/^[a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){ 
    $error .= "E-mail address not valid.";
    }

    } else {

    $error .= "E-mail address is required.";
    }

    if (empty($error)) {

    $from = 'From: '. @TEST .' <'. $email .'>';
    $to = "someone@company.com";
    $subject = "CHECKBOX TEST";
    $content = "

    checkbox selections: 

                        checked box's: $item_01 $item_02 $item_03 $item_04 $item_05





    ";

    $success = mail($to,$subject,$content,$from);
    }
    }

?>



<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

<span style="color: red;"><?php if (!empty($error)) echo $error ?></span>

<br><br><br>

e-mail: <input type="text" name="email" value="<?php if (isset ($_POST {'email'})) { echo $_POST['email']; } ?>" />

<P>



<input type="checkbox" name="item_01" value="Item 01" 
<?php if(isset($_POST['item_01'])) { echo 'checked'; } ?> /> Item 01

<input type="checkbox" name="item_02" value="Item 02" 
<?php if(isset($_POST['item_02'])) { echo 'checked'; } ?> /> Item 02

<input type="checkbox" name="item_03" value="Item 03" 
<?php if(isset($_POST['item_03'])) { echo 'checked'; } ?> /> Item 03

<input type="checkbox" name="item_04" value="Item 04" 
<?php if(isset($_POST['item_04'])) { echo 'checked'; } ?> /> Item 04

<input type="checkbox" name="item_05" value="Item 05" 
<?php if(isset($_POST['item_05'])) { echo 'checked'; } ?> /> Item 05



<P>

<input type="submit" name="submit" value="Submit"></input>

</form>
于 2012-12-13T09:06:47.377 に答える
0

探していたものが、「redelman431」が私にやらせようとしていたと思う配列の方法で見つけましたが、当時は意味がありませんでした。

次に、「DavidBélanger」によって別の配列に出くわしました。これは、何らかの理由で私にとってより理にかなっているので、チェックボックスに使用しました。

新しい問題は、チェックされたチェックボックスを取得できないことです。ページの他の場所にエラーがある場合、最終的なフォームには大量のエラーがあるため、災害です。

何か案は?

<?php

    #   Default Vars
    $_group_01 = '';
    if(isset($group_01) === TRUE){
    #   Is Array ?
    if(is_array($group_01) === TRUE){
    #   Count
    $c = count($group_01);
    #   Loop
    for($i=0; $i < $c; $i++){
    $_group_01.= (isset($group_01[$i]) === TRUE ? $group_01[$i] : '').($i == ($c-1) ? '' : ($i == $c-2 ? ' and ' : ', '));
    }
    }
    }

if (isset($_POST['submit'])) {
$error  = "";

    if (!empty($_POST['email'])) {
    $email = $_POST['email'];

    if (!preg_match("/^[a-z0-9]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", $email)){ 
    $error .= "E-mail address not valid.";
    }

    } else {

    $error .= "E-mail address is required.";
    }

    if (empty($error)) {

    $from = 'From: '. TEST .' <'. $email .'>';
    $to = "someone@company.com";
    $subject = "CHECKBOX TEST";
    $content = "

checkbox selections: 

Items Checked: $_group_01

    ";

    $success = mail($to,$subject,$content,$from);
    }
    }

?>



<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post">

<span style="color: red;"><?php if (!empty($error)) echo $error ?></span>

<br><br><br>

e-mail: <input type="text" name="email" value="<?php if (isset ($_POST {'email'})) { echo $_POST['email']; } ?>" />



<P>

<input type="checkbox" name="group_01[]" value="Item 01" 
<?php if(isset($_POST['group_01'])) { echo 'checked'; } ?> />Item 01

<input type="checkbox" name="group_01[]" value="Item 02" 
<?php if(isset($_POST['group_01'])) { echo 'checked'; } ?> />Item 02

<input type="checkbox" name="group_01[]" value="Item 03" 
<?php if(isset($_POST['group_01'])) { echo 'checked'; } ?> />Item 03

<input type="checkbox" name="group_01[]" value="Item 04" 
<?php if(isset($_POST['group_01'])) { echo 'checked'; } ?> />Item 04

<input type="checkbox" name="group_01[]" value="Item 05" 
<?php if(isset($_POST['group_01'])) { echo 'checked'; } ?> />Item 05

<P>



<input type="submit" name="submit" value="Submit"></input>

</form>
于 2012-12-13T13:47:36.473 に答える