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:
1.
Ich baue das komplette Array um. Das funzt beim "runtersortieren" einwandfrei:
Andersrum bekomm ich das nicht gebacken!
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!
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:
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:
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!
Kommentar