Sortierung festlegen



  • Hi,

    ich baue grad einen neuen datenimport für einen xtc onlineshop und mir geht es darum, dass die kategorien richtig sortiert angezeigt werden.

    die datenstruktur kann man sich einfach gemacht so vortellen (mysql):

    categories_id | categories_name | sort_order

    1 | akten | 1
    2 | bücher | 2
    3 | dvd | 3
    4 | musik | 4
    5 | software | 5

    kategorien haben eine id, einen namen und eine sortierung. bei der anzeige werden die daten nach sort_order sortiert und richtig nach dem abc geordnet angezeigt. soweit alles bestens.

    nun kommt die problematik, dass die kategorien aber mehrspaltig angezeigt werden. folgende würden in zwei spalten in den shop so aussehen:

    akten | bücher
    dvd | musik
    software

    die anzeige soll aber so sein:

    akten | dvd
    bücher | software
    musik

    in beiden fällen handelt es sich um eine abc sortierung. beim ersten gehts zuerst von links nach rechts und danach von oben nach unten. beim zweiten ist es genau andersherum und so will ich es.

    nun ist mein gedanke das sort_order beim einspielen einfach so zu ändern, dass die kategorien automatisch richtig angezeigt werden.

    aus

    categories_id | categories_name | sort_order

    1 | akten | 1
    2 | bücher | 2
    3 | dvd | 3
    4 | musik | 4
    5 | software | 5

    wurde dies werden:

    categories_id | categories_name | sort_order

    1 | akten | 1
    2 | bücher | 3
    3 | dvd | 2
    4 | musik | 5
    5 | software | 4

    um im shop später diese anzeige zu erreichen

    aktien | dvd
    bücher | software
    musik

    und hier komme ich nicht weiter. das ganze soll für n spalten (n ist im import bekannt) funktionieren und die anzahl der datensätze steht mir bei dem zeitpunkt wo die daten grad geschrieben werden nicht zur verfügung, ich weiß nicht ob 5, 10 oder 56 kategorien eingespielt werden. ist es so überhaupt möglich das sort_order richtig zu setzen ohne die anzahl der datensätze zu haben? aber auch wenn ich wüsste, wie viele kategorien eingespielt werden, wüsste ich nicht wie ich die sort_order berechnen müsste.

    wenn es nicht anders geht, baue ich das script um, das die anzahl der datensätze bekannt ist, ist derzeit nur um performance zu sparen.

    mir gehts hier nur um eine funktion, die mir quasi aus dem alten sort_order die neue sort_order schreibt.

    die maximale anzahl von kategorien beträgt sagen wir mal 250 und sort_order zahlen müssen nicht nacheinander liegen, die können auch 11,55,65,1045 lauten.

    hat jemand mein problem verstanden und eine idee wie man das lösen könnte? ich grüble schon etwas länger, da ich immer der meinung bin mit dem modulo müsste es irgendwie klappen.

    phil



  • Bist du sicher, dass du die Daten in der DB ändern sollst/darfst? Normal baut man ds UI um, wenn etwas anders aussehen soll.



  • hi,

    das shopseitig anzupassen ist natürlich eine lösung, das stimmt.

    mir schwebt so ne idee vor, jede spalte in einen zahlenraum einzuteilen, z.b. spalte eins geht von 1-1000, spalte zwei von 2000-3000, spalte 3 von 3000-4000 usw. dadurch dass ich sagen kann eine kategorie enthält nie mehr als x unterkategorien kann ich so planen.

    jede spalte hat quasi nen eigenen zähler und der modulo sagt mir in welcher spalte ich grad mit einer kategorie bin.

    sitze schon seit nachmittag an dem problem und so kurz nach schreiben des postings kam mir diese idee in gedanken und werde sie morgen früh erstmal testen. damit müsste es glaub ich klappen ohne zu wissen wieviele datensätze ich habe. wird sich zeigen.

    phil


Anmelden zum Antworten