我正在创建一个很长的表单,并不是所有的字段都会被回答,在它们按下发送按钮并收到电子邮件后,我如何隐藏未回答的字段?
因此,我想知道的是,在发送submit按钮后,我可以在脚本中添加什么来隐藏空白字段。
/* Data Variables */
$email = $_POST['email'];
$name = $_POST['name'];
$phone = $_POST['phone'];
$uplift = $_POST['uplift'];
$upliftc = $_POST['upliftc'];
$city = $_POST['city'];
$post = $_POST['post'];
$delivery = $_POST['delivery'];
$deliveryc = $_POST['deliveryc'];
$city2 = $_POST['city2'];
$post2 = $_POST['post2'];
$ground = $_POST['ground'];
$second = $_POST['second'];
$second2 = $_POST['second2'];
$ground2 = $_POST['ground2'];
$internal =$_POST['internal'];
$internal2 =$_POST['internal2'];
$external =$_POST['external'];
$external2 =$_POST['external2'];
$access =$_POST['access'];
$queen = $_POST['queen'] * 1.7;
$body = <<<EOD
<br><hr><br>
Name: $name <br>
Email: $email <br>
Phone; $phone <br>
<br>
Uplift; $uplift <br>
Continued; $upliftc <br>
City; $city <br>
Post Code; $post <br>
<br>
Delivery Address; $delivery <br>
Continued; $deliveryc <br>
City; $city2 <br>
Post; $post2 <br>
<br>
Uplift; <br>
Ground Floor; $ground <br>
Second Floor; $second <br>
Internal Stairs; $internal <br>
External Stairs; $external <br>
<br>
Delivery; <br>
Ground Floor; $ground2 <br>
Second Floor; $second2 <br>
Internal Stairs; $internal2 <br>
External Stairs; $external2 <br>
Truck Access; $access <br>
Queen Bed; $queen <br>发布于 2013-07-30 08:21:56
其他人提到了isset()函数,但这是行不通的。即使用户在提交表单时没有填写值,变量仍然是设置的,所以所有变量在运行TRUE时都将返回isset()。empty()是你最好的选择。
您可以使用一个循环来测试值和填充电子邮件正文,但是它需要稍微重新设计HTML表单,例如给出不同的名称,而不是:
<input type="text" name="email">使用:
<input type="text" name="field[Email]">这将将$_POST['field']创建为一个数组,其值包括您的值,如$_POST['field']['email']。从技术上讲,您可以在不重命名字段和遍历$_POST本身的情况下做到这一点,但这将假设您没有发布任何与字段无关的数据,而且永远也不会。这可不是个安全的假设。
将HTML表单字段重命名后,处理请求的PHP代码如下所示:
$email_body = "";
if( is_array( $_POST['field'] )) {
foreach( $_POST['field'] as $name => $value ) {
if( !empty( $value )) {
$email_body .= "$name: $value<br>\n";
}
}
}这比你写的代码要少得多。它还将省略空值,并将支持添加新字段,只需修改HTML表单,而不必修改处理它的PHP代码。
我确实注意到,您正在生成的电子邮件主体似乎将这些值分成了几个部分。通过向数组添加另一个索引,您可以使用与我前面所写的相同的思想来实现这一点,并且它将保持创建HTML表单字段的动态性质,如下所示:
<input type="text" name="field[Contact][Email]">然后对于PHP:
$email_body = "";
if( is_array( $_POST['field'] )) {
foreach( $_POST['field'] as $category => $fields ) {
$email_body .= "<br>\n";
if( is_array( $fields )) {
foreach( $fields as $name => $value ) {
if( !empty( $value )) {
$email_body .= "$name: $value<br>\n";
}
}
}
}
}发布于 2013-07-30 02:24:36
如果没有填好的话就不请求了?
if(!isset($_POST['access'])){
// Do whatever
} else {
// do something else
}发布于 2013-07-30 02:25:36
如果给定变量有值,则有一个isset($variable_name)函数返回true,否则返回false。
https://stackoverflow.com/questions/17937300
复制相似问题