2017-04-16 104 views
1

我不是偉大的PHP表單和郵件功能,但...失去無線電值克隆表單字段

我想自己建及報名表(http://adrianandemma.com/),人們可以增加他們的名字並選擇是/否參加。他們還可以點擊一個RSVP鏈接給另一個人。如果點擊,這通過jQuery克隆名稱和無線電。

當表單提交時,我試圖通過電子郵件將詳細信息發送給我自己。電子郵件目前正在提交,如果我一次收到3封RSPV姓名的電子郵件,則3個姓名值將通過電子郵件通過罰款,但我只有第一個人的值是/否。

任何人都可以幫助診斷爲什麼我的克隆單選按鈕值不是通過電子郵件發送?

這裏是我的形式:

<form action="?" method="post"> 
     <?php if(@$errors) :?> 
      <p class="errors"><?php echo $errors; ?></p> 
     <?php endif; ?> 
     <input type="hidden" name="submit" value="1" /> 
     <div class="form-row"> 
      <div class="field-l"> 
       <p>Name</p> 
      </div> 
      <div class="field-r"> 
       <p>Attending?</p> 
      </div> 
     </div> 
     <div class="form-row guest"> 
      <div class="field-l"> 
       <input type="text" name="name[]" id="name" value="<?php echo htmlspecialchars(@$_REQUEST['name']); ?>" tabindex="1" /> 
      </div> 
      <div class="field-r"> 
       <input type="radio" name="coming[]" id="coming-yes" class="coming-yes" value="Yes"><label for="coming-yes">Yes</label><input type="radio" name="coming[]" id="coming-no" class="coming-no" value="No"><label for="coming-no">No</label> 
      </div> 
     </div> 
     <a class="addguest" href="#">Add further guest</a> 
     <div class="form-row"> 
      <button type="submit" id="rsvp-submit" tabindex="2">Submit RSVP</button> 
     </div> 
    </form> 

...這是我的PHP代碼的郵件:

<?php 

$name = $_POST['name']; 
$coming = $_POST['coming']; 

$errors = ""; 
if([email protected]$_POST['name']) { $errors .= "Please enter your name.<br/>\n"; } 
if([email protected]$_POST['coming']) { $errors .= "Please enter yes or no for attending.<br/>\n"; } 

if(@$_POST['emailaddress'] != '') { $spam = '1'; } 

if (!$errors && @$spam != '1') 
    { 
     $to = "[email protected]"; 
     $subject = "Wedding RSVP"; 
     $headers = "From: [email protected]"; 
     $body = "The following RSVP has been sent via the website.\n\n"; 
     for($i=0; $i < count($_POST['name']); $i++) { 
      $body .= " 
      Name ".($i+1)." : " . $_POST['name'][$i] . "\n 
      Coming ".($i+1)." : " . $_POST['coming'][$i] ."\n\n"; 
     } 
     $body .= "\n\nDate Received: " . date("j F Y, g:i a") . "\n"; 

     mail($to,$subject,$body,$headers); 
    } 

?> 

我簡單$錯誤的驗證也似乎有一個障礙。如果我現在提交沒有填寫任何表單的表單,它只會向我顯示關於空單選按鈕的錯誤消息,而不是空的「名稱」字段,不知道爲什麼這是或者?

任何幫助都會非常驚人,因爲我正努力完成這項任務。

謝謝:)

...對不起應包括,這是目前,如果說我收到3名的RSVP我通過電子郵件接收什麼的例子:

The following RSVP has been sent via the website. 


     Name 1 : Dave Jones 

     Coming 1 : Yes 


     Name 2 : Amy Jones 

     Coming 2 : 


     Name 3 : Carl Jones 

     Coming 3 : 


Date Received: 16 April 2017, 2:38 pm 

回答

0

我看了一下您的misc.js javascript生成的html,並且name屬性設置爲coming[]1,coming[]2

我的建議有兩種情況:

1)保留這些作爲coming[],因此您的申請將有coming作爲數組。然後,您可以使用與name相同的索引循環執行此操作。

2)使用jQuery的更換coming[]coming1coming2coming3然後用這些處理在你的PHP不同的變量。

+0

阿哈感謝你......我還沒有意識到,即將修改的名稱是1,2,3。我嘗試從我的misc.js中刪除該行,並將其添加到即將到來的每個廣播中,現在只是命名未來[]。然而,當我現在提交時,沒有任何電臺值正在通過(他們都是空白的)。我是否需要添加到我的PHP郵件代碼來處理多個收音機? – ade123

+0

實際上,現在我已經刪除了將'name'屬性更改爲1,2,3等的js,我一次只能選擇一個廣播。我想這是因爲如果我有3個重複的收音機,他們現在都有相同的名稱。嗯... – ade123

0

做你知道,單選按鈕中沒有任何價值,如果你「添加另一個客人」..在字段1中,值是存在的,但它的字段2,3,4等空...也許這就是它導致它發送空值,當你提交表格

radio button empty value