PHP遞迴產生樹的一個小例子
來源:互聯網
上載者:User
經常有人問產生樹的例子,其實很簡單,自己隨手寫個,就算扔塊磚頭吧. csdn論壇地址: http://topic.csdn.net/u/20081029/11/f2faab7f-f8fb-43a8-906a-a7bb83063515.html <?php header("content-type: text/html; charset=utf-8"); $connect = mysql_connect('localhost', 'root', '123456'); mysql_select_db("wz"); mysql_query("set names 'utf8'"); //獲得頂節點 $sql = "select id, name,ischild from tree where parent = 0 order by id asc"; $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { extract($row); //如果有子節點,就在前面加個事件,以便展開或者關閉子節點 $icon = $ischild ? "<a href='javascript:expand(/"div$id/");'>+</a>":"-"; $name = $icon . $name; echo "<div id='div" . $id . "'>" . $name; if($ischild) { //遞迴擷取節點 getNode($id, 0); } echo "</div>"; }
function getNode($id, $level) { $sql = "select id, name, ischild from tree where parent = $id order by id asc "; $result = mysql_query($sql); $level++; while($row = mysql_fetch_array($result)) { extract($row); $icon = $ischild ? "<a href='javascript:expand(/"div$id/");'>+</a>":"-"; $name = $icon . $name; echo "<div id='div" . $id . "'>" . echoChar(" ", $level) . $name; if($ischild) { getNode($id, $level); } echo "</div>"; } }
function echoChar($char, $num) { for($i=0;$i< $num; $i++) { $strChar .= $char; } return $strChar; } ?> <script language="javascript"> function expand(id) { var obj = document.getElementById(id).childNodes; for(var i=0;i<obj.length;i++) { if(obj[i].nodeName == "DIV") { switch(obj[i].style.display) { case "": case "block": obj[i].style.display = "none"; break; case "none": obj[i].style.display = "block"; break; } } } } </script>