2

Webサイト用の簡単なPHP連絡フォームを設定しようとしていますが、選択メニューから複数の項目を一覧表示するようにPHPを変更するためのヘルプが必要であり、ヘルプをいただければ幸いです。私は開発者ではなくグラフィックデザイナーなので、これの多くは頭を悩ませています。これがここでの問題領域です。

    <label for="Events[]">Which Event(s) Will You Be Attending?</label>
   <div class="input-bg">
              <select name="Events[]" size="6" multiple="MULTIPLE" class="required" id="Events[]">
                <option value="Wednesday">Portfolio Show June 16</option>
                <option value="Thursday">Portfolio Show June 17</option>
                <option value="Saturday">Graduation Ceremony</option>
                <option value="Saturday Eve">Graduation Party</option>
                <option value="Not Sure">Not Sure</option>
                <option value="Not Coming">Not Coming</option>
              </select>
      </div>

そしてこれがPHPです:

    <?php

// CHANGE THE VARIABLES BELOW

$EmailFrom = "Justin@justgooddesign.net";
$EmailTo = "Justin@justgooddesign.net";
$Subject = "Graduation RSVP";

$Name = Trim(stripslashes($_POST['Name'])); 
$Email = Trim(stripslashes($_POST['Email'])); 
$Guests = Trim(stripslashes($_POST['Guests'])); 
$Events = Trim(stripslashes($_POST['Events'])); 

// prepare email body text
$Body = "";
$Body .= "Name: ";
$Body .= $Name;
$Body .= "\n";
$Body .= "Email: ";
$Body .= $Email;
$Body .= "\n";
$Body .= "Guests: ";
$Body .= $Guests;
$Body .= "\n";
$Body .= "Events: ";
$Body .= $Events;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page
// CHANGE THE URL BELOW TO YOUR "THANK YOU" PAGE
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=http://justgooddesign.net/graduation\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=http://justgooddesign.net/graduation/error.html\">";
}
?>

どんな助けでも本当にありがたいです!

4

3 に答える 3

3

$_POST['Events'] は配列になります。関数を使用して、implode()それらをカンマ区切りの文字列に結合できます。

$Events = Trim(stripslashes(implode(",", $_POST['Events'])));

foreachまたは、ステートメントを使用して個別に反復処理することもできます。

于 2010-06-05T19:27:05.673 に答える
3

フォーム内の要素の名前が角かっこで終わる場合、それは PHP が値を配列に入れることを意味します。つまり、人が最初の 2 つのオプションを選択した場合、 の値は$_POST['Events']と同じになりますarray('Wednesday', 'Thursday')すべてのオプションを含む文字列 (「水曜日、木曜日」など) が必要な場合は、 implode()を使用できます。特定のアイテムの存在を確認したい場合は、in_array()を使用できます。例えば:

if (in_array('Wednesday', $_POST['Events']))
{
    echo 'You selected Wednesday!';
}

補足として、複数の選択を許可する選択コントロールを再考することをお勧めします。多くの人はこの動作に慣れておらず、複数選択できることに気が付きません。チェックボックスははるかに明確です。

于 2010-06-05T19:37:28.540 に答える
1

コンマでイベントを結合したくないが、他の方法でそれらを使用したい場合は、ループのイベントをループできforeachます。それ以外の

$Body .= $Events;

あなたが使用することができます:

foreach($Events as $event) {
    $Body .= '- $event\n';
}

この例では、各イベントは行頭に「-」を付けて、行頭リストのように表示します。

于 2010-06-05T19:32:19.657 に答える