• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Sehr verzwickt

Status
Für weitere Antworten geschlossen.

philipp

Neues Mitglied
Hallo

Für mein "cms" (oder wie auch immer) hab ich ein navigationssystem geschrieben. das funktioniert mit datenbanken und es sieht so aus:

while schleife für linkkategorien
-kategorie 1
while schleife für links
-link1
-link2
if abfrage ob in der url diese linkid übergeben wurde
und while schleife für unterlinks (wenn diese linkid übergeben wurde)
--unterlink1
--unterlink2
-link3
-kategoie 2
-link4
-link5

verstanden?

es geht nun darum:

ich würde gerne unbestimmt viele sublevels erzeugen können. ich seh da aber keine möglichkeit... ich müsste ein php script immer erst vorher parsen lassen damit es genügend if abfragen und whileschleifen enthält.

also nochmal:
alles klar bis hier hin???

gibt es irgendeine möglichkeit unbestimmt viele sublevels erzeugen zu können?

also sublevels in html erklärt:
<ul>
//kategorien
[*]Kategorie1
[*]Kategorie2
[/list]

nun wird nach jeder kategorie eine whileschleife ausgeführt, die die zugehörigen links aus der datenbank ausliest.

..
[*]Kategorie1[*]
<ul>
[*]Link1
[*]Link2
[/list]
..

und als sublevel gibt es noch die unterlinks (selbes prinzip)
..
[*]Link1
<ul>
[*]Unterlink1
[*]Unterlink2
[/list]
..

was, wenn ich jetz noch ein sublevel brauche?
oder 2, oder 3?

is das möglich?
 
achduschei... ich hab nur scheiss kompliziertes SQL zeug finden können bis jetz... ich hasse sql. und verstehen tu ich da garnix... jetz weiss ich aber wenigstens wie das teil mal heissen wird. verstehst du das?
 
ja ich verstehe nested sets
und soo kompliziert sind sie auch nicht - nur langsam wenn man die struktur ändert :)
 
er könnte das doch auf einfach mit ner rekursions Funktion machen?
überprüfen, ob ne id da is, wenn ja, Links ausgeben und wieder aufrufen.
Das wär doch einfacher(ich hab mir die nested sets noch nich angeschaut, is also nur ein anderer Vorschlag, der womöglich falsch seinkann)
 
okay nested sets sind nicht das richtige für mich, bei dem "cms" gehts darum, dass man in der adminoberfläche links auch blitzschnell hinzufügen/ändern/löschen kann.

funktioniert im moment ausgezeichnet, aber nur mit einem sublevel

vielleicht gibts ja ne andere möglichkeit... ich werds mal im hinterkopf behalten. wenn mir was einfällt verdien ich damit viel geld :D ;)
 
philipp nunja wenn du es nicht öfter als 1000 mal pro sekunde änderst und es nicht mehr als 10000 datensätze sind ist die geschwindigkeit vernachlässigbar. [millisekunden bereich] - das auslesen ist auf jedenfall sehr viel schneller als mit rekursiven methoden!
 
und ich hatte schon hoffnung, dass ich das ned anschaun muss :(

naja, dann weiss ich ja, was ich die nächsten wochen zu tun hab *cry*
 
wichtig ist eigentlich nur das alles datensätze eine id haben, eine links und eine rechts :)
 
Wie wärs, wenn du in der datenbank den link von vernherrein als:
Code:
[*]<a href""....>Home</a>
Speicherst.

Wenn du den link so speicherst, kannst du einfach im dokument
Code:
<lu><Abfrage an Datenbank</lu>
machen.

Wenn du mit MySQL arbeitest wäre die abfrage so:
[php:1:1dcda9e9e3]
//Dateianfang etc. in HTML
//Abfrage in php
<?
//Verbindungsaufnahme
mysql_connect("hoster", "benutzrtname","password"); // Verbindung mit Host aufnehmen >> Parameter anpassen!
mysql_select_db("dbname"); // Datenbank abrufen >> Parameter anpassem!

//Abfrage
$abfrage = "SELECT * FROM tabllenname"; // Parameter anpassen!
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
$sublevel = $row->spaltenname; // Parameter anpassen
echo $sublevel;
}
?>
[/php:1:1dcda9e9e3]
 
philipp, siehst du, nik und cracki sind halt profis, was erwartest du dann von frank, dass er das kapiert? oder motzt du ihn nur zum spass an? :>
 
erstens habe ich niemanden angemotzt

und zweitens habe ich von niemandem erwartet, dass er/sie mir hilft. von frank unter anderem auch nicht.

aber jetz schluss mit dem OT, k?
 
wie gesagt, nimm die nested sets.
Es geht auch mit der Rekursion, aber sobald die viele Unterverzeichnisse und Besucher hast, kannst du dich schonmal auf eine extrem langsame Seite freuen.
Es könnte auch mit rekursion gehen, ohne ewig SQL querys...
Nehmen wir mal an, du fragst alles aus der Tabelle auf einmal ab.
Danach speicherst du die ids bzw die identifiezierungen in ein assiziatives array(als schlüssel) und als wert die url und den namen(musst du halt dann per explode trennen) und dann machst du eine foreach-rekursions-schleife.
Wenn du verstanden hast, wie ich das meine, was ich nich glaube, da ich nicht erklären kann^^ Dann hast du deine Baumnavigation, insofern ich keinen logischen Fehler gemacht hab oder etwas dergleichen und hast die nested sets umgangen

Greetz
 
HAHA ich hab ne idee... ihr müsst mir jetz sagen ob ihr schonmal was davon gehört habt und wenn ja, was für probleme es dafür gibt.

für jeden link wird ein ordner erzeugt.. in diesem ordner wieder ordner und so weiter.

nun wird per infopath immer die url zerlegt und die ordnerstruktur ausgelesen. in jedem dieser ordner befindet sich eine index.php in der per absolut angabe ( href="/../../index.php") das template inkludiert wird also head, navigation, stylesheet....


is das ne superidee oder kann ich das gleich wieder vergessen?
 
okay, hab mal drüber nachgedacht. problem wäre zb, wenn ich einen link schreibe in einer datei die 3 levels unter der root is.. und dann änder ich den ordnernamen. dann is der link kaputt. also wieder nicht so gut

edit: naja, das problem könnt ich noch mit mysql lösen. einfach eine tabelle in der die ordner-ids mit den zugehörigen namen sind.

ja... ich glaub die lösung is sehr gut, ich werd anfangen da was zu entwickeln ;). will mir wer helfen? sind ne menge neue sachen für mich notwendig :D
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben