提交带有输入框的php表

提交带有输入框的php表,php,sql,post,multidimensional-array,submit,Php,Sql,Post,Multidimensional Array,Submit,我真的为这个绞尽脑汁。我会尽力解释的。它主要是一个数据输入表单 首先,首先有三个变量。一个是纽约、华盛顿等地区的数组,另一个是开始日期ex:2012年1月1日和结束日期ex:2012年1月15日 在以前的页面中,用户选择了区域数、开始录制的开始日期和结束日期。目的是输入“点数”,日期基本上是按周计算的 这就是表单的外观: 在除第一列和第一行之外的框中,它们都是输入框。因此,每个输入框都与表格两端的值相关联,例如,纽约市旁边和2012年1月1日下的框将输入2012年1月1日至2012年8月1日期间

我真的为这个绞尽脑汁。我会尽力解释的。它主要是一个数据输入表单

首先,首先有三个变量。一个是纽约、华盛顿等地区的数组,另一个是开始日期ex:2012年1月1日和结束日期ex:2012年1月15日

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

这就是表单的外观:

在除第一列和第一行之外的框中,它们都是输入框。因此,每个输入框都与表格两端的值相关联,例如,纽约市旁边和2012年1月1日下的框将输入2012年1月1日至2012年8月1日期间纽约市的数据

我的问题是:我如何着手建造这个?我应该使用大的2d阵列吗?“提交”按钮如何知道哪些输入框对应于哪个日期/地区?我最初的想法可能是一个隐藏值,类似于$array[0][x],$array[x][0],但我不确定


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

这是一个常见问题的变体

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

将所有可能的日期范围整理为单个数组、数组合并、数组唯一、数组排序以生成标题

foreach$区域作为$日期 { 如果在日期数组中,则显示$date['startdate']的按钮; 如果在日期数组中,则显示$date['enddate']的按钮; 重复 }

你将面临的最大问题是如何处理布局。在这里,冒着愤怒风险的明显解决方案是使用HTML表。这很简单,可以自动调整

$nextline="<TR>";
if(is in_array($datetotest,$listofdates))
    {
    $nextline.="<TD><CODE FOR BUTTON></TD>";
    }
    else
    {
    $nextline.="<TD><BR></TD>";
    }
你的另一个选择,可能是更圆滑的解决方案是把你所有的按钮都放在一个合适的跨距或其他标签中,并使用CSS整齐地排列它们。这为您提供了更多的布局选项,但对于任意大的数据集来说可能会有点头疼。

尝试以下方法:

// 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;
        }
    }
}

来吧,人们,不要只是投反对票,提供一些反馈!我没有很长时间使用PHP和HTML,所以如果我的问题看起来很明显,我很抱歉,但我必须问他们:在您的示例中,用户按下按钮然后输入数据?或者按钮应该是输入字段?另外,按照您的方式,如果有人在表中的字段中输入一个数字并点击submit,它将知道它将与哪个区域和日期关联?当然。这里或那里可能会有一些小的格式错误,但大部分情况下应该可以使用。当我在表单定义中使用method=POST时,$\u POST['submit']不起作用。如果submit\u form.php是一个单独的页面,那么我认为$\u POST应该是$\u GET。不管怎样,无论是POST的同一页还是GET的下一页,它都会给我一个错误。未定义的偏移量:C中的1:第34行中的任意值。此行包含代码回显日期:$输入[1];有些奇怪的事情正在发生,看起来是这样的:$input[1]似乎一直是空的,我会在你回复之前检查一下。我更新了method=POST part。POST可以提交到与原始页面不同的页面。所以请尝试更新的代码。对不起,我的链接现在可以使用了,有一个输入错误。这是更正后的样子:注意:我在字段中输入了5、6、7、8、9、10。我刚刚更新了代码。更改的$input=分解,$v;到$input=分解,$k;在submit_form.php中,您现在可以尝试吗?