2012-12-12 118 views
-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 = "[email protected]"; 
    $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> 
+1

我認爲這個問題會是我現在沒有嘗試過的。 – diresaint

+1

除了一種可以改進代碼並使其更加簡潔的方法之外,沒有任何問題,只需將所有變量和索引名稱與一個整數連接起來,並將其放在for循環中,而不是放置所有這些ifs。 – DrinkJavaCodeJava

+0

我@ redelman431同意,將開始修復 – samayo

回答

0

我發現我一直在尋找我的陣列我認爲「redelman431」試圖讓我做的方式假設,但它並沒有在當時任何意義我。

然後我無意中發現了由「大衛·貝朗格」,對於由我更有意義一些原因,所以我用它爲我的複選框的和它的作品令人難以置信的另一個數組。

新的問題是,我不能讓已檢查要記住,如果這是一個災難我的最終形式在頁面上其他地方的錯誤有一噸他們的複選框的。

任何想法?

<?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 = "[email protected]"; 
    $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> 
+0

我忘了提及,我試圖讓它記住檢查的內容,如果檢查到所有數組,就會檢查所有數組,以便這是不可行的。 – diresaint

0

我知道這可能不一定回答這個問題,但你可以讓你的代碼更efficiant的方式是做到這一點。

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'; 
    } 
} 

如果你修復它,它也可能使我們更容易調試。

+0

嗯,我只是試過,但它給了我一個「解析錯誤:語法錯誤,意想不到'++'」當我試圖運行它。也許我插錯了。我只是用你的代碼替換了我用來處理複選框的東西。那是對的嗎? – diresaint

+0

我忘了這樣的i ++ – DrinkJavaCodeJava

+0

$? 「for($ i = 1; i <= 5; $ i ++)」這讓wamp想起它並停止工作。 – diresaint

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 = "[email protected]"; 
    $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> 
相關問題