Einträge neu sortieren | Einfach Switchen reicht nicht

Da muss ich passen^^ mit mySQL kenn ich mich nicht so gut aus, aber das sieht so aus als würde es funktionieren :D
 
Ich probiers mal auf Matthias Weise (Danke erstmal dafür), wenn das nicht geht, geh ich ihm halt auf die Nerven ;)

SET `Order` = `Order` + 1

`order`+1 greift direkt auf das Tabellenfeld zu, richtig?
Also ich muss dort den exakten Spaltennamen nennen, der in der Tabelle verwendet ist, oder?


// Edit:
BÄHM, der setzt alles auf 0 bei der awidget_order Spalte
Ich bin hilflos

PHP:
$data	= array();
			if($change_from < $change_to) {
				$data['awidget_order']		 = '`awidget_order` - 1';
				$where	 					 = '`awidget_order` BETWEEN "'.$change_from.'" AND "'.$change_to.'"';	
				$where						.= ' AND `awidget_user_id` = "'.$_SESSION['user_id'].'"';		
			} elseif ($change_from > $change_to) {
				$data['awidget_order']		 = '`awidget_order` + 1';
				$where	 					 = '`awidget_order` BETWEEN "'.$change_to.'" AND "'.$change_from.'"';	
				$where						.= ' AND `awidget_user_id` = "'.$_SESSION['user_id'].'"';		
			}
			
			parent::query_update($this->allocation_table, $data, $where);

			
			unset($data);
			
			$data[]	= array();
			$data['awidget_order'] = $change_to;
			parent::query_update($this->allocation_table, $data, '`awidget_id` = '.$pulledid.'');
 
aaah vergiss meinen Edit (falls du ihn schon gelesen hast)!


Habe es hinbekommen!
Ich danke dir vielmals :)


Euch beiden besser gesagt!
 
Hier nochmal die ~PHP Lösung
Habe meinen Code mal getestet und es funktioniert einwandfrei ;)

Array vorher:

Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
)

Array nachher:

Array
(
[0] => 0
[1] => 1
[2] => 3
[3] => 4
[4] => 2
[5] => 5
)

PHP:
<?php
$menupunkt = array();

$menupunkt[0] = "0";
$menupunkt[1] = "1";
$menupunkt[2] = "2";
$menupunkt[3] = "3";
$menupunkt[4] = "4";
$menupunkt[5] = "5";

$menus = count($menupunkt); // anzahl der menupunkte

$changemenu_from =		4; // order
$changemenu_to =		2; // order

if($changemenu_from > $changemenu_to)
{
	for($i = 0; $i < $menus; $i++)
	{
		if($i >= $changemenu_to && $i < $changemenu_from)
		{
			$menupunkt[$i] = $menupunkt[$i] + 1; // alle menupunkte zwischen dem ziel order und der aktuellen order + 1 setzen, sprich 1 nach unten rutschen
		}
	}

	$menupunkt[$changemenu_from] = $changemenu_to; // den zusetzenden menupunkt auf gewünschte order setzen
}
elseif ($changemenu_from < $changemenu_to)
{
	for($i = 0; $i < $menus; $i++)
	{
		if($i <= $changemenu_to && $i > $changemenu_from)
		{
			$menupunkt[$i] = $menupunkt[$i] - 1; // alle menupunkte zwischen dem ziel order und der aktuellen order - 1 setzen, sprich 1 nach oben
		}
	}  
	
	$menupunkt[$changemenu_from] = $changemenu_to; // den zusetzenden menupunkt auf gewünschte order setzen
}
?>
Kann ja sein das mal jemand so etwas ähnliches ohne Daten aus einer Datenbank brauch. ;)

Ja gern geschehen ;)
Habe nun sogar in punkto mySQL etwas dazu gelernt :D
Dank an Matthias.
 
Zurück