【问题标题】:handling checkbox values in email form with php用php处理电子邮件表单中的复选框值
【发布时间】:2023-04-02 22:16:01
【问题描述】:

我翻了一堆问题帖,找到了一个和我有同样问题的人,但他/她得到的答案我根本找不到帮助。

我创建了一个使用复选框的表单。提交后,我的整个表单都得到了很好的处理,并且我确实收到了邮件,但是当涉及到复选框时,它只在电子邮件中显示“数组”而不是选中的复选框值....

我做错了什么?

HTML 表单代码:根据要求,完整的表单

                                        <form name="busquoteform" method="post" action="FormToEmail.php">
            <fieldset>
                <legend>Contact Information</legend>
                    <table width="100%">
                        <tr>
                            <td width="40%">
                                <label><strong>Name *:</strong></label><br/>
                                <input name="name" type="text" id="name" value=""  />
                            </td>
                            <td width="10%">&nbsp;</td>
                            <td width="40%">
                                <label><strong>Lastname *:</strong></label><br />
                                <input name="lname" type="text" id="lname" value=""  />
                            </td>
                        </tr>
                     </table>
                     <table width="100%">
                        <tr>
                            <td width="25%">
                                <label><strong>Contact Number:</strong></label><br/>
                                <input name="contactno" type="text" id="contactno" value=""  />
                            </td>
                            <td width="25%">
                                <label><strong>Mobile Number * </strong></label><br/>
                                <input name="mobno" type="text" id="mobno" value=""  />
                            </td>
                            <td width="40%">
                                <label><strong>Email *:</strong></label><br/>
                                <input name="email" type="text" id="email" value=""  />
                            </td>
                        </tr>
                    </table>
                </fieldset>
                    <br/>
                <fieldset>
                <legend>Company Information</legend>
                    <table width="100%">
                        <tr>
                            <td width="40%">
                                <label><strong>Company Name *:</strong></label><br/>
                                <input name="compname" type="text" id="compname" value=""  />
                            </td>
                            <td width="10%">
                                <label><strong>Position Held *:</strong></label><br />
                                <input name="position" type="text" id="position" value=""  />
                            </td>
                            <td width="40%">
                            </td>
                        </tr>
                     </table>
                     <table width="100%">
                        <tr>
                            <td width="16%">
                                <label><strong>Company Address*:</strong></label><br/><br/><br/><br/>
                            </td>
                            <td width="2%">
                            </td>
                            <td>
                                <input name="street" type="text" id="street" value="Street" size="30"  /><br/>
                                <input name="suburb" type="text" id="suburb" value="Suburb" size="30" /><br/>
                                <input name="city" type="text" id="city" value="City" size="30" /><br/>
                                <input name="code" type="text" id="code" value="Postal Code" size="10"  /><br/>
                            </td>
                        </tr>
                      </table>
            </fieldset>
                <br/>
            <fieldset>
                <legend>Project Information</legend>
                    <table>
                        <tr>
                            <td>
                                <label><strong>Service Type/s*:</strong></label><br/>
                                Please select all applicable types.
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Graphic Design&nbsp;<input name="serviceType[]" id="design" type="checkbox" value="Graphic Design" />&nbsp;&nbsp;&nbsp;&nbsp;
                                Web Development&nbsp;<input name="serviceType[]" id="webdev" type="checkbox" value="Web Development" />&nbsp;&nbsp;&nbsp;&nbsp;
                                Application Development&nbsp;<input name="serviceType[]" id="appdev" type="checkbox" value="App Development" />&nbsp;&nbsp;&nbsp;&nbsp;
                                Embroidery&nbsp;<input name="serviceType[]" id="embroidery" type="checkbox" value="Embroidery" />&nbsp;&nbsp;&nbsp;&nbsp;
                                Engraving&nbsp;<input name="serviceType[]" id="engrave" type="checkbox" value="Engraving" /><br/><br/>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <label><strong>Please supply a detailed description of your requirements*:</strong></label><br/>
                                <textarea name="projectDes" cols="60" rows="10" id="projectDes"></textarea>
                                <br/><br/>
                              <input name="quoteBus" type="submit" class="ZD-button" value="Send Request"/>
                            </td>
                        </tr>
                    </table>
            </fieldset>
         </form>

及php处理代码:

                    $mailBody = "Name : ".$_REQUEST['name']. "&nbsp; ".$_REQUEST['lname'].
                                " <br/>Email : ".$_REQUEST['email'].
                                " <br/>Contact No : ".$_REQUEST['contactno']. "&nbsp;&nbsp;Mobile No: ".$_REQUEST['mobno']. 
                                "<br/><br/>Company Name : ".$_REQUEST['compname']. 
                                " <br/>Postion Held : ".$_REQUEST['position']. 
                                "<br/><br/>Company Address : <br/>".$_REQUEST['street']."<br/>".$_REQUEST['suburb']."<br/>".$_REQUEST['city']."<br/>".$_REQUEST['code'].
                                "<br/><br/> Service Type/s :" .(is_array($_REQUEST['serviceType'])?implode("\n", $_REQUEST['serviceType']):$_REQUEST['serviceType'])."<br />".
                                "<br/><br/>Details of Project : ".$_REQUEST['projectDes'];

我也试过: "

服务类型:" .$serviceType = $_POST["serviceType"];$serviceType = implode(', ', $serviceType);"
"。

而且似乎也不起作用......

我从我丈夫不久前做的一个项目中得到了这段代码 - 但他不是 php 开发人员,他喜欢 Java...

请帮忙?

【问题讨论】:

  • $_REQUEST['serviceType'] 中有什么内容?
  • 从表单上的复选框中选择的服务类型...

标签: php html forms checkbox


【解决方案1】:

更新

我刚刚尝试了您的代码,它运行良好,并且得到了您想要的结果。那么请您出示您的&lt;form&gt; 标签。

我测试的代码

<?php

echo (is_array($_REQUEST['serviceType']) ? implode("\n", $_REQUEST['serviceType']) : $_REQUEST['serviceType']);

?>


<form action="" method="post">

    Graphic Design&nbsp;<input name="serviceType[]" id="design" type="checkbox" value="Graphic Design" />&nbsp;&nbsp;&nbsp;&nbsp;
    Web Development&nbsp;<input name="serviceType[]" id="webdev" type="checkbox" value="Web Development" />&nbsp;&nbsp;&nbsp;&nbsp;
    Application Development&nbsp;<input name="serviceType[]" id="appdev" type="checkbox" value="App Development" />&nbsp;&nbsp;&nbsp;&nbsp;
    Embroidery&nbsp;<input name="serviceType[]" id="embroidery" type="checkbox" value="Embroidery" />&nbsp;&nbsp;&nbsp;&nbsp;
    Engraving&nbsp;<input name="serviceType[]" id="engrave" type="checkbox" value="Engraving" /><br/><br/>

    <input type="submit" />
</form>

【讨论】:

  • 我已经尝试过你的建议@atif089,也许我把它放在了错误的代码部分中。你建议我把这个放在哪里?我试过用这个替换整个 serviceType 行...
  • 更新了,我测试了你的代码,它似乎对我有用,尝试复制和粘贴我的代码,有时我们经常错过一些我们无法识别的东西(我经常这样做)
  • Tnx @atif089 - 会尝试的。我也根据您的要求修改了我的问题 - 它现在包括来自
    标记的完整表单...
【解决方案2】:

嗯,这很奇怪.. 它应该显示由\n 分隔的所有 serviceType 值,由于这一行:

(is_array($_REQUEST['serviceType'])?implode("\n", $_REQUEST['serviceType']):$_REQUEST['serviceType'])

如果将$_REQUEST 更改为$_POST 会怎样?

【讨论】:

  • 我试过 $_POST,但它没有显示任何数据 - 甚至没有“数组”。
  • 在这种情况下,&lt;form&gt; 标签的method 属性设置为“GET”(或者它不存在)。我不确定这是否是问题所在,但您可能想尝试将其设置为“POST”。
  • 比它应该$_POST['serviceType']...你试过var_dump( $_POST )看看发布了什么数据吗?
  • 不...没有尝试过,但我现在会...只需要去做一些阅读,因为我以前从未使用过 var_dump...谢谢,会让你知道...
  • 如果您将输出粘贴到您的帖子中,我们可以告诉您更多信息。
【解决方案3】:

您可以这样使用 foreach

$serviceTypes = "";

if (is_array($_REQUEST['serviceType']))
{
    foreach ($_REQUEST['serviceType'] as $serviceType)
    {
        $serviceTypes.= "$serviceType\n";
    }
}

这是可能的。

【讨论】:

  • 我不知道它怎么行不通。如果表单发送数据正常,它可能确实是一个解决方案!
  • @Rijk van Wel 如果您的回答对您没有帮助,您也可以点赞吗?
猜你喜欢
  • 2015-11-09
  • 2012-01-19
  • 2011-08-01
  • 2013-08-04
  • 2011-11-06
  • 2019-05-12
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多