2017-08-08 68 views
0

所以我仍然在學習PHP,並且我有一個有4個數組的表單。我試圖將數組發送到我的電子郵件以及其他一些信息。我收到的電子郵件說「數組,陣列」(然後剩下的信息正確顯示)。我無法弄清楚我錯過了什麼。獲取表單數組併發送到電子郵件

我可以得到正確顯示的父級信息,但我堅持要將子級信息轉換爲電子郵件。

if (isset($_POST['submit'])){ 
    // Parent Info 
    $pFname = mysql_escape_string($_POST['pFname']); 
    $pLname = mysql_escape_string($_POST['pLname']); 
    $email = mysql_escape_string($_POST['pEmail']); 
    $street = mysql_escape_string($_POST['street']); 
    $city = mysql_escape_string($_POST['city']); 
    $state = mysql_escape_string($_POST['state']); 
    $zip = mysql_escape_string($_POST['zip']); 

    // Child Info 
    $name = mysql_escape_string($_POST['Name']); 
    $birthday = mysql_escape_string($_POST['Birthday']); 
    $gender = mysql_escape_string($_POST['Gender']); 
    $rel = mysql_escape_string($_POST['Rel']); 

    $msg1 = "From: " . ' ' . $pFname . ' ' . $pLname . ' ' . ' ' . $pEmail 
    . ' ' . ' '; 

    foreach ($_POST['Name'] as $names){ 
     $name = $names; 
    } 

    foreach ($_POST['Birthday'] as $birthdays){ 
     $birthday = $birthdays; 
    } 

    foreach ($_POST['Gender'] as $genders){ 
     $gender = $genders; 
    } 

    foreach ($_POST['Rel'] as $rels) { 
     $rel = $rels; 
    } 

    $msg = "Name: " . " " . $name . " - " . $gender . "Birthday: " . 
    $birthday . " " . "Relationship: " . $rel . "\n\r"; 

    $to = '[email protected]; 
    $subject = 'Birthday Club Application'; 
    $msg = $msg . "\r\n"; 
    $msg .= "First Name: " . $pFname . "\r\n"; 
    $msg .= "Last Name: " . $pLname . "\r\n"; 
    $msg .= "Email: " . $email . "\r\n"; 
    $msg .= "Street: " . $street . "\r\n"; 
    $msg .= "City: " . $city . "\r\n"; 
    $msg .= "State: " . $state . "\r\n"; 
    $msg .= "Zip: " . $zip . "\r\n"; 

    $headers = 'From: ' . $pEmail . "\r\n"; 
    $headers1 = 'From: mycompany.com'; 
    /*$goto_after_mail = "birthdayClub.php";*/ 

    mail($to, $subject, $msg, $msg1, $headers); 

    header("Location: " . $goto_after_mail); 
} 

而這裏的HTML:

<form id="parent-info" method="post" action="<?php echo 
htmlspecialchars($_SERVER[" PHP_SELF "])?>"> 

    <h1>Guardian Information</h1> 
    <h4>*All fields required*</h4> 

    <input type="text" name="pFname" class="parent-entry" placeholder="First Name:" > 

    <input type="text" name="pLname" class="parent-entry" placeholder="Last Name:" > 

    <input type="text" name="pEmail" class="parent-entry" placeholder="Email:" > 

    <input type="text" name="street" class="parent-entry" placeholder="Street Address:" > 

    <input type="text" name="city" class="parent-entry" placeholder="City:" > 

    <input type="text" name="state" class="parent-entry" placeholder="State:" > 

    <input type="text" name="zip" class="parent-entry" placeholder="Zip Code:" > 
    <br> 

    <h2>Child Information</h2> 
    <h4>*All fields required*</h4> 

    <div class="child-form"> 

     <input type="text" name="Name[]" placeholder="Childs Name:" class="parent-entry" value " "; > 

     <input type="text" name="Gender[]" placeholder="Gender:" class="parent-entry" value " ";> 

     <input type="text" name="Birthday[]" placeholder="Ex: 1/1/01:" class="parent-entry" value " "; > 

     <input type="text" name="Rel[]" placeholder="Relation to child:" class="parent-entry" value " ";> 

    </div> 
+0

你應該有上線的閉合撇號,上面寫着'$到=「[email protected];'' – Alesana

+2

mysql_escape_string' __escapes string__'$ _POST ['Name']'__not a string__我甚至不知道你爲什麼使用這個函數。 –

+0

準備說同樣的事情@u_mulder – GrumpyCrouton

回答

0
foreach ($_POST['Name'] as $names) 

此行表明,$_POST['Name']是一個數組。如果是這種情況,您將遇到以下問題:

$name = mysql_escape_string($_POST['Name']); 

該函數需要一個字符串。當你給它一個數組時,它會將它轉換爲字符串「Array」。這同樣適用於所有的子數組。您在陣列上使用mysql_escape_string

你想做什麼而不是,因爲你似乎有一個孩子的數組,是循環通過該數組,並拿起每個孩子的信息添加到電子郵件。

如果您不想遍歷所有這些陣列,則另一種方法是使用print_r函數,並將其第二個可選參數設置爲true。這會將數組轉換爲用戶可讀的字符串。

變化

$name = mysql_escape_string($_POST['Name']); 

要:

$name = print_r($_POST['Name'], true); 

Live demo

+0

好的,所以我從$ _POST變量中刪除了mysql_escape_string。語法錯誤只是一個複製到這裏的錯誤。我想循環瀏覽每個孩子的信息並添加到電子郵件中,但那是我被困住的地方。我約99%肯定我可以使用一個foreach循環,但正如我所說,我仍然學習PHP和foreach循環正在給我適合現在。 – OrangeFreak

+0

@OrangeFreak,仍然沒有得到你的問題的根源。當你做'Name:'時,你試圖在一個字符串中包含一個數組。 $ name'。它只會打印「陣列」。我給了你兩種你可以用來獲取數組內部值作爲字符串的方法。 – BeetleJuice

+0

我向變量提出了正確的建議。它仍然送我'陣列'。 – OrangeFreak

相關問題