我處於一個非常棘手的情況,我有一個允許輸入記錄的頁面,並且存在父/子結構(如果您稱之爲記錄/子記錄) 。多條記錄/子記錄可以動態添加當用戶需要增加更多的(行被克隆和下一行之後插入)。嵌套的輸入字段(父子結構)
結構:
<div class="row">
<strong>Parent record:</strong> <input type="text" name="parent-record[]" />
<div class="row">
<strong>Child record:</strong> <input type="text" name="child-record[]" />
</div>
<span class="add-subrecord">Add another sub-record</span>
</div>
<span class="add-record">Add another record</span>
在PHP端的問題,當我有2個for循環,1 for循環是這樣的:
for($i = 0; $i < count($_POST['parent-record']); $i++)
{
$sql = "INSERT INTO records (input) VALUES ('" . $_POST['parent-record'][$i] . "')";
$result = $db->sql_query($sql);
$parent_id = $db->sql_nextid(); // mysql_insert_id
for($j = 0; $j < count($_POST['child-record']); $j++)
{
$sql = "INSERT INTO records (input, parent) VALUES('" . $_POST['child-record'][$j] . "', '" . $parent_id . "')"; // this will also insert the $parent_id into this record because this record is a child of a parent.
$result = $db->sql_query($sql);
}
}
然而,當過程做了,每個孩子有第一主要記錄的父母,甚至當我加2-3 主要記錄(未子記錄),因此這樣的:
+------+---------+----------+
| id | input | parent |
+------+---------+----------+
| 1 | random | 0 | <- indicates it is a parent
| 2 | random1 | 1 | <- child record, parent is record id: 1
| 3 | random2 | 1 | <- child record, parent is record id: 1
| 4 | random3 | 1 | <- this should be a parent, but it's added as a child
| 5 | random4 | 1 | <- this one too
+------+---------+----------+
我需要某種解決方案當創建嵌套的輸入表單時,所有的孩子都有一個記錄塊的父ID,這將如何工作。
我不完全確定如何以某種方式實現排序功能... *我知道清潔輸入 - 它只是一個代碼演示* – MacMac 2011-05-11 15:23:47
@lolwut您可以爲每個組的名稱添加一個唯一編號。例如,第一個父項將被命名爲「parent-record-0」。 「parent-record-0」的孩子的名字是「child-record-0-0」,「child-record-0-1」等。 – Michael 2011-05-11 15:40:24
@lolwut實際上,子記錄可以是數組。因此,第一個父項將被命名爲「parent-record-0」,其子項記錄將被命名爲「child-record-0 []」。第二個父母將被命名爲「父記錄-1」,其子記錄將被命名爲「child-record-1 []」。等等 – Michael 2011-05-11 15:49:50