PHP/mySQL - Reihenfolge für Navigation in Datenbank ändern

_root

Erfahrenes Mitglied
Mahlzeit,

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

tut.jpg

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:
<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">&nbsp;</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&uuml;gen</a> </td>
  </tr>
</table>

MfG Tobi
 
Am einfachsten machste noch eine sortier Spalte dazu dann kanste das in der Reihenfolge ausgeben wie du möchtest.

Mfg Splasch
 
Ich habe hier mal das "Script" aus dem anderen Thread... das sind irgendwie komische Zeichen drin. Soll das so ein?

Prinzipiell müsste es wie folgt funktionieren: SortID wird verringert (?neue Position? < ?alte Position?):
Code:
UPDATE `Tabelle` SET `SortID` = `SortID`+1 WHERE `SortID` BETWEEN ?neue Position? AND ?alte Position? `ID` != ?ID?;
UPDATE `Tabelle` SET `SortID` = ?neue Position? WHERE `ID` = ?ID?
Beziehungsweise erhöht (?neue Position? > ?alte Position?):
Code:
UPDATE `Tabelle` SET `SortID` = `SortID`-1 WHERE `SortID` BETWEEN ?alte Position? AND ?neue Position? AND `ID` != ?ID?;
UPDATE `Tabelle` SET `SortID` = ?neue Position? WHERE `ID` = ?ID?
Wobei ?ID? die ID des zu verschiebenden Datensatzes ist.
 
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.
 
PHP:
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'");

Eigentlich müsste es doch so gehen oder nicht? Leider klappt es aber nicht wie gewüscht. :(
 
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.
 
Wie müsste es denn aussehen wenn ich noch eine $id (autoincrement/eindeutig) zur verfügung habe?
 
Zurück