|
|
|
| 深圳通用网站建设与开发工作室 2008-06-15 00:30:00 作者:SystemMaster
来源: 文字大小:[大][中][小] |
<?php /** * 显示列表 * @access public */ function DispList() { //不缩进的显示方式 // $this->mIsDispListIndex = true; // echo('<p align="right"><a href="?action=new&part=role">增加新角色</a> </p>'); _fcksavedurl=""?action=new&part=role">增加新角色</a> </p>');" // // $this->mListTitle = '用户角色列表'; // $this->SetDataOption('list'); // // $this->SetQueryTable( array($this->mTableUserRole) ); // // //查询顺序 // $this->SetQueryOrder( 'asc', $this->mTableUserRole, 'sequence' ); // // $this->Query('list'); // parent::DispList(); // //另外一种显示方式,用数组作为堆栈,A: 压栈时存role,压完就删除source // $this->CheckProperty('mrDb'); // $this->CheckProperty('mrSql'); // $this->mrSql->Select('role, title, parent'); // $this->mrSql->From($this->mTableUserRole); // $this->mrSql->Orderby('parent, sequence'); // $this->mRs = $this->mrDb->Execute($this->mrSql->Sql()); // if (0 < count($this->mRs)) // { // $source = & $this->mRs->GetArray(); //数字索引 // $stack = array(''); //堆栈 // $stacki = array(-1); //和堆栈对应,记录堆栈中数据在树中的层次 // $target = array(); // while (0 < count($stack)) // { // $item = array_shift($stack); // $lev = array_shift($stacki); // if (!empty($item)) // { // //在这里把加工过的数据放到target数组 // array_push($target, str_repeat(' ', $lev) . $item); // //$s1 = str_repeat(' ', $lev) . $item; // } // $del = array(); //要从$source中删除的节点 // $ar = array(); //需要添加到堆栈中的节点 // foreach ($source as $key=>$val) // { // //寻找匹配的子节点 // if (empty($item)) // { // $find = empty($source[$key]['parent']); // } // else // { // $find = ($item == $source[$key]['parent']); // } // if ($find) // { // array_unshift($ar, $source[$key]['role']); // $del[] = $key; // } // } // foreach ($ar as $val) // { // array_unshift($stack, $val); // array_unshift($stacki, $lev + 1); // } // foreach ($del as $val) // { // unset($source[$val]); // } // echo(implode(', ', $stack) . '<br />' . implode(', ', $stacki) . '<br />' . implode(', ', $target) . '<br /><br />'); // } // debug_array(); // } // else // { // echo('<center>没有检索到数据</center>'); // } //另外一种显示方式,用数组作为堆栈,B: 压栈时存数组索引,出栈并使用完后再删除source $this->CheckProperty('mrDb'); $this->CheckProperty('mrSql'); $this->mrSql->Select('role, title, parent'); $this->mrSql->From($this->mTableUserRole); $this->mrSql->Orderby('parent, sequence'); $this->mRs = $this->mrDb->Execute($this->mrSql->Sql()); if (!empty($this->mRs) && !$this->mRs->EOF) { $source = & $this->mRs->GetArray(); //数字索引 $stack = array(-1); //堆栈 $stacki = array(-1); //和堆栈对应,记录堆栈中数据在树中的层次 $target = array(); while (0 < count($stack)) { $item = array_shift($stack); $lev = array_shift($stacki); if (-1 != $item) { //在这里把加工过的数据放到target数组 $s1 = str_repeat(' ', $lev) . '<a href="?action=disp&part=role&role=' . $source[$item]['role'] . '">' . $source[$item]['title'] . '</a>'; $s2 = '<a href="?action=edit&part=role&role=' . $source[$item]['role'] . '">编辑</a> <a href="?action=delete&part=role&role=' . $source[$item]['role'] . '">删除</a>'; array_push($target, array($s1, $s2)); } $del = array(); //要从$source中删除的节点 $ar = array(); //需要添加到堆栈中的节点 foreach ($source as $key=>$val) { //寻找匹配的子节点 if (-1 == $item) { $find = empty($source[$key]['parent']); } else { $find = ($source[$item]['role'] == $source[$key]['parent']); } if ($find) { array_unshift($ar, $key); } } foreach ($ar as $val) { array_unshift($stack, $val); array_unshift($stacki, $lev + 1); } //从source中删除 unset($source[$item]); //echo(implode(', ', $stack) . '<br />' . implode(', ', $stacki) . '<br />' . implode(', ', $target) . '<br /><br />'); } //输出 echo('<p align="right"><a href="?action=new&part=role">增加新角色</a> </p>'); array_unshift($target, array('角色', '操作')); $this->CheckProperty('mrLt'); $this->mrLt->SetData($target); $this->mrLt->mListTitle = '用户角色列表'; $this->mrLt->mIsDispIndex = false; $this->mrLt->Disp(); } else { echo('<center>没有检索到数据</center>'); } } // end of function DispList ?> |
|