Vinzenz Mai: function ausgabe funktioniert nicht

Beitrag lesen

Hallo,

ich habe im Netz eine PHP Funktion gefunden, mit der man anhand einer MySQL DB eine Navigation hierarchisch aufbauen kann.

besonders schön ist sie nicht, dafür ressourcenfressend, fehlerbehaftet und glänzt vor allem durch Fehlen der Fehlerbehandlung.

hier die php funktion:

function getMenu($oberkat) {

$einlesen = mysql_query("SELECT ID, name FROM navigation WHERE parentID='".$oberkat."' ORDER BY name");

[link:http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel@title=Kontextwechsel] nicht beachtet.

Fehlerbehandlung fehlt

$menu = "";
    while($einzeln = @mysql_fetch_assoc($einlesen)) {

oh yeah. Wir unterdrücken die Fehlermeldungen

dafür verzichten wir auf eine Fehlerbehandlung

if(hasChildKats($einzeln['ID'])) {

setzen in einer Schleife SQL-Statements ab

$menu .= "<li>".$einzeln['name']."<ul>";
        $menu .= getMenu($einzeln['ID']);

und das ganze zu allem Überfluss auch noch rekursiv :-(

$menu .= "</ul></li>";
      } else {
        $menu .= "<li>".$einzeln['name']."</li>";
      }
    }
    return $menu;
  }

function hasChildKats($katID) {
    $einlesen = mysql_query("SELECT ID FROM navigation WHERE parentID='".$katID."'");

Kontextwechsel nicht beachtet.

if(mysql_num_rows($einlesen)>0) return true; else return false;

Wenn ich nur eine Zahl benötige, dann frage ich genau diese mit COUNT() ab

erhalte genau einen Datensatz mit genau einem Wert, den ich benötige.

Fehlerbehandlung fehlt schon wieder.

else ist überflüssig

Codeformatierung lässt zu wünschen übrig.

}

  

> Bei mir gibt die Funktion aber nichts aus, warum?  
  
weil ein Fehler auftritt.  
Am besten entsorgst Du diesen Schrott ersatzlos.  
Navigationen ändern sich nicht allzu häufig. Infolgedessen empfehle ich Dir das [Nested-Set-Muster](http://de.wikipedia.org/wiki/Nested_set) für die Umsetzung hierarchischer Strukturen in einer relationalen Datenbank.  
  
  
Freundliche Grüße  
  
Vinzenz