Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
Waschbequen
Account gelöscht
Ort: -
|
Verfasst Mi 30.03.2005 10:28
Titel
|
|
|
Also für die Nicht-Rekursive-Lösung ist der Schinkenspicker verantwortlich, das ist nicht mein Bier. Meine ist es dann nämlich zumindest zum Teil, denn die Child-Parent-Beziehung würde ich von unten nach oben auflösen - rekursiv.
|
|
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 48
Geschlecht:
|
Verfasst Mi 30.03.2005 10:28
Titel
|
|
|
bitte spezifizieren. grobe skizze reicht mir.
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 30.03.2005 10:33
Titel
|
|
|
Zitat: | Also für die Nicht-Rekursive-Lösung ist der Schinkenspicker verantwortlich, das ist nicht mein Bier. Meine ist es dann nämlich zumindest zum Teil, denn die Child-Parent-Beziehung würde ich von unten nach oben auflösen - rekursiv. |
lol
macht selbst das ist nicht gerade unkompliziert, ich beiß mir immer noch die zähne dran aus mach ich wenn ich echt mal ne woche zeit hab... bäume lesen ist kein problem, aber die manipulation - teilbäume verschieben, löschen, einfügen, das ist find ich harter tobak...
http://www.klempert.de/php/nested_sets/demo/
Zuletzt bearbeitet von am Mi 30.03.2005 10:34, insgesamt 1-mal bearbeitet
|
|
|
|
|
Eistee
Administrator
Dabei seit: 31.10.2001
Ort: Grimma
Alter: 45
Geschlecht:
|
Verfasst Mi 30.03.2005 10:35
Titel
|
|
|
Hm, wieso keine parent_id für jeden Eintrag nehmen, und die Ausgabelogik den Rest machen lassen? z.b. wenn parent_id = vorangegangene id -> einrücken, wenn id = active_id -> highlighten etc.
Mit ner guten tpl Engine müsste das recht einfach sein?
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 30.03.2005 10:39
Titel
|
|
|
Dann brauchst du aber doch für einen Aufbau mehrere Queries... ODER du ließt den GANZEN Baum aus und generierst daraus. Geht auch. Kannste ja auch dann ein Javascript-Klappmenu draus machen oder so... so meinst du das?
Zuletzt bearbeitet von am Mi 30.03.2005 10:39, insgesamt 1-mal bearbeitet
|
|
|
|
|
Waschbequen
Account gelöscht
Ort: -
|
Verfasst Mi 30.03.2005 10:42
Titel
|
|
|
Mal ganz extrem verkürzt in (C#):
Code: | public class navigation : System.Web.UI.UserControl
{
#region Main-Navigation Standard
private string MainNavi(int rubrikID, OleDbConnection oConn)
{
// Ältestes Elternteil holen ;-9
string parent = totalParent(rbId, oConn);
recIdReturn = "";
string _childs = recIds(rbId, oConn);
string [] childs = _childs.Split(new Char [] {','});
int MaxCount = childs.Length-1;
for(int i=0; i <= MaxCount; i++)
{
if(childs[i] != "")
{
sql = "SELECT ... WHERE parent = {" + childs[i] + "} ...";
}
else
{
sql = "SELECT ... WHERE parent = {" + parent + "} AND ...";
}
OleDbCommand cmd = new OleDbCommand(sql, oConn);
OleDbDataReader reader = cmd.ExecuteReader();
if(reader.HasRows == true)
{
while(reader.Read())
{
#region Schreibe Navigation
// ...
#endregion
if(i != MaxCount && reader["id"].ToString().ToLower() == childs[i+1].ToString().ToLower())
{
tmp.Append("|#REPLACE#ME#|");
}
}
}
if(i==0)
{
output = tmp.ToString();
}
else
{
output = output.Replace("|#REPLACE#ME#|",tmp.ToString());
}
reader.Close();
cmd.Dispose();
}
return output;
}
/// <summary>
/// String beinhaltet den Rückgabevalue der Methode recIds
/// </summary>
private string recIdReturn = "";
/// <summary>
/// Rekursive Funktion, die die ID's der Childs kommasepariert zurückliefert
/// </summary>
private string recIds(string rubrikID, OleDbConnection oConn)
{
string Parent = "";
string Sql = "";
try
{
Sql = "SELECT parent ... WHERE id = {" + rubrikID + "} ...;";
OleDbCommand cmd = new OleDbCommand(Sql, oConn);
Parent = cmd.ExecuteScalar().ToString();
cmd.Dispose();
if(Parent.ToLower().Trim() == Session["Language"].ToString().ToLower().Trim())
{
Parent = "";
}
}
catch {}
recIdReturn = Parent + "," + recIdReturn;
if(Parent!="")
{
recIds(Parent, oConn);
}
return recIdReturn + rubrikID;
}
} |
|
|
|
|
|
gtz
Dabei seit: 15.04.2002
Ort: -
Alter: 48
Geschlecht:
|
Verfasst Mi 30.03.2005 10:44
Titel
|
|
|
XSchinkenX hat geschrieben: | Dann brauchst du aber doch für einen Aufbau mehrere Queries... ODER du ließt den GANZEN Baum aus und generierst daraus. Geht auch. Kannste ja auch dann ein Javascript-Klappmenu draus machen oder so... so meinst du das? |
ja, das meinter. aber der algorithmus wird ja nich effizienter, nur weil der hypertext rpeprocessor ihn ausführt anstelle der datenbank.
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mi 30.03.2005 10:49
Titel
|
|
|
weiß net.... waschi hat schon recht weil s auch ne frage der datenmenge ist. ABER: db-server und script können an zwei verschiedenen plätzen stehen, das macht die sache auch nicht schneller. außerdem sind manche datenbankschnittstellen - odbc - auch nicht die schnellsten...nur mal so.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Problem Multilevel Liste Indesign CC (2014)
Kugel kreieren
wie erstelle ich diesen menü effekt bzw. das gesammte menü?
CSS Menü - Finde nicht das richtige Menü
datenbank ?
SQL-Datenbank
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|