PHP электронная форма множественного выбора - PullRequest
2 голосов
/ 05 июня 2010

Я пытаюсь настроить простую контактную форму 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\">";
}
?>

Любая помощь действительно ценится!

Ответы [ 3 ]

3 голосов
/ 05 июня 2010

Когда имя элемента в вашей форме оканчивается скобками, это означает, что PHP поместит значения в массив. Другими словами, если человек выбирает первые два варианта, значение $_POST['Events'] будет таким же, как array('Wednesday', 'Thursday'). Если вам нужна строка, содержащая все параметры (что-то вроде «Среда четверг»), вы можете использовать implode () . Если вы хотите проверить наличие определенного элемента, вы можете использовать in_array () . Например:

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

В качестве примечания я бы порекомендовал переосмыслить элементы управления выбором, которые допускают множественный выбор. Многие люди не привыкли к такому поведению и не поймут, что могут выбрать более одного. Флажки намного понятнее.

3 голосов
/ 05 июня 2010

$ _ POST ['Events'] будет массивом. Вы можете использовать функцию implode(), чтобы объединить их в строку через запятую:

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

В качестве альтернативы, вы можете перебирать их по отдельности, используя инструкцию foreach.

1 голос
/ 05 июня 2010

Если вы не хотите присоединяться к событиям через запятую, но хотите использовать их каким-либо другим способом, вы можете пройти через события для цикла foreach. Вместо

$Body .= $Events;

Вы можете использовать:

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

В этом примере каждое событие будет выделено отдельной строкой с символом «-», что сделает его похожим на список маркеров.

...