完善 無限極分類 的 無重新整理編輯
阿新 • • 發佈:2018-12-17
參考網址
http://www.56gee.com/demoshow/8aeb74e423/?tdsourcetag=s_pcqq_aiomsg
最終效果
我是 如何和 資料庫 建立連線的
html 頁面中
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" content="56gee 39℃" /> <meta name="ComeFrom" content="www.56gee.com" /> <script src="/tpl/default/static/js/jquery-2.2.3.min.js"></script> <script src="/tpl/default/static/js/bootstrap.js"></script> <title>Jquery實現無限極樹狀結構並動態新增增刪改等編輯功能——56gee</title> <style type="text/css"> div, ul, li { margin: 0px; padding: 0px; list-style-type: none; } body { background-color: #FFFFFF; font-size: 12px; margin: 0px; padding: 0px; } #TreeList { background-color: #FFFFFF; margin-top: 6px; margin-right: auto; margin-bottom: 6px; margin-left: auto; border: 1px solid #5d7b96; padding-bottom: 6px; padding-left: 6px; width: 680px; } #TreeList .mouseOver { background-color: #FAF3E2; } #TreeList .ParentNode { line-height: 21px; height: 21px; margin-top: 2px; clear: both; } #TreeList .ChildNode { background-image: url(../demoImgs/Sys_ModuleIcos.png); /*background-image: url('/tpl/default/static/images/duigou.jpg');*/ background-position: 15px -58px; padding-left: 39px; line-height: 21px; background-repeat: no-repeat; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #aabdce; border-right-color: #aabdce; border-bottom-color: #aabdce; border-left-color: #aabdce; cursor: default; clear: both; height: 21px; color: #314f6a; } #TreeList .title { float: left; } #TreeList .input { font-size: 12px; line-height: 18px; color: #FFF; height: 16px; background-color: #3F6B8F; width: 120px; text-align: center; margin-top: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #1F3547; border-right-color: #FFF; border-bottom-color: #FFF; border-left-color: #1F3547; float: left; } #TreeList .editBT { float: left; overflow: visible; } #TreeList .editBT .ok { /*background-image: url('/tpl/default/static/images/duigou.jpg');*/ background-image: url(/tpl/default/static/images/duigou.png); /*background-image: url(../demoImgs/Sys_ModuleIcos.png);*/ background-repeat: no-repeat; background-position: 0px -89px; height: 13px; width: 12px; float: left; margin-left: 3px; padding: 0px; margin-top: 3px; cursor: pointer; } #TreeList .editBT .cannel { background-image: url(../demoImgs/Sys_ModuleIcos.png); background-repeat: no-repeat; background-position: 0px -120px; float: left; height: 13px; width: 12px; margin-left: 3px; padding: 0px; margin-top: 3px; cursor: pointer; } #TreeList .editArea { float: right; color: #C3C3C3; cursor: pointer; margin-right: 6px; } #TreeList .editArea span { margin: 2px; } #TreeList .editArea .mouseOver { color: #BD4B00; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #C9925A; border-right-color: #E6CFBB; border-bottom-color: #E6CFBB; border-left-color: #C9925A; background-color: #FFFFFF; margin: 0px; padding: 1px; } #TreeList .ParentNode .title { color: #314f6a; cursor: pointer; background-image: url(../demoImgs/Sys_ModuleIcos.png); background-repeat: no-repeat; padding-left: 39px; } #TreeList .ParentNode.show .title { font-weight: bold; background-position: 3px -27px; } #TreeList .ParentNode.hidden .title { background-position: 3px 4px; } #TreeList .ParentNode .editArea { color: #999; } #TreeList .ParentNode.show { background-color: #d1dfeb; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #5d7b96; border-right-color: #5d7b96; border-bottom-color: #5d7b96; border-left-color: #5d7b96; } #TreeList .ParentNode.hidden { border-top-width: 0px; border-right-width: 0px; border-bottom-width: 1px; border-left-width: 0px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-color: #aabdce; border-right-color: #aabdce; border-bottom-color: #aabdce; border-left-color: #aabdce; } #TreeList .Row { clear: both; margin-left: 24px; background-image: url(../demoImgs/Sys_ModuleIcos2.png); background-repeat: repeat-y; background-position: 7px 0px; } </style> <script type="text/javascript" src="/js/jquery-1.5.min.js"></script> <script type="text/javascript"> $(document).ready(function(e) { var TreeName = 'TreeList';//樹狀ID var PrentNodeClass = 'ParentNode';//父節點的標識 var ChildNodeClass = 'ChildNode';//沒有下級子節點的標識 var ChildrenListClass = 'Row';//子節點被包著的外層樣式 var NewNodeName = '新建目錄';//預設新建節點的名稱 var Orititle = 'Temptitle';//儲存原來名稱的屬性名稱 var TModuleNode,TChildNode,TModuleNodeName; TModuleNode = $('#TreeList .'+PrentNodeClass);//頂層節點 TChildNode = $('.'+ChildNodeClass); TModuleNodeName = $('#TreeList .' + PrentNodeClass + ' .title');//頂層節點名稱 TModuleNode.removeClass('show').addClass('hidden'); if(TModuleNode.next().hasClass(ChildrenListClass)){ TModuleNode.next().css('display','none');//緊跟的下一個是子節點 } //========================編輯區域的HTML原始碼============================== function EditHTML(NewName){ var str = '<div class="title">' + NewName + '</div>'; str += '<div class="editBT"></div>'; str += '<div class="editArea"><span>[編輯]</span><span>[新增同級目錄]</span><span>[新增下級目錄]</span><span>[刪除]</span></div>'; return str; } //==========================樹狀展開收縮的效果============================ TModuleNodeName.click(function(){ TModuleNodeName_Click($(this)); }); //-------------------------------(定義)---------------------------------- function TModuleNodeName_Click(Obj){ if(Obj.has('input').length==0){ //非編輯模式下進行 var tempNode = Obj.parent(); if(tempNode.hasClass('hidden')){ tempNode.removeClass('hidden').addClass('show'); if(tempNode.next().hasClass(ChildrenListClass)){ tempNode.next().css('display',''); } } else{ tempNode.removeClass('show').addClass('hidden'); if(tempNode.next().hasClass(ChildrenListClass)){ tempNode.next().css('display','none'); } } } } //==========================滑鼠經過、離開節點的效果============================ with(TModuleNode){ mouseover(function(){ TNode_MouseOver($(this)); }); mouseout(function(){ TNode_MouseOut($(this)); }); } with(TChildNode){ mouseover(function(){ TNode_MouseOver($(this)); }); mouseout(function(){ TNode_MouseOut($(this)); }); } //-------------------------------(定義)---------------------------------- function TNode_MouseOver(Obj){ if(!(Obj.hasClass('show'))){ Obj.addClass('mouseOver'); } } function TNode_MouseOut(Obj){ Obj.removeClass('mouseOver'); } //==========================編輯區操作============================ $('.editArea').each(function(){ //1.編輯,刪除什麼第一步都先走這個。。$(this) 是指當前的物件,也就是 EditArea_Event($(this)); }); //-------------------------------(定義)---------------------------------- function EditArea_Event(Obj){ //Obj這個是當前編輯的物件 <input type="text" class="input" value="測試模組"> var objParent = Obj.parent(); //是父節點 var objTitle = objParent.find('.title');//節點名稱 //-----------------編輯區的滑鼠效果------------------ Obj.children().each(function(){ with($(this)){ mouseover(function(){ $(this).addClass('mouseOver'); }); mouseout(function(){ $(this).removeClass('mouseOver'); }); } }); //--------------------第一步,判斷是哪個操作----------------------------- Obj.children().each(function(index, element) { $(this).click(function(){ // index 是數字,element 是對應的html元素 if($('#TreeList').has('input').length==0){ switch(index){ case 0: EditNode(objTitle,objTitle.html());break;//編輯 case 1: AddNode(0,objParent,NewNodeRename(0,objTitle));break;//新增同級目錄 case 2: AddNode(1,objParent,NewNodeRename(1,objTitle));break;//新增下級目錄 case 3: DelNode(objParent);break;//刪除 } } else{ alert('請先取消編輯狀態!'); } }); }); } //************************************************************************************************************ //************************************************************************************************************ //===============================驗證編輯結果================================ function CheckEdititon(pNode,text){ var SameLevelTags = new Array(PrentNodeClass,ChildNodeClass); var SameLevelTag = ''; for(var i=0;i<SameLevelTags.length;i++){ if(pNode.parent().attr('class').indexOf(SameLevelTags[i]) > -1){ SameLevelTag = SameLevelTags[i]; break; } } if(SameLevelTag!=''){ if(text!=''){ //---------------- 根據節點樣式遍歷同級節點 -------------------- var IsExsit = false; pNode.parent().parent().children('div').children('.title').each(function(){ if(pNode.find('input').val()==$(this).html()){ IsExsit = true; alert('抱歉!同級已有相同名稱!'); return false; } }); return !IsExsit; } else{ alert('不能為空!'); return false; } } } //=================================自動命名================================ function NewNodeRename(tag,pNode){ //---------------- 根據節點樣式遍歷同級節點 -------------------- var MaxNum = 0; var TObj; if(tag==0){//新增同級目錄 if(pNode.attr('id')==TreeName){ TObj = pNode.children('div').children('.title'); } else{ TObj = pNode.parent().parent().children('div').children('.title'); } var dataid =TObj.attr('data_id'); // 新增同級時候有 } else{ //新增下級目錄 var aaa = pNode.parent().next().html(); // if(pNode.parent().next().html()!=null){//原來已有子節點 if(aaa.indexOf('編輯') != -1){//原來已有子節點 TObj = pNode.parent().next().children('div').children('.title'); // alert(1); // console.log(TObj); } else{//沒有子節點 // TObj = null; // alert(2); TObj = pNode.parent().children('div').children('.title'); // var dataid = TObj.parent().find('.title').attr('data_id'); // var dataid = TObj.prevObject.find('.title').attr('data_id'); var arr = TObj.prevObject[0]; // html var arr1 = $(arr); // 轉化成jquery var dataid = arr1.attr('data_id'); // 我這獲取的是data_id // alert(arr1.attr('data_id')); } } if(TObj){ TObj.each(function(){ var CurrStr = $(this).html(); var temp; if(CurrStr.indexOf(NewNodeName)>-1){ temp = parseInt(CurrStr.replace(NewNodeName,'')); if(!isNaN(temp)){ if(!(temp<MaxNum)){ MaxNum = temp + 1; } } else{ MaxNum = 1; } } }); } // var dataidxiaji =TObj.parent().find('.title').attr('data_id'); // 取的點選新增同級目錄時,同一結構的第一個div的id // console.log(dataid); var TempNewNodeName = NewNodeName; if(MaxNum>0){ TempNewNodeName += MaxNum; } var array = TempNewNodeName+'=='+dataid; // return TempNewNodeName; // 新建目錄名稱 return array; // 新建目錄名稱加id } //=============================== 第二步是確定編輯還是取消 編輯定義 ================================ function EditNode(obj,text){ // alert(obj.attr('data_id')); // 得到id obj.attr(Orititle,text);//將原來的text儲存到Orititle中, text是原來模組操作的名字 obj.html("<input type='text' class=input value=" + text + ">"); //切換成編輯模式 obj.parent().find('.editBT').html("<div class=ok title=確定></div><div class=cannel title=取消></div>"); obj.has('input').children().first().focusEnd();//聚焦到編輯框內 // 點選確定點選取消,觸發的操作 obj.parent().find('.ok').click(function(){ Edit_OK(obj); }); obj.parent().find('.cannel').click(function(){ Edit_Cannel(obj); }); } //=============================== 新增節點 目錄================================ function AddNode(tag,obj,NameStr){ arr = NameStr.split("=="); NameStr = arr[0]; // 這就是 自動命名的 新建目錄, id = arr[1]; // 我獲取的是同一級的第一個id, // alert('新增節點'); // 現在新增同級是獲取的同級的第一個id,新增下級的是獲取的當前id if(tag==0 || tag==1){ var newNode = $('<div class=' + ChildNodeClass + '></div>'); if(tag==0){ //新增同級目錄 newNode.appendTo(obj.parent()); } else{ //新增下級目錄 if(!(obj.next()) || (obj.next().attr('class')!=ChildrenListClass)){//最後一個節點和class!=ChildrenListClass都表示沒有子節點 var ChildrenList = $('<div class=' + ChildrenListClass + '></div>'); ChildrenList.insertAfter(obj);//將子節點的”外殼“加入到物件後面 newNode.appendTo(ChildrenList);//將子節點加入到”外殼“內 } else{ newNode.appendTo(obj.next());//將子節點加入到”外殼“內 } obj.attr('class',PrentNodeClass + ' show');//啟用父節點展開狀態模式 obj.next().css('display','');//展開子節點列表 } with(newNode){ html(EditHTML(NameStr)); // 這是用來顯示編輯框的好像 //---------------------------------動態新增事件------------------------------- mouseover(function(){ TNode_MouseOver($(this)); }); mouseout(function(){ TNode_MouseOut($(this)); }); find('.title').click(function(){ TModuleNodeName_Click($(this)); }); find('.editArea').each(function(){ EditArea_Event($(this)); }); //--------------------------------------------------------------------------- } // 點選新增目錄時,輸入的名字就是傳過去的 // 調的 EditNode 方法,走編輯狀態,這是第一種方法,把預設名字存進資料庫再點選編輯進行修改新目錄名稱 // EditNode(newNode.find('.title'),newNode.find('.title').html());//新增後自動切換到編輯狀態 // 這是第二種方法,直接把使用者輸入的目錄名存進資料庫 var obj2 = newNode.find('.title'); var text = newNode.find('.title').html(); obj2.attr(Orititle,text);//將原來的text儲存到Orititle中, text是原來模組操作的名字 obj2.html("<input type='text' class=input value=" + text + ">"); //切換成編輯模式 obj2.parent().find('.editBT').html("<div class=ok title=確定></div><div class=cannel title=取消></div>"); obj2.has('input').children().first().focusEnd();//聚焦到編輯框內 console.log(obj2); // alert(obj.attr('data_id')); // 得到id // 點選確定點選取消,觸發的操作 obj2.parent().find('.ok').click(function(){ // alert('ok'); var tempText = obj2.has('input').children().first().val(); // 文字內容 // var id = obj.attr('data_id'); // 編輯操作的id // alert(tempText); $.ajax({ url:'ewm-xuqiu_add333', type:'POST', data:{ pid : id, // 根據判斷tag來決定傳過來的id做父id還是它是子id name: tempText, // 預設名字 新建目錄 tag:tag, // 判斷是新增同級目錄還是下級目錄 }, dataType:'json', success:function(data){ // console.log(data); if(data.code == '3'){ alert('新增分類成功'); // alert('data.id'); } if(data.code == '4'){ alert('新增分類失敗'); } // location.reload(true); }, error:function(data){ // console.log(data); // alert('新增失敗'); } }) // 原先的js樣式 if(CheckEdititon(obj2,tempText)){ obj2.html(tempText); } else{ obj2.html(obj2.attr(Orititle)); } obj2.removeAttr(Orititle); obj2.parent().find('.editBT').html(''); }); obj.parent().find('.cannel').click(function(){ // Edit_Cannel(obj); }); } } //=============================== [刪除]按鈕 ================================ function DelNode(obj){ // 這個obj 是editarea的父節點 editarea父節點的find 發現 class等於title的標籤,然後在取在這個標籤的data_id 屬性 // console.log(obj); if(confirm('確定要刪除嗎?')){ var objParent = obj.parent(); var objChildren = obj.next('.Row'); // var id = objParent.attr('data_id'); var id = obj.find('.title').attr('data_id'); //節點名稱 $.ajax({ url:'ewm-xuqiu_delete333', type:'POST', data:{ id : id, }, dataType:'json', success:function(data){ // alert(111); console.log(data); if(data.code == '3'){ alert('刪除分類成功'); } if(data.code == '4'){ alert('刪除分類失敗'); } if(data.code == '5'){ alert('模組下操作不能空,不能刪除'); } // location.reload(true); }, error:function(data){ alert(222); console.log(data); } }) // 原來js樣式 obj.remove();//基於Jquery是利用解構函式,所以“刪除”後其相關屬性仍然存在,除非針對ID來操作就可以徹底刪除 objChildren.remove();//刪除物件所有子節點 ChangeParent(objParent); } } //===============================第3步 確定編輯操作 編輯[確定]按鈕 ================================ function Edit_OK(obj){ var tempText = obj.has('input').children().first().val(); // 文字內容 var id = obj.attr('data_id'); // 編輯操作的id $.ajax({ url:'ewm-xuqiu_update333', type:'POST', data:{ name : tempText, id : id, }, dataType:'json', success:function(data){ // console.log(data); if(data.code == '3'){ // alert('編輯成功'); } if(data.code == '4'){ alert('編輯失敗'); } // location.reload(true); }, error:function(data){ alert('編輯失敗'); } }) // 原先的js樣式 if(CheckEdititon(obj,tempText)){ obj.html(tempText); } else{ obj.html(obj.attr(Orititle)); } obj.removeAttr(Orititle); obj.parent().find('.editBT').html(''); } //=============================== 編輯[取消]按鈕 ================================ function Edit_Cannel(obj){ obj.html(obj.attr(Orititle)); obj.removeAttr(Orititle); obj.parent().find('.editBT').html(''); } //=============================== 改變父節點樣式 ================================ function ChangeParent(obj){ if(obj.find('.ChildNode').length==0){//沒有子節點 obj.prev('.'+PrentNodeClass).attr('class',ChildNodeClass); obj.remove(); } } //************************************************************************************************************ //************************************************************************************************************ //************************************************************************************************************ //=============================== 設定聚焦並使游標設定在文字最後 ================================ $.fn.setCursorPosition = function(position){ if(this.lengh == 0) return this; return $(this).setSelection(position, position); } $.fn.setSelection = function(selectionStart, selectionEnd) { if(this.lengh == 0) return this; input = this[0]; if (input.createTextRange) { var range = input.createTextRange(); range.collapse(true); range.moveEnd('character', selectionEnd); range.moveStart('character', selectionStart); range.select(); } else if (input.setSelectionRange) { input.focus(); input.setSelectionRange(selectionStart, selectionEnd); } return this; } $.fn.focusEnd = function(){ this.setCursorPosition(this.val().length); } //========================================================================================= }); </script> <link href="/DemoShow/styles/public.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="TopAD"></div> <div id="TopADCode" style="display:none"> <script type="text/javascript" >BAIDU_CLB_SLOT_ID = "772619";</script> <script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script> </div> <script type="text/javascript"> if(document.getElementById('TopAD')!=null){ document.getElementById('TopAD').innerHTML = '<div class="SearchEngine_AD1">' + document.getElementById('TopADCode').innerHTML + '</div>'; } </script> <div id="AD_B"></div> <div id="TreeList"> <{foreach $commlist as $data}> <{foreach $data.children as $child}> <div class="ParentNode hidden"> <!-- <div class="title" id="dataid" data_id="<{$child.id}>"><{$child.name}></div> --> <div class="title" data_id="<{$child.id}>"><{$child.name}></div> <div class="editBT"></div> <div class="editArea" id="<{$child.id}>"><span>[編輯]</span><span>[新增同級目錄]</span><span>[新增下級目錄]</span><span>[刪除]</span></div> </div> <div class="Row" style="display:none"> <{foreach $child.children as $grandson}> <div class="ParentNode"> <div class="title" data_id="<{$grandson.id}>"><{$grandson.name}></div> <div class="editBT"></div> <div class="editArea" id="<{$grandson.id}>"><span >[編輯]</span><span>[新增同級目錄]</span><span>[新增下級目錄]</span><span>[刪除]</span></div> </div> <div class="Row" style="display:none"> <{foreach $grandson.children as $grandsonson}> <div class="ChildNode"> <div class="title" data_id="<{$grandsonson.id}>"><{$grandsonson.name}></div> <div class="editBT"></div> <div class="editArea" id="<{$grandsonson.id}>"><span>[編輯]</span><span>[新增同級目錄]</span><span>[新增下級目錄]</span><span>[刪除]</span></div> </div> <{/foreach}> </div> <{/foreach}> </div> <{/foreach}> <{/foreach}> </div> <div id="AD_T"></div> <div id="ADCode_B" style="display:none"> <script src="/js/sogouad/AD_468-15.js" type="text/javascript"></script> <script language='JavaScript' type='text/javascript' src='http://images.sohu.com/cs/jsfile/js/l.js'></script> </div> <div id="ADCode_T" style="display:none"> <script type="text/javascript" >BAIDU_CLB_SLOT_ID = "772426";</script> <script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script> </div> <script type="text/javascript" >BAIDU_CLB_SLOT_ID = "772399";</script> <script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script> <script type="text/javascript" src="/js/ad_alliance/ad_alliance.js"></script> </body> </html>
第2種頁面,以 - 格式展示下級目錄
請選擇父級分類:<select name="pid" size="20"> <option value="0">根分類</option> {volist name="alist" id="vo"} <option value="{$vo['id']}"> // 統計有幾個 - 頁面就顯示幾個 — {:str_repeat("__",$vo['count']-2)} {$vo['name']} </option> {/volist} </select><br /> 新的分類名稱:<input type="text" name="name" /><br /> <input type="submit" value="新增分類" /> </form>
控制器中
第一種方法,以 - 遞進格式展示的html頁面 public function xuqiu() { $list = K::M('code/xuqiu')->chaxun555(); // var_dump($result); foreach($list as $key=>$value){ $list[$key]['count']=count(explode('-',$value['bpath'])); } // die; $this->pagedata['alist'] = $list; $this->tmpl = 'xuqiu_add.html'; } public function xuqiu_list() { $list = K::M('code/xuqiu')->chaxun555(); foreach($list as $key=>$value){ $list[$key]['count']=count(explode('-',$value['bpath'])); } $this->pagedata['alist'] = $list; $this->tmpl = 'xuqiu_list.html'; } public function xuqiu_add() { echo '<pre>'; $pid = $this->GP('pid'); // pid是新新增資料的id $name = $this->GP('name'); // 執行新增操作 $list = K::M('code/xuqiu')->add555($pid,$name); if($list) { $this->err->add('新增分類成功', 201); }else{ $this->err->add('新增分類失敗', 201); } // var_dump($list); // die; $this->tmpl = 'xuqiu_add.html'; } // 應該是 ajax 刪除 public function xuqiu_delete() { echo '<pre>'; $url = $this->request['uri']; $url = explode('=',$url); $id = $url[1]; $result = K::M('code/xuqiu')->chaxun222('pid',$id); // var_dump($result); // die; if($result) { $this->err->add('模組下操作不能空,不能刪除', 201); }else{ $list = K::M('code/xuqiu')->delete('id',$id); // 設定有子類的情況下不能刪除 if($list) { $this->err->add('刪除分類成功', 201); }else{ $this->err->add('刪除分類失敗', 201); } } $this->tmpl = 'xuqiu_list222.html'; } // 第2 種方法,是 欄目層級的展示頁面 public function xuqiu333() { echo '<pre>'; $list = K::M('code/xuqiu')->chaxun555(); // $a = $this->array2level($list); // 這個有level欄位 $b = $this->arr2tree($list); // 展示出樹級結構,chilren,遍歷顯示在頁面 $this->pagedata['commlist'] = $b; $this->tmpl = 'xuqiu_list222.html'; } public function xuqiu_add222() { // echo '<pre>'; $name = $this->GP('name'); $pid = $this->GP('id'); $list = K::M('code/xuqiu')->addfenlei($pid,$name); // 返回json資料給前臺 $returnData = json_encode($list,JSON_UNESCAPED_UNICODE); // return $returnData; echo $returnData; // 只有echo才打印資訊,如果是return就返回資訊為空,格式正確,但是走error exit; } public function xuqiu_delete222() { // echo '<pre>'; $id = $this->GP('id'); $a = K::M('code/xuqiu')->deletefenlei($id); $returnData = json_encode($a,JSON_UNESCAPED_UNICODE); echo $returnData; exit; } // level 資料的展示 function array2level($array, $pid = 0, $level = 1) { static $list = []; foreach ($array as $v) { if ($v['pid'] == $pid) { $v['level'] = $level; $list[] = $v; $this->array2level($array, $v['id'], $level + 1); } } return $list; } // tree 資料的展示 function arr2tree($tree, $rootId = 0,$level=1) { $return = array(); foreach($tree as $leaf) { if($leaf['pid'] == $rootId) { $leaf["level"] = $level; foreach($tree as $subleaf) { if($subleaf['pid'] == $leaf['id']) { $leaf['children'] = $this->arr2tree($tree, $leaf['id'],$level+1); break; } } $return[] = $leaf; } } return $return; }
// 第三種
// 把增加同級目錄,下級目錄修改成,輸入名字之後就存資料庫
public function xuqiu_update333()
{
// echo '<pre>';
$name = $this->GP('name');
$pid = $this->GP('id');
$data['name'] = $name;
$list = K::M('code/xuqiu')->update($pid,$data,true);
if($list)
{
$returnData = ['code'=>3, 'info'=>'編輯成功'];
}else{
$returnData = ['code'=>4, 'info'=>'編輯失敗'];
}
$returnData = json_encode($returnData,JSON_UNESCAPED_UNICODE);
echo $returnData; // 只有echo才打印資訊,如果是return就返回資訊為空,格式正確,但是走error
exit;
// die;
}
public function xuqiu_delete333()
{
// echo '<pre>';
$id = $this->GP('id');
// var_dump($id);
// die;
$a = K::M('code/xuqiu')->deletefenlei($id);
$returnData = json_encode($a,JSON_UNESCAPED_UNICODE);
echo $returnData;
exit;
}
public function xuqiu_add333()
{
// 新增同級目錄,就是新增id 的同pid =pid
// 新增下級目錄,就是pid=id
// 新增同級還是下級 tag=0 新增同級 tag=1 新增下級
echo '<pre>';
$pid = $this->GP('pid'); // pid是新新增資料的id,當新增的是下級目錄時,提示$pid沒有定義
$name = $this->GP('name');
$tag = $this->GP('tag');
var_dump($pid);
// 執行新增操作
$list = K::M('code/xuqiu')->add666($pid,$name,$tag);
// die;
// var_dump($pid);
// var_dump($name);
// var_dump($tag);
// die;
$returnData = json_encode($list,JSON_UNESCAPED_UNICODE);
echo $returnData; // 只有echo才打印資訊,如果是return就返回資訊為空,格式正確,但是走error
exit;
}