如何使用PHP处理动态数量的表单输入?

时间:2010-09-05 16:31:16

标签: php javascript

您好我有一个表单,用户可以选择开始日期和结束日期。例如,当天数为3时,将生成3行日期。每个日期,日期和时段(上午/下午)将存储在隐藏字段中。因此,3天将生成名为date_1,day_1,period_1,date_2,day_2,period_2,date_3,day_3,period_3的隐藏字段。

问题是如何处理这种动态数量的表单输入?我需要将值传递给控制器​​,然后建模以存储到数据库中。这是主要问题,因为表单输入是数字是动态的,我们需要将它传递给控制器​​函数。

有人能告诉我处理这个问题的正确方法吗?教程的链接将有所帮助,谢谢:)

这是用于生成日期列表的代码,如下图所示

function test(){
            var count = 0;
            var date1 = $('#alternatestartdate').val();
            var date2 = $('#alternateenddate').val();
            var startDate = new Date(date1);
            var endDate = new Date(date2);
            var Weekday = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
            while (startDate<=endDate)
            {
            var weekDay = startDate.getDay();
            if (weekDay < 6 && weekDay > 0) {
            var month = startDate.getMonth()+1;
            if( month <= 9 ) { month = "0"+month; }
            var day = startDate.getDate();
            var datearr = new Array();
            if( day <= 9 ) { day = "0"+day; }
            count++;
            var datelist = day+"-"+month+"-"+startDate.getFullYear();
            $('#pa').append(day+"-"+month+"-"+startDate.getFullYear() + " ("+Weekday[weekDay]+") <input type='hidden' id='' name='date_"+count+"' value='"+datelist+"' /><input type='hidden' id='' name='day_"+count+"' value='"+Weekday[weekDay]+"' /><input type='radio' name='period_"+count+"' value='1' checked/>Full<input type='radio' name='period_"+count+"' value='2'/>Half (AM)<input type='radio' name='period_"+count+"' value='3'/>Half (PM)<br />");

            }
            startDate.setDate(startDate.getDate()+1)
            }
            $('#pa').append("<input type='hidden' id='' name='countval' value='"+count+"' />");
        }

alt text

如果正确插入,数据库中的数据将如下所示:

alt text

1 个答案:

答案 0 :(得分:5)

如果在所有相关标签的name属性末尾放置空括号,如下所示:

<input type='hidden' name='blah[]' value='foo' />
<input type='hidden' name='blah[]' value='bar' />

然后它们将作为数组通过$_POST数组发送。

所以你这样访问它们:

<?php

echo($_POST['blah'][0]); // foo
echo($_POST['blah'][1]); // bar

?>