我真的用这种方式绞尽脑汁。我会尽力解释它。它主要是一种数据录入形式。
首先,有三个变量开始。一个是一系列地区(纽约,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],但我不确定。
我不太擅长解释,所以如果有人不明白我在问什么,我会事先道歉。
答案 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;
}
}
}