我需要在CakePHP中创建一个表单,以允许用户将数据(数字)输入到下表中显示的单元格中。输入屏幕需要如下表所示。用户应该能够选择他们想要输入/更新值的任何单元格,然后键入值,单击提交并提交值。每个“度量标准部分(例如度量标准A,度量标准B ..)”都有一个提交按钮,因此用户可以编辑/更新表格中的每个部分。
___________________________ ____________________ |___ ___|___2006_______|__2007____|___2008___| |_METRIC A__|______________|__________|__________| | item A1 | 1 | 5 | 7 | | item A2 | 15 | 18 | 21 | | item A3 | 3 | 6 | 11 | | item A4 | 1 | 1 | 3 | |___________|______________|__________|__________| |_METRIC B__|______________|__________|__________| | item B1 | 12 | 18 | 31 | | item B2 | 1 | 4 | 6 | | item B3 | 0 | 0 | 2 | --------------------------------------------------
正如您所看到的,每个度量标准部分都是一个二维表。所以我想在2D数组中捕获输入数据。目前我已经成功创建了数据显示(这更容易)。我只是创建了一个度量数组,这是一个2D数组的数组。然后我将2D数组的数组传递给视图文件以显示表。
我对如何获取此表的用户输入感到很遗憾。有没有类似的经历?任何建议对我都有很大帮助。
答案 0 :(得分:1)
您可能希望开始使用编辑功能研究一些Javascript网格解决方案。我想到了Ext的Grid,但是肯定会有你选择的JavaScript框架的替代品(例如jQuery)。这将处理客户端的所有onclick
优点,让您实现表单可以提交数据的AJAX操作。在那里,您需要确定使用每个数据部分更新的模型。
答案 1 :(得分:-1)
如果这对其他人有用,我会在这里发布我的解决方案..
我设法通过使用'并行二维数组'来解决这个问题。
这是一个简单的伎俩。您可以创建用于显示数据的2D阵列。因此,表中的每一行都有一个数组。例如,如果列是“2006年”,“2007年”和“年”。 “2008年”就像我上面的问题一样。您将使用每年的值创建一行数据。
$data_for_row_array = array('10', '15', '35');
像这样,你为表中的每一行创建一个数据数组,你将得到一个行数组:
$rows_array = array(data_for_row_1_array, data_for_row_2_array, ..) etc
这将用于显示数组..现在,如果要捕获表中每个单元格的用户输入,您需要做的就是创建一个类似的第二个2D数组,其中每个数据单元的ID取自数据库..如果id尚不存在,请将其留空。当用户输入数据并提交数据时,只需遍历两个2D数组并使用一个数组中的ID和另一个数组中的数据进行匹配。因为在两个数组中匹配的ID和它的数据值将处于相同的位置。因此,如果您在“ids数组”中找到并且ID和“数据数组”中相同位置的数据值,您只需使用它来更新数据库表。这是“并行二维数组”的概念。
如果您在ID数组中找到并清空了id值,那么数据数组中相同位置的某些数据值意味着用户输入了一个全新的值,因此您将其保存为数据库中的新数据单元格。
希望这会给你一些想法..如果不清楚,请告诉我,我会更详细地解释。