ugrás a tartalomhoz

Sorba rendezés és ékezetek

adriankoooo · 2005. Május. 7. (Szo), 13.45
Sziaztok!

Segítségre szorulok, van egy viszonlag jól működő nem saját kódom, ennek csak az a baja, hogy a kimenetet nem rendezi sorba:
  1. <?php  
  2.   
  3. class MX_TreeMenu {  
  4.   
  5.   var $menuName;  
  6.   var $menuItems;  
  7.   var $menuOutput;  
  8.     
  9.   var $query;  
  10.   var $menuPK;  
  11.   var $menuFK;  
  12.   var $menuNameField;  
  13.   var $menuTitleField;  
  14.   var $menuLink;  
  15.   var $menuURLParameter;  
  16.   var $menuTarget;  
  17.   var $menuLinkField;  
  18.   var $menuTargetField;  
  19.   var $menuLevel;  
  20.   var $menuHighlight;  
  21.   
  22.   var $isStatic;  
  23.   var $isStaticURL;  
  24.   var $previousItemLevel;  
  25.   
  26.   function MX_TreeMenu ($menuName$menuDepthSeparator = ' ') {  
  27.     $this->menuName = $menuName;  
  28.     $this->menuDepthSeparator = $menuDepthSeparator;  
  29.     $this->menuItems = array();  
  30.     $this->previousItemLevel = -1;  
  31.     $this->menuLevel = -1; // -1 means menuLevel is not taken into account  
  32.     $this->menuHighlight = false;  
  33.   
  34.     $this->menuOutput = '';  
  35.   }  
  36.   
  37.   
  38.   
  39.   
  40.   /* 
  41.   * Static Mx Menu 
  42.   */  
  43.   
  44.   function addItem ($itemName$itemURL$itemTitle = ''$itemTarget='') {  
  45.     // sets static menu renderer  
  46.     $this->isStatic = true;  
  47.     $level = 0;  
  48.     while (strpos($itemName$this->menuDepthSeparator) === 0) {  
  49.       $level++;  
  50.       $itemName = substr($itemName, 1);  
  51.     }  
  52.     $useThisEntry = true;  
  53.     if (($level > $this->previousItemLevel) && (($level - $this->previousItemLevel) > 1)) {  
  54.         $useThisEntry = false; // ignore this entry because more than 2 spaces from the previous level have been detected  
  55.         $level = $this->previousItemLevel + 1;  
  56.     }  
  57.     if ($useThisEntry) {  
  58.         $myItem = array();  
  59.         $myItem['itemName'] = htmlentities(stripslashes(trim($itemName)));  
  60.         $myItem['itemURL'] = trim($itemURL);  
  61.         $myItem['itemLevel'] = $level;  
  62.         $myItem['itemTitle'] = htmlentities(stripslashes(trim($itemTitle)));  
  63.         $myItem['itemTarget'] = $itemTarget;  
  64.         array_push($this->menuItems, $myItem);  
  65.         $this->previousItemLevel = $level;  
  66.     }  
  67.   }  
  68.   
  69.   /* 
  70.   * Dynamic Mx Menu 
  71.   */  
  72.   
  73.   function setQuery (&$query) {  
  74.     $this->query = $query;  
  75.     $this->isStatic = false;  
  76.     $this->isStaticURL = true;  
  77.   }  
  78.   
  79.   function setPK ($menuPK) {  
  80.     $this->menuPK = trim($menuPK);  
  81.   }  
  82.   
  83.   function setFK ($menuFK) {  
  84.     $this->menuFK = trim($menuFK);  
  85.   }  
  86.   
  87.   function setNameField ($menuNameField) {  
  88.     $this->menuNameField = trim($menuNameField);  
  89.   }  
  90.   
  91.   function setTitleField ($menuTitleField) {  
  92.     $this->menuTitleField = trim($menuTitleField);  
  93.   }  
  94.   
  95.   function setLink ($menuLink) {  
  96.     $this->menuLink = trim($menuLink);  
  97.   }  
  98.   
  99.   function setURLParameter ($menuURLParameter) {  
  100.     $this->menuURLParameter = trim($menuURLParameter);  
  101.   }  
  102.   
  103.   function setTarget($menuTarget) {  
  104.     $this->menuTarget = trim($menuTarget);  
  105.   }  
  106.   
  107.   function setLinkField ($menuLinkField) {  
  108.     $this->isStaticURL = false;  
  109.     $this->menuLinkField = trim($menuLinkField);  
  110.   }  
  111.   
  112.   function setTargetField ($menuTargetField) {  
  113.     $this->menuTargetField = trim($menuTargetField);  
  114.   }  
  115.   
  116.   function setLevel ($menuLevel = 3) {  
  117.     // if $menuLevel < 1 => reset menuLevel  
  118.     $this->menuLevel = $menuLevel;  
  119.   }  
  120.   
  121.   function highlightCurrent ($highlight = false) {  
  122.     if ($highlight === true) {  
  123.       $this->menuHighlight = true;  
  124.     } else {  
  125.       $this->menuHighlight = false;  
  126.     }  
  127.   }  
  128.   
  129.   
  130.   /* 
  131.   * Render wrapper 
  132.   */  
  133.   
  134.   function render () {  
  135.     if (strlen($this->menuOutput) == 0) {  
  136.       if ($this->isStatic) {  
  137.         $this->menuOutput = $this->_renderStatic();  
  138.       } else {  
  139.         $this->menuOutput = $this->_renderDynamic();  
  140.       }  
  141.     }  
  142.     return $this->menuOutput;  
  143.   }  
  144.   
  145.   
  146.   /* 
  147.   *   Renderes 
  148.   */  
  149.   
  150.   function _renderStatic () {  
  151.     $request_uri = $_SERVER['SCRIPT_NAME'];  
  152.     $query_string = $_SERVER['QUERY_STRING'];  
  153.   
  154.     if (strlen($query_string) > 0) {  
  155.       $request_uri .= '?' . $query_string;  
  156.     }  
  157.   
  158.     $return = '<div class="ktcsstree">';  
  159.       
  160.     $return .= "<ul>\r\n";  
  161.     $nextItemLevel = 0;  
  162.     for ($i=0; $i < count($this->menuItems); $i++) {  
  163.           $myItem = $this->menuItems[$i];  
  164.           if ($i < (count($this->menuItems) - 1) ) {  
  165.             $nextItemLevel = $this->menuItems[$i + 1]['itemLevel'];  
  166.           } else {  
  167.             $nextItemLevel = 0;  
  168.           }  
  169.           $url = $myItem['itemURL'];  
  170.           $itemLi = '<li>';  
  171.           if ($this->menuHighlight &&  
  172.             strpos(strtolower($url), strtolower($request_uri)) !== false &&  
  173.             strlen(substr(strtolower($url), strpos(strtolower($url), strtolower($request_uri)) + strlen($request_uri))) ==0 ) {  
  174.             $itemLi = '<li class="selected">';  
  175.             $this->menuHighlight = false;  
  176.           }  
  177.           $return .= $itemLi;  
  178.           $return .= '<a href="/' . $url . '"';  
  179.           if (strlen($myItem['itemTarget']) > 0) {  
  180.             $return .= ' target="' . $myItem['itemTarget'] . '"';  
  181.           }  
  182.           if (strlen($myItem['itemTitle']) > 0) {  
  183.             $return .= ' title="' . $myItem['itemTitle'] . '"';  
  184.           }  
  185.           $return .= '>';  
  186.           $return .= $myItem['itemName'];  
  187.           $return .= '</a>';  
  188.           if ($nextItemLevel <= $myItem['itemLevel']) {  
  189.             $return .= "</li>\r\n";  
  190.           }  
  191.           if ($nextItemLevel < $myItem['itemLevel']) {  
  192.             $repeat = $myItem['itemLevel'] - $nextItemLevel;  
  193.             $return .= str_repeat("</ul></li>\r\n"$repeat);  
  194.           }  
  195.           if ($nextItemLevel > $myItem['itemLevel']) {  
  196.             $repeat = $nextItemLevel - $myItem['itemLevel'];  
  197.             $return .= str_repeat("<ul>\r\n"$repeat);  
  198.           }  
  199.     }  
  200.     $return .= "</ul>\r\n";  
  201.     $return .= "</div>\r\n";  
  202.     if (count($this->menuItems) == 0) {  
  203.       $return = 'No data to render.';  
  204.     }  
  205.     return $return;  
  206.   }  
  207.   
  208.   function _renderDynamic () {  
  209.     $arr = $this->_getUnformatedData();  
  210.     $formated_arr = array();  
  211.     if (count($arr) > 0) {  
  212.       $this->_formatData($formated_arr$arr, 0, 0, $this->menuLevel);  
  213.     }  
  214.     $this->menuItems = $formated_arr;  
  215.     return $this->_renderStatic();  
  216.   }  
  217.   
  218.   function _getUnformatedData () {  
  219.     $arr = array();  
  220.   
  221.     if (is_resource($this->query)) {  
  222.       include_once('MX_TreeMenu_recordset.class.php');  
  223.       $rs = new MX_TreeMenu_recordset($this->query);  
  224.     } else {  
  225.       $rs = &$this->query;  
  226.       $rs->MoveFirst();  
  227.     }  
  228.   
  229.     while (!$rs->EOF) {  
  230.       $myItem = array();  
  231.       $myItem['itemName'] = htmlentities(stripslashes(trim($rs->Fields($this->menuNameField))));  
  232.       $target = '';  
  233.       if ($this->isStaticURL) {  
  234.         $url = $this->menuLink . $rs->Fields($this->menuURLParameter);  
  235.         $target = $this->menuTarget;  
  236.       } else {  
  237.         $url = $rs->Fields($this->menuLinkField);  
  238.         if (isset($this->menuTargetField) && strlen($this->menuTargetField) > 0) {  
  239.           $target = $rs->Fields($this->menuTargetField);  
  240.         }  
  241.       }  
  242.       $myItem['itemURL'] = $url;  
  243.       $myItem['itemTarget'] = $target;  
  244.       $myItem['itemLevel'] = 0;  
  245.       $title = '';  
  246.       if (isset($this->menuTitleField) && strlen($this->menuTitleField) > 0) {  
  247.         $title = htmlentities(stripslashes(trim($rs->Fields($this->menuTitleField))));  
  248.       }  
  249.       $myItem['itemTitle'] = $title;  
  250.       $pk = $rs->Fields($this->menuPK);  
  251.       $fk = (int)$rs->Fields($this->menuFK);  
  252.       $myArr = array();  
  253.       $myArr['fk'] = $fk;  
  254.       $myArr['pk'] = $pk;  
  255.       $myArr['data'] = $myItem;  
  256.       array_push($arr$myArr);  
  257.       $rs->MoveNext();  
  258.     }  
  259.     if (!is_resource($this->query)) {  
  260.       $rs->MoveFirst();  
  261.     }     
  262.     return $arr;  
  263.   }  
  264.   
  265.   function _formatData (&$formated_arr$arr$key$level$maxLevel) {  
  266.      sort($arr);  
  267.     foreach ($arr as $value) {  
  268.       $pk = $value['pk'];  
  269.       $fk = $value['fk'];  
  270.       if ($key == $fk) {  
  271.         $value['data']['itemLevel'] = $level;  
  272.           
  273.         array_push($formated_arr$value['data']);  
  274.         if ($maxLevel < 0 || $level + 1 < $maxLevel) { // use $maxLevel only if positive  
  275.           $this->_formatData($formated_arr$arr$pk$level + 1, $maxLevel);  
  276.         }  
  277.       }  
  278.     }  
  279.   }  
  280.   
  281. }  
  282.   
  283.   
  284. ?>  
Raktam bele egy sort($arr); -t de nem mindent rendez sorba :(.

+--------+-----------+------------------------+
| id_dir | iddir_dir | name_dir |
+--------+-----------+------------------------+
| 210 | 61 | MP3 + USB |
| 211 | 61 | USB pam
 
1

Próbáld meg az adatokat az

Anonymous · 2005. Május. 8. (V), 00.43
Próbáld meg az adatokat az sql lekérdezésben eleve rendezni.

SELECT * FROM tabla_neve ORDER BY name_dir