在php电子邮件表单中选择多个复选框

时间:2011-08-30 15:31:26

标签: php forms email checkbox

我正在尝试为网站设置一个简单的PHP联系表单,我需要一些帮助修改PHP以从选择菜单中列出多个项目,并希望得到帮助。我是一名平面设计师,而不是开发人员,所以很多事情都是我的头脑。这是问题所在:

HTML:

<form method="post" action="projectplanner.php">
<label>Name*</label><input class="text" name="name" placeholder="Typ hier uw naam">
<label>Email*</label><input class="text" name="email" type="email" placeholder="Typ hier uw email">
<label>Telefoon*</label><input class="text" name="telefoon" type="tel" placeholder="Telefoon of mobiel">
<label>Organisatie*</label><input class="text" name="organisatie" placeholder="Ik vertegenwoordig..">
<label>Bestaande website (indien van toepassing)</label><input class="text" name="website" placeholder="http://www">
<label>Soort project</label>
<input name="project[]" type="checkbox" value="huisstijl" class="check" />Huisstijl<br />
<input name="project[]" type="checkbox" value="websiteontwerp" class="check"/>Website ontwerp<br />
<input name="project[]" type="checkbox" value="websiteontwikkeling" class="check"/>Website ontwikkeling<br />
<input name="project[]" type="checkbox" value="onlinemarketing" class="check-last"/>Online marketing<br /> 
<label>Beschrijving van uw project</label>
<textarea class="project_text" name="beschrijving" placeholder="Een globale beschrijving. Doelstelling, publiek, concurenten?"></textarea>
<label>Inspiratie</label>
<textarea class="project_text" name="inspiratie" placeholder="Kopieer links naar website / apps / afbeeldingen die u inspireren"></textarea>
<label>* 2+2= ? (Anti-spam)</label>
<input name="human" placeholder="Antwoord">
<input id="submit" name="submit" type="submit" value="Verzend">

PHP:

<?php
$naam = $_POST['naam'];
$email = $_POST['email'];
$telefoon = $_POST['telefoon'];
$organisatie = $_POST['organisatie'];
$website = $_POST['website'];
$beschrijving = $_POST['beschrijving'];
$project = $_POST['project'];
$inspiratie = $_POST['inspiratie'];
$from = 'From: the website'; 
$to = 'someone@somewhere.com'; 
$subject = 'onderwerp';
$human = $_POST['human'];

$body = 
"Van: $name\n 
E-Mail: $email\n 
Telefoon: $telefoon\n 
Organisatie: $organisatie\n 
Website: $website\n 
Project Soort: $project\n 
Omschrijving: $beschrijving\n
Inspiratie: $inspiratie";
if ($_POST['submit'] && $human == '4') {                 
    if (mail ($to, $subject, $body, $from)) { 
    print ("Dank u wel");
    /*echo '<p>Uw bericht is verzonden!</p>';*/
} else { 
    echo '<p>Oeps. Er ging iets fout. Probeer nogmaals.</p>'; 
} 
} else if ($_POST['submit'] && $human != '4') {
/*echo '<p>Uw anti-spam antwoord is niet goed ingevuld.</p>';*/
}

2 个答案:

答案 0 :(得分:4)

这将列出项目(如果已经检查过),如下所示:

  

Project Soort:websiteontwerp,websiteontwikkeling,onlinemarketing

<?php
// insure form variables exist
$name         = isset($_POST['name'])         ? $_POST['name']         : '';
$email        = isset($_POST['email'])        ? $_POST['email']        : '';
$telefoon     = isset($_POST['telefoon'])     ? $_POST['telefoon']     : '';
$organisatie  = isset($_POST['organisatie'])  ? $_POST['organisatie']  : '';
$website      = isset($_POST['website'])      ? $_POST['website']      : '';
$beschrijving = isset($_POST['beschrijving']) ? $_POST['beschrijving'] : '';
$inspiratie   = isset($_POST['inspiratie'])   ? $_POST['inspiratie']   : '';
$human        = isset($_POST['human'])        ? $_POST['human']        : '';
$submit       = isset($_POST['submit'])       ? true                   : false;

$project = isset($_POST['project'])
         ? implode(', ', $_POST['project'])     // gather selected checkboxes
         : 'Er geen projecten geselecteerd';    // (Unsure of translation)

$from = 'From: the website'; 
$to = 'someone@somewhere.com'; 
$subject = 'onderwerp';

$body = 
"Van: $name\n 
E-Mail: $email\n 
Telefoon: $telefoon\n 
Organisatie: $organisatie\n 
Website: $website\n 
Project Soort: $project\n 
Omschrijving: $beschrijving\n
Inspiratie: $inspiratie";

if ($submit && $human == '4') {
    if (mail ($to, $subject, $body, $from)) {
        print ("Dank u wel");
        /*echo '<p>Uw bericht is verzonden!</p>';*/
    } else {
        echo '<p>Oeps. Er ging iets fout. Probeer nogmaals.</p>';
    }
} else if ($submit && $human != '4') {
        /*echo '<p>Uw anti-spam antwoord is niet goed ingevuld.</p>';*/
}
?>

如果在用户发送表单时选择了任何复选框,PHP会将它们作为数组接收。 implode()函数将它们全部拉到一个逗号分隔的字符串中。如果您愿意,可以随意将逗号(和/或其后的空格)更改为其他内容。

希望这有帮助。

答案 1 :(得分:1)

当您在字段名称中添加尾部括号(即:project [])时,PHP将创建一个具有给定名称的数组,减去括号。在您的情况下,最快的解决方案可能是使用foreach循环迭代所有选中的框,如下所示:

$body = 
"Van: $name\n 
E-Mail: $email\n 
Telefoon: $telefoon\n 
Organisatie: $organisatie\n 
Website: $website\n
Project Soort: ";

foreach ($project as $checkbox) {
    $body .= "$checkbox, ";
}

$body .= "\n 
Omschrijving: $beschrijving\n
Inspiratie: $inspiratie";