Es geht wohl darum, eine eigene "Sortier-Reihenfolge" definieren zu können, die sich nicht allein aus den Daten selbst ergibt, sondern mittels einem extra zu diesem Zweck hinzugefügten Feld umgesetzt werden soll.
Wenn dabei ein Eintrag "verschoben" wird, dann ist der Sortierwert aller nachfolgenden anzupassen, ja. Aber das sollte dann wirklich schon auf der Datenbank geschehen.
Ob man dabei die Sortierspalte als unique definiert, und wie man dann beim Verschieben eines Eintrages damit umgeht, wäre zu überlegen.
Array Sortieren mal anders...
Einklappen
X
-
Warum läßt du das nicht schon von der DB sortieren?
evtl. suchst du einfach nur usort()
Davon verstehe ich keinen Piep.Ich weiss beim Sortieren sind immer nur die Stellen danach (maximal eine davor) betroffen. Sortiere ich einen Eintrag nach oben, tausche ich den Array-key mit dem vorherigen Eintrag und alle folgenden Einträge bekommen eine Folgenummer... So weit zur Theorie; Keine Ahnung ob das so geht!
Einen Kommentar schreiben:
-
Array Sortieren mal anders...
Hi Leute!
Also ich habe hier eine Aufzählung an Punkten. Jeder Punkt soll aber in der Reihenfolge der Aufzählung veränderbar sein.
Die Punkte kommen aus der DB, desshalb hab ich mal ne weitere Spalte namens "priority" hinzugefügt.
Beim Auslesen bekomme ich sowas raus:Um diese Punkte jetzt neu sortieren können, muss ich mal wissen, an welcher Stelle mein gesuchter index im Array steht. Das ist ja kein Problem! Das Problem ist viel mehr das Sortieren an sich und dafür hab ich 2 Ansätze:PHP-Code:Debug:Array
(
[0] => Array
(
[id] => 37
[priority] => 9999
)
[1] => Array
(
[id] => 39
[priority] => 9999
)
[2] => Array
(
[id] => 38
[priority] => 9999
)
[3] => Array
(
[id] => 19
[priority] => 1
)
[4] => Array
(
[id] => 41
[priority] => 9999
)
[5] => Array
(
[id] => 40
[priority] => 9999
)
[6] => Array
(
[id] => 42
[priority] => 9999
)
)
1.
Ich baue das komplette Array um. Das funzt beim "runtersortieren" einwandfrei:
Andersrum bekomm ich das nicht gebacken!PHP-Code:IF ($_GET['rtg'] == 'dn') {
$backstep = 0;
FOR($b=0; $b < $blx_cnt; $b++) {
IF ($b < ($wannabe -1)) {
echo "SET ".$blx[$b]['id']." -> priority: ".$b."<BR>";
} ELSEIF($b == ($wannabe -1)) {
echo "SET ".$blx[$b]['id']." -> priority: ".$wannabe."<BR>";
} ELSE {
IF ($backstep == 0) {
echo "SET ".$blx[$b]['id']." -> priority: ".($b - 1)."<BR>";
$backstep = 1;
} ELSE {
echo "SET ".$blx[$b]['id']." -> priority: ".$b."<BR>";
}
}
}
2.
Ich weiss beim Sortieren sind immer nur die Stellen danach (maximal eine davor) betroffen. Sortiere ich einen Eintrag nach oben, tausche ich den Array-key mit dem vorherigen Eintrag und alle folgenden Einträge bekommen eine Folgenummer... So weit zur Theorie; Keine Ahnung ob das so geht!
Meine Frage:
Gibt's dafür nihct schon nen fertigen Algorythmus!? Und wenn nicht, hat jmd nen Tipp!?
Danke schon mal vorab!Stichworte: -
Einen Kommentar schreiben: