【问题标题】:PHP email form multiple selectPHP电子邮件表单多选
【发布时间】:2011-02-28 05:32:34
【问题描述】:

我正在尝试为网站设置一个简单的 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\">";
}
?>

非常感谢任何帮助!

【问题讨论】:

    标签: php email forms multiple-select


    【解决方案1】:

    $_POST['Events'] 将是一个数组。您可以使用implode() 函数将它们加入逗号分隔的字符串中:

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

    或者,您可以使用 foreach 语句单独迭代它们。

    【讨论】:

    • 谢谢,帮了大忙!这些东西大部分都在我的脑海中。
    • 我们都从某个地方开始,很乐意提供帮助 :-)
    【解决方案2】:

    当表单中元素的名称以方括号结尾时,这意味着 PHP 会将值放入数组中。换句话说,如果该人选择前两个选项,$_POST['Events'] 的值将与array('Wednesday', 'Thursday') 相同。如果你只想要一个包含所有选项的字符串(比如“星期三星期四”),你可以使用implode()。如果要检查特定项目是否存在,可以使用in_array()。例如:

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

    作为旁注,我建议重新考虑允许多项选择的选择控件。许多人不习惯这种行为,也不会意识到他们可以选择多个。复选框更加清晰。

    【讨论】:

      【解决方案3】:

      如果您不想通过逗号加入事件但想以其他方式使用它们,您可以loop through the events 进行foreach 循环。而不是

      $Body .= $Events;
      

      你可以使用:

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

      该示例将每个事件放在单独的一行中,并在其前面加上一个“-”,使其看起来像一个项目符号列表。

      【讨论】:

      • +1 表示foreach 示例,诚然,我懒得提供:-)
      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2015-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 2013-11-04
      相关资源
      最近更新 更多