Ich habe jetzt im Beispiel Überschriften in einer Datenbank gespeichert und mit einer Spalte Ordnung versehen. Bei der Ausgabe wird nach Ordnung sortiert - wie lässt sich Ordnung per PHP Script ändern? (aus dem SelfHTML Forum)
Nachfolgend zwei PHP Funktionen aus meiner PHPPictureGallery (will ich irgenwann mal noch veröffentlichen *g*).
Die Funktionen mysql_orderid_up() erhöht eine Order-ID, z.B. von 3 auf 2, die Funktion mysql_orderid_down() erniedert eine Order-ID, z.B. von 2 auf 3 (höhere Zahlen haben geringeren Wert, kommen bei der Ausgabe weiter hinten).
Voraussetzungen: Alle Datensätze müssen über eine ID verfügen, die Spalte mit der ID muss id heißen und Primärschlüssel sein. Die Spalte mit der Order-ID muss order_id heißen, beide Spalten sollten vom Typ int sein.
Zum Zeitpunkt des Funktionsaufrufes, muss bereits eine MySQL Verbindung hergestellt worden sein, sowie eine Datenbank mit mysql_select_db() ausgewählt sein.
Anwendung: Als ersten Paramter übergibt man den Funktionen die ID des zu bearbeitenden Datensatzes, Parameter Nr. 2 ist der Name der MySQL Tabelle. Der dritte Parameter wird nur dann benötigt, wenn man ein zweistufiges Order-ID System aufbauen will.
function mysql_orderid_up($dataID, $table, $gallery = false)
{
$sql = "SELECT
order_id\n";
if($gallery)
$sql .= ", gallery\n";
$sql .= "FROM
$table
WHERE
id = '$dataID'";
$return = mysql_query($sql) OR die(mysql_error());
if(!mysql_num_rows($return))
return false; // Datensatz existiert nicht
$data = mysql_fetch_assoc($return);
$sql = "SELECT
id,
order_id
FROM
$table
WHERE
order_id < '{$data['order_id']}'\n";
if($gallery)
$sql .= "AND gallery = '{$data['gallery']}'\n";
$sql .= "ORDER BY
order_id DESC
LIMIT 1";
$return = mysql_query($sql) OR die(mysql_error());
if(!mysql_num_rows($return))
return false; // Datensatz ist bereits am Anfang
$beforedata = mysql_fetch_assoc($return);
$sql = "UPDATE
$table
SET
order_id = 0
WHERE
id = '{$beforedata['id']}'";
mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
$table
SET
order_id = '{$beforedata['order_id']}'
WHERE
id = '$dataID'";
$return = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
$table
SET
order_id = '{$data['order_id']}'
WHERE
id = '{$beforedata['id']}'";
$return = mysql_query($sql) OR die(mysql_error());
return true;
}
function mysql_orderid_down($dataID, $table, $gallery = false)
{
$sql = "SELECT
order_id\n";
if($gallery)
$sql .= ", gallery\n";
$sql .= "FROM
$table
WHERE
id = '$dataID'";
$return = mysql_query($sql) OR die(mysql_error());
if(!mysql_num_rows($return))
return false; // Datensatz existiert nicht
$data = mysql_fetch_assoc($return);
$sql = "SELECT
id,
order_id
FROM
$table
WHERE
order_id > '{$data['order_id']}'\n";
if($gallery)
$sql .= "AND gallery = '{$data['gallery']}'\n";
$sql .= "ORDER BY
order_id ASC
LIMIT 1";
$return = mysql_query($sql) OR die(mysql_error());
if(!mysql_num_rows($return))
return false; // Datensatz ist bereits am Ende
$afterdata = mysql_fetch_assoc($return);
$sql = "UPDATE
$table
SET
order_id = 0
WHERE
id = '{$beforedata['id']}'";
mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
$table
SET
order_id = '{$afterdata['order_id']}'
WHERE
id = '$dataID'";
$return = mysql_query($sql) OR die(mysql_error());
$sql = "UPDATE
$table
SET
order_id = '{$data['order_id']}'
WHERE
id = '{$afterdata['id']}'";
$return = mysql_query($sql) OR die(mysql_error());
return true;
}