-
Mahlzeit,
Ich bin gerade dabei ein klitzekleines CMS zu bauen. Ich habe hier eine Auflistung aller bereits erstellten Seiten.

Jetzt möchte ich gerne über die Pfeile die Sortierung ändern. Z.B. das Home ganz nach oben kommt. Leider habe ich da absolut kein Schimmer wie ich das anstellen köntne. Vielleicht kann mir ja jemand bei meinem Problem helfen.
Hier noch der Code von der oberigen Darstellung.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<table width="100%" border="0"> <tr> <td width="40%" style="border-bottom:1px #000000 solid"><strong>Name</strong></td> <td width="20%" style="border-bottom:1px #000000 solid"><strong>bearbeiten</strong></td> <td width="20%" style="border-bottom:1px #000000 solid"><strong>sorieten</strong></td> <td width="20%" style="border-bottom:1px #000000 solid"><strong>löschen</strong></td> </tr> <? while($seite = mysql_fetch_array($res)) { ?> <tr> <td><img src="Bilder/seite.png" width="10" height="12" style="padding-right:5px "><? echo "$seite[titel]"; ?></td> <td><a href="?id=Editor2&edit_id=<? echo $seite[id]; ?>"><img src="Bilder/icons/sheet_edit.gif"></a></td> <td><img src="Bilder/ab.png" width="11" height="10"><img src="Bilder/auf.png" width="11" height="10"></td> <td><a href="?id=delete_seite"><img src="Bilder/icons/sheet_del.gif" width="14" height="14" border="0"></a></td> </tr> <? } ?> <tr> <td colspan="3"> </td> </tr> <tr> <td colspan="3"><img src="Bilder/icons/sheet_add.gif" width="14" height="14"> <a href="?menu=seitenverwaltung&id=seite_anlegen">hinzufügen</a> </td> </tr> </table>
MfG Tobi
-
Schau mal hier: "Verschieben" von Datensätzen
Markus Wulftange
-
Am einfachsten machste noch eine sortier Spalte dazu dann kanste das in der Reihenfolge ausgeben wie du möchtest.
Mfg Splasch
-
-
Das sind Platzhalter. Die Abfragen sind auch nur schematisch.
Markus Wulftange
-
kannst du das mit 〈neue Position〉 und 〈alte Position〉 vielleicht nochmal ein bisschen genauer erklären?
MfG Tobi
-
Wenn ein Datensatz von Position a nach Position b verschieben möchtest, ist 〈alte Position〉 = a und 〈neue Position〉 = b.
Markus Wulftange
-
Eigentlich müsste es doch so gehen oder nicht? Leider klappt es aber nicht wie gewüscht.PHP-Code:
mysql_db_query("$mysqlname", "UPDATE `seiten` SET `SortID` = '$sortid' WHERE `SortID` = '$sortid'+1");
mysql_db_query("$mysqlname", "UPDATE `seiten` SET `SortID` = '$sortid'+1 WHERE `SortID` = '$sortid'");
-
Wenn dir nur „SortId“ als Identifizierungsmerkmal zur Verfügung steht, musst du einen der beiden zu vertauschenden Datensätze erst eine neue temporäre „SortId“ zuweisen, um ihn so quasi auszukoppeln. Denn andernfalls haben die beiden Datensätze dieselbe „SortId“, wie es auch bei dir der Fall ist.
Markus Wulftange
-
Wie müsste es denn aussehen wenn ich noch eine $id (autoincrement/eindeutig) zur verfügung habe?
-
So wie bereits beschrieben.
Markus Wulftange
-
ich habe es jetzt so, aber jetzt macht er nichtsmehr

Code :1 2
mysql_db_query("$mysqlname", "UPDATE `seiten` SET `SortID` = `$sortid`+1 WHERE `SortID` BETWEEN `$sortid`+1 AND = `$sortid` `id` != '$abid'"); mysql_db_query("$mysqlname", "UPDATE `seiten` SET `SortID` = '$sortid' WHERE `id` = '$abid'");
-
24.07.08 17:03 #13
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
die Syntax des ersten SQL-Statements ist ja auch falsch. Schreibe die Abfrage erst mal in eine Variable und lass Dir das ausgeben. Dann siehst Du, wo die Fehler liegen.
LG
-
Prinzipiell müsste es wie folgt aufgebaut sein:
PHP-Code:$posNeu = 123;
$posAlt = mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
if ($posNeu < $posAlt) {
mysql_query('UPDATE `seiten` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN '.$posNeu.' AND '.$posAlt.' `id` != '.$id);
} else {
mysql_query('UPDATE `seiten` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN '.$posAlt.' AND '.$posNeu.' `id` != '.$id);
}
mysql_query('UPDATE `seiten` SET `SortID` = '.$posNeu.' WHERE `ID` = '.$id);
Markus Wulftange
-
24.07.08 17:35 #15
- Registriert seit
- Dec 2007
- Ort
- Bremen
- Beiträge
- 3.418
Hi,
kleine Korrektur (AND vergessen):
LGPHP-Code:$posNeu = 123;
$posAlt = mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
if ($posNeu < $posAlt) {
mysql_query('UPDATE `seiten` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN '.$posNeu.' AND '.$posAlt.' AND `id` != '.$id);
} else {
mysql_query('UPDATE `seiten` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN '.$posAlt.' AND '.$posNeu.' AND `id` != '.$id);
}
mysql_query('UPDATE `seiten` SET `SortID` = '.$posNeu.' WHERE `ID` = '.$id);
Ähnliche Themen
-
Reihenfolge v. MySQL Datensätzen ändern. Was bei Doppelbelegung?
Von suntrop im Forum PHPAntworten: 6Letzter Beitrag: 20.10.10, 17:47 -
Element in Datenbank nach eigener ID Sortieren und Reihenfolge Ändern
Von chofer02 im Forum PHPAntworten: 5Letzter Beitrag: 13.12.06, 14:37 -
[mysql] Kollation einer Datenbank ändern
Von StupidBoy im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 19.10.06, 23:40 -
Automatisches ändern einer MySql-Datenbank
Von VoodOsK im Forum PHPAntworten: 3Letzter Beitrag: 13.08.05, 17:43 -
PHP/MySql Datenbank modell für navigation
Von lan im Forum Relationale DatenbanksystemeAntworten: 4Letzter Beitrag: 03.02.05, 13:21



3Danke

Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren