2016-08-09 4 views
0

ich eine leichte Hilfe suchen, sehr geschätzt, ich habe ein rohes Spaghetti PHP-Code ich codeigniter bin Umwandlung, scheint zu funktionieren, aber Ausgang nicht genau, Was ist meine SyntaxCodeigniter Equivalent

roh php

fehlt
function displayMenu($parent =0) { 

     $query =mysql_query("SELECT * " 
       . " FROM tbl_org_structure " 
       . "WHERE parent_id='$parent'" 

       ) or die(mysql_error()); 
     if(mysql_num_rows($query) > 0){ 
      echo '<ul>'; 
      while ($row = mysql_fetch_array($query)) { 
       echo '<li>'.$row['name']; 
       displayMenu($row['id']); 
        echo '</li>'; 
      } 
      echo '</ul>'; 
     } 
    } 

mein codeigniter Äquivalent

function getHierarchy($parent=0){ 

     $hierarchy = $this->db 
       ->where('parent_id',$parent) 
       ->get('tbl_org_structure') 
       ->result(); 
     $stringBuilder='<ul>'; 
     foreach ($hierarchy as $chainOfCommand):   
      $stringBuilder.='<li>'.$chainOfCommand->name; 
      $this->getHierarchy($chainOfCommand->id); 
      $stringBuilder.='</li>'; 
     endforeach; 
     $stringBuilder.='</ul>'; 

echo $stringBuilder; 

    } 

roh pHP-Ausgabe

Verwaltungsrat

Chief Executive Officer (CEO) 
    Finance Department 
     FC 
      test 
     CA 
    Human Resources Department (HR) 
     HOR 
     MO 
    IT Department 
     TSM 
     Sys Dev 
    Sales Department 
     Acc M 
     MD 
    Production 
     PC 
     DM 

codeigniter Ausgang

test 

FC 
CA 

HOR 
MO 

TSM 
Sys Dev 

Acc M 
MD 

PC 
DM 

Finance Department 
Human Resources Department (HR) 
IT Department 
Sales Department 
Production 

Chief Executive Officer (CEO) 

Board of Directors 

Vorschläge

Antwort

2

Sie sind echo die Ergebnisse ing, bevor sie wieder auf die Rekursion Stack kommen, so dass Sie den ganzen Weg reisen nach unten zu ein Blatt in deiner Hierarchie, das Echo dieses Blattes, zurückkommen und das Elternteil wiederholen, und so weiter. Sie sollten stattdessen return $stringBuilder. Dann würden Sie den aufrufenden Code zu benötigen.

Oder, einfach Echo alles sofort wie in displayMenu getan wird, anstatt eine Zeichenfolge zu erstellen.

+1

Vielen Dank, Ihr Kommentar hat einen großen Unterschied gemacht. Ich habe verstanden. Prost – Alphy