Hallo!
ich habe ein kleines Problem mit dem Umsortieren meiner MySQL-Datenbank. Und zwar habe ich folgenden Sachverhalt:
Für mein neues, kleines CMS habe ich folgenden Tabelle zur Kategorienverwaltung angelegt:
Nun habe ich eine Eingabemaske angelegt, die es mir ermöglicht, neue Menüpunkte anzulegen. Innerhalb dieser Maske habe ich die Möglichkeit, zu entscheiden, ob der neue Datensatz vor oder nach einem bestehenden Auszuwählenden einzuordnen ist(dataorder). Nach Absenden der Maske greift eine Funktion, die den Wert des Feldes "dataorder" der bestehenden Datensätze passend zu den vorher gemachten Angaben umschreibt.
Diese Funktion sieht wie folgt aus:
Leider funktioniert diese Funktion nicht annähernd so wie sie soll. Anstatt mir die bestehenden Datensätze aufsteigend zu ordnen, schreibt sie überall "3" in das Feld dataorder.
Ich hoffe nun auf Eure Hilfe....
Vielen Dank!
ich habe ein kleines Problem mit dem Umsortieren meiner MySQL-Datenbank. Und zwar habe ich folgenden Sachverhalt:
Für mein neues, kleines CMS habe ich folgenden Tabelle zur Kategorienverwaltung angelegt:
Code:
id | pid | name | cstamp | estamp | dataorder | active
id = Primärschlüssel
name = Name des Menüpunktes
cstamp, estamp = 2 Zeitstempel
dataorder = Feld für Ordnunkskennzahl
active = 0/1
Nun habe ich eine Eingabemaske angelegt, die es mir ermöglicht, neue Menüpunkte anzulegen. Innerhalb dieser Maske habe ich die Möglichkeit, zu entscheiden, ob der neue Datensatz vor oder nach einem bestehenden Auszuwählenden einzuordnen ist(dataorder). Nach Absenden der Maske greift eine Funktion, die den Wert des Feldes "dataorder" der bestehenden Datensätze passend zu den vorher gemachten Angaben umschreibt.
Diese Funktion sieht wie folgt aus:
PHP:
function reorderCat($pid, $pos, $dataorder){
global $config;
if($pos == "vor") $qZus = " AND dataorder >= ".$dataorder;
else $qZus = " AND dataorder > ".$dataorder;
$abfrage = "SELECT *
FROM ".$config['DBstructuretable'].
" WHERE pid = ".$pid.$qZus;
echo $abfrage."<br>";
$ausgabe = @mysql_query($abfrage);
$num = @mysql_num_rows($ausgabe);
if ($num > 0) {
while ($row = mysql_fetch_object($ausgabe)){
$newDO = 0;
$newDO = $row->dataorder + 1;
$aendern = "UPDATE ".$config['DBstructuretable'].
" SET dataorder = '$newDO'";
if (!$update = mysql_query("$aendern")) return errorHandler(23, $aendern);
}
}
return $dataorder;
}
Leider funktioniert diese Funktion nicht annähernd so wie sie soll. Anstatt mir die bestehenden Datensätze aufsteigend zu ordnen, schreibt sie überall "3" in das Feld dataorder.
Ich hoffe nun auf Eure Hilfe....
Vielen Dank!