使用输入框提交php表

时间:2013-07-22 23:29:25

标签: php sql post multidimensional-array submit

我真的用这种方式绞尽脑汁。我会尽力解释它。它主要是一种数据录入形式。

首先,有三个变量开始。一个是一系列地区(纽约,DC等),另一个是开始日期(例如:01/01/2012)和结束日期(例如:2012年1月15日)

在之前的页面中,用户选择了区域数量,选择了开始记录的开始日期和结束日期。目的是输入“积分”,日期基本上按周计算。

这就是表格应该是这样的:http://i.imgur.com/9XflP2Z.png

在第一列和第一行之外的方框中,它们都是输入框。因此,每个输入框都与表格每一端的值相关联(例如,NYC旁边的框和01/01/2012下的框将在2012年1月1日到01年之间的日期范围内输入NYC的数据08/2012)。

我的问题是:我该怎么做呢?我应该使用大型2D阵列吗?提交按钮如何知道哪个输入框对应于哪个日期/区域?我最初的想法可能是一个隐藏的值,就像$ array [0] [x],$ array [x] [0],但我不确定。

我不太擅长解释,所以如果有人不明白我在问什么,我会事先道歉。

2 个答案:

答案 0 :(得分:0)

这是一个常见问题的变体。

原则上,foreach声明可能是最好的选择。伪代码:

将所有可能的日期范围整理成一个数组(array_merge,array_unique,array_sort)以生成标题

foreach($ region as $ dates)        {        如果是日期的in_array,则显示$ date ['startdate']的按钮;        如果是日期的in_array,则显示$ date ['enddate']的按钮;        重复...        }

您将面临的最大问题是处理布局问题。显而易见的解决方案(冒着风险)是使用HTML表格。这很简单,可以自动调整。

$nextline="<TR>";
if(is in_array($datetotest,$listofdates))
    {
    $nextline.="<TD><CODE FOR BUTTON></TD>";
    }
    else
    {
    $nextline.="<TD><BR></TD>";
    }

您的替代(可能更光滑)解决方案是将所有按钮括在合适的范围或其他标签中,并使用CSS整齐地排列它们。这为您提供了更多的布局选项,但对于任意大的数据集来说可能会让您感到头疼。

答案 1 :(得分:0)

试试这个:

// hard coding these values for example
// but for OP's case these might be coming from a previous page 
$date_array = Array("01/01/2012", "01/08/2012", "01/15/2012");
$region_array = Array("NYC", "DC");

现在在图像中生成表格/表格,如下所示:

<form name="test_form" id="test_form" action="submit_form.php" method="POST">
    <table border="1">
        <tr>
             <td></td>
             <?php
                 foreach ($date_array as $date){
                     echo "<td>".$date."</td>";
                 }
             ?>
         </tr>
         <?php
         foreach ($region_array as $region){
            echo "<tr>";
            echo "<td>".$region."</td>";
            foreach ($date_array as $date){
                echo "<td><input type=\"text\" name=\"".$region."_".$date."\"></td>";
            }
            echo "</tr>";
        }
       ?>
    </table>
    <input type="submit" name="submit">
</form>

现在提交submit_form.php:

if (isset($_POST['submit'])){
    foreach ($_POST as $k=>$v){
        if ($k != "submit"){
            // split the form input on _
            $input = explode("_", $k);
            echo "<BR>City: " . $input[0];
            echo "<BR>Date: " . $input[1];
            echo "<BR>Value: " . $v;
        }
    }
}