2017-08-08 6 views
0

私はまだPHPを学んでいますが、4つの配列を持つフォームがあります。私は配列を私の電子メールにいくつかの他の情報とともに送るようにしています。取得している電子メールには「配列、配列」と表示されます(残りの情報は正しく表示されます)。私は何が欠けているのか分からない。フォームの配列を取得してメールで送信

私は親情報を正しく表示することができますが、私は子情報を電子メールに変換することに手をつけています。

<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' __エスケープ文字列__ $ _POST ['Name'] 'は文字列ではありません_なぜこの関数を使うのかわかりません。 –

+0

同じことを言うつもりだった@u_mulder – GrumpyCrouton

答えて

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

この行は$_POST['Name']が配列であることを示唆している:

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です。関数は、文字列を期待していること

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

:そのような場合、あなたはこのラインに問題があります。配列にフィードすると、文字列 "Array"に変換されます。同じことがすべての子配列に適用されます。アレイ上でmysql_escape_stringを使用しています。

あなたが子供の配列を持っているように思われるので、その配列をループして、電子メールに追加する各子の情報を取得することです。

また、これらすべての配列をループしたくない場合は、trueに設定された2番目のオプションパラメータでprint_r関数を使用します。これにより、配列がユーザーが読める文字列に変換されます。

変更

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

へ:

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

Live demo

+0

これで、$ _POST変数からmysql_escape_stringを削除しました。構文エラーはここにコピーするエラーでした。私はそれぞれの子供の情報をループして電子メールに追加したいが、どこにいるのか分からない。 Im約99%私はforeachループを使用することができると確信していますが、私が言ったように、私はまだPHPとforeachループを学んでいる私は今すぐフィット感を与えている。 – OrangeFreak

+0

@OrangeFreakはあなたの問題の根本にまだ沿っていません。 '' Name:」を実行すると、文字列内に配列を含めることを試みています。 $ name'。それは "アレイ"だけを印刷します。配列内の値を文字列として取得するために使用できる2つの方法を示しました。 – BeetleJuice

+0

私は変数に提案された正しいものを作った。それはまだ私に 'アレイ'を送ります。 – OrangeFreak

関連する問題