[英]Two level adjacency list using mysql and php
我创建了一个新任务,并为该任务分配了父代ID为100,一旦创建新任务ID为101。
现在我再次创建一个新任务,并将100或101分配给正在创建的新ID(102)
现在,当我创建ID为104的新任务时,它应该给我一个选择以选择100,101作为父任务ID,而不是102,因为102连接到101且101连接到100父ID
我该如何进行两级访问? 我的表结构是taskid,parenttask id,其中task id是autoincrement,主键
因此,当从数据库获取值时,如何过滤。 下面是我的代码。
<select name="mastertaskid" size="1" id="mastertaskid" STYLE="width: 350px" >
<option>Select One</option>
<?php
$q = "SELECT * FROM Tasks order by Task_id asc";
$r = mysql_query ($db, $q
if (mysql_num_rows($r) > 0) {
while ($row = mysql_fetch_array ($r, MYSQLI_NUM)) {
echo "<option value=\"$row[0]\"";
// Check for stickyness:
if (isset($return_val['ParentTask_Id'])
&& ($return_val['ParentTask_Id'] == $row[0]) )
echo ' selected="selected"';
echo ">$row[1](<b>$row[0]</b>)</option>\n";
}
}
?>
</select>
这应该可以解决问题:
SELECT * FROM `Tasks`
WHERE `ParentTask_id` = 0 OR `ParentTask_id` IN
(SELECT `Task_id` FROM `Tasks` WHERE `ParentTask_id` = 0)
... WHERE parent_task_id = 0
(或该列的默认值是什么)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.