jack: & MySQL: An bestimmte position in DB schreiben

Hallo,

ich habe eine Navigationsleiste, welche dynamisch aus einer MySQL-DB ausgelesen wird. Wenn ich einen neue Seite hinzufügen will, hängt diese sich ans ende der Tabelle.
Jetzt mein Problem: Meine Navigationsleiste ist dann ganz schön "unordentlich". Dann fängst z.B. an mit Bilder, dann 2 andere, dann kommt home.
Kann man irgendwie sagen, wie beim erstellen einer Spalte, dass er es nach einem Bestimmten Eintrag macht? Ich würden dann im Admincenter den User mittels <option> fragen, nach welchem Eintrag der neue hin soll.

Ich habe schon versucht, es mit einer extra Spalte, die die reihenfolge hat. Jedoch kann ich das glaube ich vergessen, denn wenn ich einen neue Seite dazu machen will, gibt es ja die Zahl doppelt und somit kann ich kein ORDER BY machen.

Gruß
jack

  1. Hi,

    ich habe eine Navigationsleiste, welche dynamisch aus einer MySQL-DB ausgelesen wird. Wenn ich einen neue Seite hinzufügen will, hängt diese sich ans ende der Tabelle.

    tut sie nicht. Grund: Die Datensätze einer Tabelle sind unsortiert. Was unsortiert ist, hat weder Anfang noch Ende.

    Kann man irgendwie sagen, wie beim erstellen einer Spalte, dass er es nach einem Bestimmten Eintrag macht?

    Es gibt kein "nach". Wenn Du eins haben möchtest, musst Du es herstellen. Als Spaltenname bietet sich z.B. "position" an.

    Ich habe schon versucht, es mit einer extra Spalte, die die reihenfolge hat.

    Prima. Warum fragst Du dann?

    Jedoch kann ich das glaube ich vergessen, denn wenn ich einen neue Seite dazu machen will, gibt es ja die Zahl doppelt

    Wieso das? Wo ist für Dich das Problem, zwischen 50 und 60 eine weitere Zahl zu finden?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. hi,

    ich habe eine Navigationsleiste, welche dynamisch aus einer MySQL-DB ausgelesen wird. Wenn ich einen neue Seite hinzufügen will, hängt diese sich ans ende der Tabelle.
    Jetzt mein Problem: Meine Navigationsleiste ist dann ganz schön "unordentlich".

    Dein eigentliches Problem: Du hast dir noch nicht bewusst gemacht, dass Datensätze in Datenbanken eigentlich immer "unordentlich", ungeordnet, drinstehen.
    Eine Ordnung wird erst dann hergestellt, wenn du nach einer verlangst - beim Auslesen.

    Dann fängst z.B. an mit Bilder, dann 2 andere, dann kommt home.
    Kann man irgendwie sagen, wie beim erstellen einer Spalte, dass er es nach einem Bestimmten Eintrag macht?

    Erstelle dir ein Sortierkriterium, auf das du beim Auslesen Bezug nehmen kannst.

    Ich habe schon versucht, es mit einer extra Spalte, die die reihenfolge hat. Jedoch kann ich das glaube ich vergessen, denn wenn ich einen neue Seite dazu machen will, gibt es ja die Zahl doppelt und somit kann ich kein ORDER BY machen.

    Wenn du einen Eintrag an "Position" X einfügen willst, musst du dafür sorgen, dass alle Einträge mit Position >= X zunächst mal im eine Position verschoben werden.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Wenn du einen Eintrag an "Position" X einfügen willst, musst du dafür sorgen, dass alle Einträge mit Position >= X zunächst mal im eine Position verschoben werden.

      OK, dass is glaub ich ein guter ansatz. Wie mache ich das am besten, dass alle ab bestimmte Position +1?

      Gruß
      jack

      1. hi,

        Wie mache ich das am besten, dass alle ab bestimmte Position +1?

        UPDATE tabelle SET position = position+1 WHERE position >= X

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hi,

        Wenn du einen Eintrag an "Position" X einfügen willst, musst du dafür sorgen, dass alle Einträge mit Position >= X zunächst mal im eine Position verschoben werden.

        OK, dass is glaub ich ein guter ansatz. Wie mache ich das am besten, dass alle ab bestimmte Position +1?

        Mit update kannst du Werte überschreiben.
        Alle werte die größer sind als X bekommst du mit: where SPALTENNAME >= X
        und erhöhen geht mit: SPALTENNAME = SPALTENNAME + 1

        mfG,
        steckl

    2. Dein eigentliches Problem: Du hast dir noch nicht bewusst gemacht, dass Datensätze in Datenbanken eigentlich immer "unordentlich", ungeordnet, drinstehen.
      Eine Ordnung wird erst dann hergestellt, wenn du nach einer verlangst - beim Auslesen.

      Nur eine Nuance, aber die Ordnung ist im Datendesign hinterlegt, das was Du meinst ist die "physikalische" Anordnung, nicht die logische.
      Wobei natuerlich auch die physikalische Anordnung eigentlich nicht "ungeordnet und unordentlich" erfolgt.   LOL

  3. Hi,

    Kann man irgendwie sagen, wie beim erstellen einer Spalte, dass er es nach einem Bestimmten Eintrag macht? Ich würden dann im Admincenter den User mittels <option> fragen, nach welchem Eintrag der neue hin soll.

    Dann hättest du ja auch wieder 2, sobald ein 2. kommt, das nach einen in der Mitte kommen soll.

    Ich habe schon versucht, es mit einer extra Spalte, die die reihenfolge hat. Jedoch kann ich das glaube ich vergessen, denn wenn ich einen neue Seite dazu machen will, gibt es ja die Zahl doppelt und somit kann ich kein ORDER BY machen.

    Du könntest mit einem Update alle Werte in der Spalte mit der Reihenfolge die nach der Stelle kommen, an der das neue Element eingefügt werden soll um 1 erhöhen und erst danach das neue Element einfügen.
    Ne andere Möglichkeit fällt mir nicht ein. Aber du bräuchtest eh nur 2 mySql-Statements.

    mfG,
    steckl

    1. Du könntest mit einem Update alle Werte in der Spalte mit der Reihenfolge die nach der Stelle kommen, an der das neue Element eingefügt werden soll um 1 erhöhen und erst danach das neue Element einfügen.

      Wie am besten und am schnellsten?

      Ne andere Möglichkeit fällt mir nicht ein. Aber du bräuchtest eh nur 2 mySql-Statements.

      Wie am besten und am schnellsten?

      Gruß
      jack