Navigation-Einträge in der Administration hoch und runter schieben

  • Themenstarter Themenstarter aeonone
  • Beginndatum Beginndatum
A

aeonone

hi

bastel gerade an einer Administration für eine Seite, bei der man die möglichkeit haben soll, die Menueinträge einer vertikal angeordneten Navigation entweder mit dem vorherigen Wert oder dem nachfolgenden Wert zu tauschen.

die dazugehörige Tabelle hat die form

id | title | text | order

wobei beim Frontend die werte nach order sortiert werden..

mein Ansatz sieht wie folgt aus :

if($action == 'reorder_up')
{
$order_id = $_GET['orderid'];

if($order_id>1)
{

$nr = $order_id-1;

$mysqli = mysqli_connect($db_host, $db_user, $db_pw, $db_name);

$sql = "UPDATE `wegweiser` SET `order`='$nr' WHERE `order`='$order_id';";
$sql .= "UPDATE `wegweiser` SET `order`='$order_id' WHERE `order`='$nr'";

mysqli_multi_query($mysqli, $sql);

mysqli_close($mysqli);
}

}

Mein Problem ist das nur ein Query durchgeführt wird auch nachdem ich es wie ihr oben seht mit mysqli versucht habe. Wo liegt dabei mein Fehler?

Kenn mich mit mysqli leider nicht gut aus :/

Hoffe ihr könnt mir helfen :)
 
Hi

Dein Fehler liegt beim Denken ;)

Du machst es Momentan etwa so:

Setze FeldInhalt auf 3 Wo Feldinhalt 4 ist.
Setze Feldinhalt auf 4 Wo Feldinhalt 3 ist.

Das Problem hierbei ist, dass du das vorher geänderte Feld gleich wieder zurück änderst.

Du solltest ein extra Feld "changed" in die Tabelle einbauen.

PHP:
$sql  = "UPDATE `wegweiser` SET `order`= '".$nr."', changed = 1 WHERE `order`= '".$order_id."';";
$sql .= "UPDATE `wegweiser` SET `order`= '".$order_id."' WHERE `order` = '".$nr."' AND `changed` = 0;";
$sql .= "UPDATE `wegweiser` SET changed = 0 WHERE changed = 1";
 
Oh man ich danke vielmals :)

Scheinbar doch etwas zu spät geworden gestern ;)

Läuft einwandfrei!


DAAAANKEEEE
 
Zurück