这个问题已经编辑,因为我在这里找到了解决方案: Remove empty fields in an array after foreach in PHP
感谢您的所有回复。如果没有你的答案我就找不到了!
............................................
我有一个简单的PHP联系表单。如果输入文本字段的“值”为空,是否可以不发送输入文本字段的“名称”?
例如我有:
<form action="{form-action}" method="post">
<label for="Name">{Name}</label>
<input type="text" name="Name" id="Name" maxlength="100"/>
<label for="Optional">{Optional}</label>
<input type="text" name="Optional" id="Optional" maxlength="100"/>
<input type="submit" value="submit" />
</form>
PHP:
if (array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send') {
$mail .= "<span>$key</span><span>$value</span>";
}
}
有人可以帮忙吗?
答案 0 :(得分:0)
只需做一个简单的检查:
if (is_array($_POST)) {
foreach ($_POST as $key => $value) {
if ($key != 'send' && ($key == 'Name' && trim($value) != '')) {
$mail_body .= "<span>$key</span><span>$value</span>";
}
}
}
答案 1 :(得分:0)
试试这个:
<?php
if (!isset ($_POST['send']))
{
#Form has not been sent yet
#Create contact form
// ....
}
elseif ($_POST['send'] == 1)
{
#Form has been sent
#Check user input
$noerrors = true;
$msg = '';
foreach($_POST AS $key => $value)
{
$$key = is_string($value) ? trim($value) : $value;
if ($key != 'send')
{
$mail_body .= "<span>$key</span><span>$value</span>";
}
}
if (empty($Name))
{
$noerrors = false;
$msg .= "Please input Name";
}
if ($noerrors == false)
{
#Errors have been found
echo $msg;
}
else
{
#No errors, send mail
#Get mailer from settings
//...
#Display message after mail is sent
echo "Thank you!";
}
}
?>
答案 2 :(得分:0)
不,不可能这样做。我能想到的最合理的解决方案是使用if(empty(trim($name)){ // do something }
但是从你的代码中,我猜你可以使用javascript来设置隐藏字段的值,如果这是你的一个选项,或者你可以改变你的逻辑