2012-07-30 48 views
0

我有一个复选框的问题,让它工作。 如果没有选择任何复选框,它会给出一个错误消息,这工作正常! 也提交所有其他信息。不能让数组在表单中工作php

我只是想现在的表单提交已经检查到确认邮件的复选框。我现在只能得到:array。

的contact.php

<?php 
/* Set e-mail recipient */ 
$myemail = "[email protected]"; 

/* Check all form inputs using check_input function */ 
$yourname = check_input($_POST['yourname'], "Vul uw naam in aub"); 

$email = check_input($_POST['email']); 
$telephone = check_input($_POST['telephone']); 
$comments = check_input($_POST['comments'], "Write your comments"); 

$formCampagne = check_input($_POST['formCampagne']); 
foreach($formCampagne as $option) { 
    print $option."\n"; 
} 

/* If e-mail is not valid show error message */ 
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) 
{ 
show_error("Dit e-mail adres is niet juist, voer een juist e-mailadres in."); 
} 
/* If telephone is not valid show error message */ 
if (!preg_match("/[0-9\(\)+.\- ]/s", $telephone)) 
{ 
show_error("Voer een juist telefoon nummer in"); 
} 
/* If verification code is not valid show error message */ 

if (strtolower($_POST['code']) != 'mycode') {die('Voer aub de juiste code in, in  hoofdletters.');} 

/* If no campaign mode is selected, show error message */ 
if(empty($formCampagne)) 
{ 
    show_error ("U heeft geen selectie gemaakt uit de campagne opties, selecteer minimaal een van de opties."); 
} 

/* Let's prepare the message for the e-mail */ 
$message = "Hi Rick, 

Je hebt weer een offerte aanvraag ontvangen voor Limburg Media! :) 

Name: $yourname 
E-mail: $email 
Telefoon: $telephone 

Offerte aanvraag? $formCampagne 

Comments: $comments 

End of message 
"; 

/* Send the message using mail() function */ 
mail($myemail, $subject, $message); 

/* Redirect visitor to the thank you page */ 
header('Location: thanks.htm'); 
exit(); 

/* Functions we used */ 
function check_input($data, $problem='') 
{ 
$data = trim($data); 
$data = stripslashes($data); 
$data = htmlspecialchars($data); 
if ($problem && strlen($data) == 0) 
{ 
    show_error($problem); 
} 
return $data; 
} 

function show_error($myError) 
{ 
?> 
<html> 
<body> 

<b>Gelieve de onderstaande foutmelding door te nemen om uw gegevens correct aan te leveren:</b><br /> 
<?php echo $myError; ?> 

</body> 
</html> 
<?php exit();} 
?> } 

的Contact.htm其中访问者在他/她填写表单:

<html> 
<body> 

<p>Benodigde velden zijn <b>vetgedrukt</b>.</p> 

<form action="contact.php" method="post"> 
<p><b>Uw naam:</b> <input type="text" name="yourname" /><br /> 
<b>E-mail:</b> <input type="text" name="email" /></p> 
<b>Telefoonnummer:</b> <input type="text" name="telephone" /></p> 

<p>Welk soort campagne wilt u informatie over ?<br /> 
<input type="checkbox" name="formCampagne[]" value="sandwichborden driehoeksborden" />sandwichborden/driehoeksborden<br /> 
<input type="checkbox" name="formCampagne[]" value="drukwerk banners" />drukwerk/banners<br /> 
<input type="checkbox" name="formCampagne[]" value="evenementen outdoor" />outdoor promotie/evenemente<br /> 
<input type="checkbox" name="formCampagne[]" value="internet website social media" />internet/websites/social media <br /> 
<input type="checkbox" name="formCampagne[]" value="artwork video" />artwork/videopromotie <br /> 
<input type="checkbox" name="formCampagne[]" value="promo gadgets sampling" />promoteams/gadgets/sampling <br /> 
<input type="checkbox" name="formCampagne[]" value="mobiele reclame reclame frames" /> mobiele reclame/reclame frames <br /> </p> 


<p><b>Your comments:</b><br /> 
<textarea name="comments" rows="10" cols="40"></textarea></p> 
<p>Validatie code: <input type="text" name="code" /><br /> 
Vul de tekst <b>MYCODE</b> hierboven in. </p> 
<p><input type="submit" value="Send it!"></p> 


</form> 

</body> 
</html> 

的thanks.htm页面只包含标准的文本,说,好。 .. 谢谢。 :)

任何人都可以帮我在这里吗?

编辑:

所以这将是正确的代码:

if(isset($formCampagne)) { 
echo ".implode(',', $formCampagne)."; // this is the output in the confirmation mail 
} else { 
echo "U heeft geen selectie gemaakt uit de campagne opties, selecteer minimaal een van de opties."; 

但是,在我把它?在“Offerte aanvraag?”旁边,因为我已经在$ message字段中,所以会出现错误。 对不起,我还没有使用isset函数。

回答

0

尝试更换

$message = "Hi Rick, 

Je hebt weer een offerte aanvraag ontvangen voor Limburg Media! :) 

Name: $yourname 
E-mail: $email 
Telefoon: $telephone 

Offerte aanvraag? $formCampagne 

Comments: $comments 

End of message 
"; 

$message = "Hi Rick, 

Je hebt weer een offerte aanvraag ontvangen voor Limburg Media! :) 

Name: $yourname 
E-mail: $email 
Telefoon: $telephone 

Offerte aanvraag? ".implode(',', $formCampagne)." 

Comments: $comments 

End of message 
"; 

请注意,我已经改变了普通$formCampagneimplode(',', $formCampagne),“事业,它实际上是一个数组,你必须做出它是一个字符串,如果你想把它放在你的电子邮件中。

还要注意,如果没有复选框被选中,$formCampagneNULL,所以你也应该检查是否isset($formCampagne)

编辑:

在我的例子

$formCampagne实际上应该是$_POST['formCampagne'],我必须承认我从来没有使用过check_input()函数,也不知道它在阵列上的表现如何。

你也可以尝试var_dump()两个$formCampagne$_POST['formCampagne']

+0

如果我尝试此操作,则邮件不包含任何内容。即使选择了项目,它也会返回空白。 – Mukie 2012-07-30 13:08:22

+0

刚编辑我的答案更清晰 – 2012-07-30 14:16:24

0

如果返回false,您可以检查isset($ formCampagne),这意味着没有选中该复选框,否则它会为您提供数组值。相反$ formCampagne的

+0

我已经试过这个内容,请参阅编辑部分。但我不知道该把它放在哪里。之前从未使用过此功能。 – Mukie 2012-07-30 13:08:58

0
$message = "Hi Rick, 

Je hebt weer een offerte aanvraag ontvangen voor Limburg Media! :) 

Name: $yourname 
E-mail: $email 
Telefoon: $telephone 

Offerte aanvraag? $formCampagne 

Comments: $comments 

End of message 
"; 

,你应该尝试这样的事:

$message = "Hi Rick, 

Je hebt weer een offerte aanvraag ontvangen voor Limburg Media! :) 

Name: $yourname 
E-mail: $email 
Telefoon: $telephone 

Offerte aanvraag? ".implode(', ', $formCampagne)." 

Comments: $comments 

End of message 
"; 

这应该给所有用逗号分隔的选择复选框值的列表。

+0

如果我尝试这个,邮件什么也没有。即使选择了项目,它也会返回空白。 – Mukie 2012-07-30 13:09:14