【问题标题】:Submitting All Filled Fields using php使用 php 提交所有填写的字段
【发布时间】:2014-11-11 20:45:36
【问题描述】:

嗨,我想首先声明,我更像是一名设计师而不是一名开发人员。

我正在为一家包含 200 种不同食物类型的餐厅创建食物清单。

在 HTML 下方:

<form name="htmlform" method="post" action="send.php">
<table class="hoverTable" width="300">


<tr><td><strong>CANAPES</strong></td><td></td></tr>
<tr><td width="200" >email</td><td><input name="email"type="text"  style="width:200px;"  placeholder="Qty"/></td></tr>
<tr><td width="200" >Caviar:Black & red</td><td><input name="Caviar"type="text" style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Cheese & Ham</td><td><input name="Cheese_Ham" type="text" style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Fetta</td><td><input name="Fetta"type="text"  style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Goat & Cheese</td><td><input name="Goat_Cheese" type="text"  style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Halloumi</td><td><input name="Halloumi"type="text" style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Labneh & Cucumber</td><td><input name="Labneh_Cucumber" type="text"  style="width:50px;" placeholder="Qty"/></td></tr>
<tr><td width="200" >Pepper & Pate</td><td><input name="Pepper_Pate" type="text"  style="width:50px;" placeholder="Qty"/></td></tr>

</table>
<div class="submit"><input type="submit" ID="submit" value="SUBMIT" ></div>
<input type="reset" value="RESET" ID="reset" >

列表继续包含 200 个名称。

我试图用我从互联网上收集的东西创建以下 php 表单:

 <?php
 if(isset($_POST['email'])) {

 $email_to = "email@gmail.com";

 $email_subject = "food";


 foreach ($_POST as $Field=>$Value) { 
 if($Value != ''){
 $body .= "$Field: $Value\n";



 @mail($email_to, $email_subject, $email_message, $headers);  
 ?>


 Thank you for contacting us. We will be in touch with you very soon.

 <?php
 }
 die();
 ?>

但事情似乎不起作用..

非常感谢您的帮助

【问题讨论】:

标签: php html forms


【解决方案1】:

这应该可行。您没有关闭您的 foreach 循环或检查该值是否有数据。此外,您的邮件函数没有使用您在上面分配的 $body 变量,并且其中有一个额外的 headers 变量。

我还稍微清理了代码以缩进以提高可读性。

** 注意 ** 您可以添加 $headers 以将消息格式化为 HTML 或根据需要设置您的发件人地址,但如果它只是给您,我认为没有必要。

<?php
if(isset($_POST['email'])) {

    $email_to = "email@gmail.com";
    $email_subject = "food";

    foreach ($_POST as $Field=>$Value) { 
        if($Value != ''){
            $body .= "$Field: $Value\n";
        }
    }

    mail($email_to, $email_subject, $body);  

    echo "Thank you for contacting us. We will be in touch with you very soon.";
}
?>

【讨论】:

  • 感谢@OrganizedChaos 的回复:)您修复了我的错误,再次感谢您
【解决方案2】:

现在试试这个

<?php
 if(isset($_POST['email'])) {

 $email_to = "email@gmail.com";

 $email_subject = "food";


 foreach ($_POST as $Field=>$Value) { 
 if($Value != ''){
 $body .= "$Field: $Value\n";



 @mail($email_to, $email_subject, $email_message, $headers);  
 ?>


 Thank you for contacting us. We will be in touch with you very soon.

 <?php
 }
 }
 }

 ?>

大括号不匹配

【讨论】:

  • 感谢@user7282 的回复。但我填写的每个字段都有一个问题,我收到一封没有任何正文或字段名称的空电子邮件。如果我填写 5 个字段,我会收到 5 封空电子邮件,再次感谢您
【解决方案3】:
<?php

    if(isset($_POST['email'])) {

        $email_to = "email@gmail.com";

        $email_subject = "food";


        foreach ($_POST as $Field=>$Value) { 
           if($Value != ''){
               $body .= "$Field: $Value" . "<br>";
           }

        }

        @mail($email_to, $email_subject, $email_message, $headers);  
    }

 ?>
 Thank you for contacting us. We will be in touch with you very soon.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2015-05-30
    • 2017-02-15
    相关资源
    最近更新 更多