0

フォームが送信されると、古い Web サイトでphpmailerを使用してメールを送信しています。

入力テキストを正しく送信していますが、正しい選択オプションを送信していません。

私が使用しているPHP / HTMLページは次のとおりです。

// array to create title select options
<?php
$selectArray1 = array ('Mr'=>'Mr',
                  'Mrs'=>'Mrs',
                  'Miss'=>'Miss',
                  'Ms'=>'Ms',
                  'Dr'=>'Dr');
?>

// below select box only sending the first option (Mr)
<label for="title">Title</label>
<select id="title" name="title[]">
<?php
foreach ($selectArray1 as $val_title){
echo "<option value=\"$val_title\">";
echo $val_title;
echo "</option>";
}
?>
</select>

//below input in sending correctly
<label for="name">Name</label></td>
<input id="name" name="name" maxlength="50" type="text" value="">

そのため、ドロップダウンから「Miss」と言うを選択しても、受信したメールのタイトルは常に「Mr」になります。

送信時のフォームのアクションであるメーラーは次のとおりです。

<?php

// Grab our config settings
require_once($_SERVER['DOCUMENT_ROOT'].'/Site/config.php');

// Grab the FreakMailer class
require_once($_SERVER['DOCUMENT_ROOT'].'/Site/lib/MailClass.inc');

// instantiate the class
$mailer = new FreakMailer();

// Set the subject
$mailer->Subject = 'Finance Enquiry - Site.co.uk';

// Body
$mailer->Body = 'Finance Enquiry from Site.co.uk' . "\n\n" . $_POST['title'] .      "\n\n" . $_POST['name'] . "\n\n" . $_POST['user-email'];


// Add an address to send to.
$mailer->AddAddress('mail@mail.co.uk', 'Site');

if(!$mailer->Send())
{
echo 'There was a problem sending this mail!';
}
else
{
echo 'Mail sent!';
}
$mailer->ClearAddresses();
$mailer->ClearAttachments();
?>

上記$_POST['title']は私が問題を抱えているところです。ユーザー入力から正しい選択オプションが送信されるようにコードを変更するにはどうすればよいですか?

4

3 に答える 3

0

<select>:の名前として「title[]」の代わりに「title」を使用する必要があります。

これは機能します:

<?php
$selectArray1 = array ('Mr'=>'Mr',
                  'Mrs'=>'Mrs',
                  'Miss'=>'Miss',
                  'Ms'=>'Ms',
                  'Dr'=>'Dr');
?>
<form action="test.php?done=1" method="POST">

<label for="title">Title</label>
<select id="title" name="title">
<?php
foreach ($selectArray1 as $val_title){
echo "<option value=\"$val_title\">";
echo $val_title;
echo "</option>";
}
?>
</select>

<input type="submit">
</form>

<?php

if( $_GET["done"] == 1 )
{
    echo "Output:".$_POST["title"];
}
?>
于 2013-01-12T12:17:55.313 に答える
0

selectに「title[]」という名前を付けた理由は、代わりに「title」に名前を変更してコードを確認するだけです。角かっこは、複数の値を受け入れる必要がある場合にのみ必要です。

于 2013-01-12T12:16:00.413 に答える