Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中发送包含大量值的表单_Php_Forms - Fatal编程技术网

在PHP中发送包含大量值的表单

在PHP中发送包含大量值的表单,php,forms,Php,Forms,我正在开发一种形式,人们可以通过托盘系统订购餐饮服务(按试吃尺寸、中尺寸和大尺寸订购食品),我很难弄清楚如何做到这一点。我的第一个想法是这样编码: <form id="tray" name="tray" method="post" action="send_mail_tray.php" onsubmit='return packageValidator()'> <table> <tr> <td>Pork Fried Rice

我正在开发一种形式,人们可以通过托盘系统订购餐饮服务(按试吃尺寸、中尺寸和大尺寸订购食品),我很难弄清楚如何做到这一点。我的第一个想法是这样编码:

<form id="tray" name="tray" method="post" action="send_mail_tray.php" onsubmit='return packageValidator()'>
<table>
    <tr>
        <td>Pork Fried Rice</td>
        <td>
            Med.:<br />
            Lg. :
        </td>
        <td>
            <input type="text" name="PorkFriedRiceMed" style="width: 20px; height: 15px" /><br />
            <input type="text" name="PorkFriedRiceLg" style="width: 20px; height: 15px" />
        </td>
        <td>Vegetable Spring Rolls</td>
        <td>
            Med.:<br />
            Lg. :
        </td>
        <td>
            <input type="text" name="VegetableSpringRollsMed" style="width: 20px; height: 15px" /><br />
            <input type="text" name="VegetableSpringRollsLg" style="width: 20px; height: 15px" />
        </td>
        <td>Beef w/ Broccoli</td>
        <td>
            Med.:<br />
            Lg. :
        </td>
        <td>
            <input type="text" name="Beefw/BroccoliMed" style="width: 20px; height: 15px" /><br />
            <input type="text" name="Beefw/BroccoliLg" style="width: 20px; height: 15px" />
        </td>
    </tr>
    <tr>
        <td>
            <input type="Submit" value="Submit" />
        </td>
    </tr>
</table>
</form>

猪肉炒饭
医学:
Lg.:
蔬菜春卷 医学:
Lg.:
牛肉配西兰花 医学:
Lg.:

使用此方法,我必须能够发布变量名和值。起初,我认为这是最好的方法,然而,经过思考后,提供的食物清单超过150份,这意味着我必须创建300多美元的帖子才能获得整个菜单,并且我将发送的电子邮件必须包含清单上的所有项目,即使没有订购。是否有更简单的方法来制作我正在制作的表单,或者我的第一个方法是最好的方法?

这些值是否来自数据库?如果没有,那么他们应该。。。或者至少可以从某种数据结构动态生成表单,例如

$menu = array(
   0 => array('name' => 'Vegetable Spring Rolls', 'sizes' => array('L', 'M', 'S')),
   1 => array('name' => 'foo', 'sizes' => array(...)),
   etc...
);
然后使用

foreach($menu as $key => $item) {

    echo <<<EOL
<input type="text" name="item_{$key}" value="{$item['name']}" />

EOL;
}

简言之,如果您正确构建表单,不管有多少字段,您仍然可以用很少的代码开销自动处理它们。

这些值来自数据库吗?如果没有,那么他们应该。。。或者至少可以从某种数据结构动态生成表单,例如

$menu = array(
   0 => array('name' => 'Vegetable Spring Rolls', 'sizes' => array('L', 'M', 'S')),
   1 => array('name' => 'foo', 'sizes' => array(...)),
   etc...
);
然后使用

foreach($menu as $key => $item) {

    echo <<<EOL
<input type="text" name="item_{$key}" value="{$item['name']}" />

EOL;
}

简言之,如果您正确地构建表单,不管有多少字段,您仍然可以以很少的代码开销自动处理它们。

有这么多的名称可能会让人痛苦

使用PHP5可以影响这样的名称

<input type="text" name="food[PorkFriedRice][med]"> ...
<input type="text" name="food[PorkFriedRice][lg]">
提示: 为了节省一些HTML大小,您最好在输入中添加一个CSS类来设置样式:


#托盘输入{宽度:20px;高度:15px}

有这么多名称可能会让人痛苦

使用PHP5可以影响这样的名称

<input type="text" name="food[PorkFriedRice][med]"> ...
<input type="text" name="food[PorkFriedRice][lg]">
提示: 为了节省一些HTML大小,您最好在输入中添加一个CSS类来设置样式:


#托盘输入{宽度:20px;高度:15px}

请注意,在post中发送所有这些数据,也可能导致查询字符串过长错误

另一个最好的解决方案也可以通过ajax来实现,因为如果列表很长,您可以在保存循环中向用户反馈一个进度条

这个列表可以很容易地分成几个部分,用Json编码并在登录页中获取Json数据。您可以通过示例在
$中执行。每个
jQuery中都包含一个max item变量

使用jQuery
$.getJson
或普通的
$.Ajax


如果您认为此解决方案有帮助,我们可以添加更多有关的信息,但web是完全文档化的

请注意,在帖子中发送所有这些数据,也可能导致查询字符串过长
错误

另一个最好的解决方案也可以通过ajax来实现,因为如果列表很长,您可以在保存循环中向用户反馈一个进度条

这个列表可以很容易地分成几个部分,用Json编码并在登录页中获取Json数据。您可以通过示例在
$中执行。每个
jQuery中都包含一个max item变量

使用jQuery
$.getJson
或普通的
$.Ajax


如果您认为此解决方案有帮助,我们可以添加有关的更多信息,但web是完全文档化的

请勿在输入的
名称
属性中使用空格,它将成为PHP$_PostItems的名称。您将
名称
混淆,这太棒了,因为它引用了中国食物。不要在输入的
名称
属性中使用空格,你把
名称
搞混了,这太棒了,因为提到了中国食物。几年前,我必须获得一份工作的打字速度认证。每分钟101英里。想想看,我以每分钟8分钟的成绩完成了高中学业。几年前,我必须获得一份工作的打字速度证书。每分钟101英里。想想看,我以每分钟8英里的成绩完成了高中学业。