Hallo an alle.
Ich habe eine alte Routine von mir ausgegraben, die mir das manuelle Sortieren
(Reihenfolge von Datensätzen anhand einer Sortierungsnummer ändern) von Datensätzen
innerhalb einer Tabelle erlaubt. Das waren bisher knapp 12 Zeilen (noch aus meiner Anfangszeit),
was ich aber jetzt auf 2 Zeilen (das eigentliche Sortieren in der Tabelle) reduzieren konnte.
Hier erstmal meine Routine:
Das Sortieren funktioniert wunderbar und ich bin auch richtig stolz auf mich , allerdings plagt mich noch ein Problem. Folgende Tabelle nutze ich zum Testen:
Wenn ich den letzten (den mit der höchsten Sortierungsnummer) Datensatz nochmals nach unten schiebe (was theoretisch zwar nicht geht, weil es ja der letzte ist), wird die "sortnr" um 1 erhöht, was zwar richtig ist laut der UPDATE-Anweisung oben, ich aber vermeiden möchte.
Hat jemand Ideen?
Danke im Voraus.
Innuendo
Ich habe eine alte Routine von mir ausgegraben, die mir das manuelle Sortieren
(Reihenfolge von Datensätzen anhand einer Sortierungsnummer ändern) von Datensätzen
innerhalb einer Tabelle erlaubt. Das waren bisher knapp 12 Zeilen (noch aus meiner Anfangszeit),
was ich aber jetzt auf 2 Zeilen (das eigentliche Sortieren in der Tabelle) reduzieren konnte.
Hier erstmal meine Routine:
PHP-Code:
<table border="0" width="600" cellspacing="1" cellpadding="2">
<tr>
<td bgcolor="#CCCCCC">ID</td>
<td bgcolor="#CCCCCC">Überschrift</td>
<td bgcolor="#CCCCCC">SortNr</td>
<td bgcolor="#CCCCCC"> </td>
<td bgcolor="#CCCCCC"> </td>
</tr>
<?
if($_GET['move']!="")
{
$newsortnr = $_GET['sortnr'] + ($_GET['move']);
$sqlQuery = "UPDATE news_sort SET sortnr = sortnr + (".$_GET['move'].")";
$sqlQuery.= "WHERE id = '".$_GET['id']."'";
$dbErg = $db->sql($sqlQuery);
$sqlQuery = "UPDATE news_sort SET sortnr = sortnr - (".$_GET['move'].")";
$sqlQuery.= "WHERE id != '".$_GET['id']."' AND sortnr = '".$newsortnr."'";
$dbErg = $db->sql($sqlQuery);
}
$dbErg = $db->sql("SELECT * FROM news_sort ORDER BY sortnr ASC");
while($dbRow = mysql_fetch_array($dbErg))
{
?>
<tr>
<td bgcolor="#EEEEEE"><?=$dbRow['id'];?></td>
<td><?=$dbRow['news_header'];?></td>
<td bgcolor="#EEEEEE"><?=$dbRow['sortnr'];?></td>
<td><a href="index.php?id=<?=$dbRow['id'];?>&move=1&sortnr=<?=$dbRow['sortnr'];?>">nach unten</a></td>
<td><a href="index.php?id=<?=$dbRow['id'];?>&move=-1&sortnr=<?=$dbRow['sortnr'];?>">nach oben</a></td>
</tr>
<?
}
?>
</table>
Code:
CREATE TABLE `news_sort` ( `id` mediumint(9) NOT NULL auto_increment, `news_header` varchar(100) NOT NULL default '', `sortnr` mediumint(9) unsigned NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=5 ; # # Daten für Tabelle `news_sort` # INSERT INTO `news_sort` VALUES (1, '<b>Überschrift 1</b>', 0); INSERT INTO `news_sort` VALUES (2, '<i>Überschrift 2</i>', 1); INSERT INTO `news_sort` VALUES (3, '<u>Überschrift 3</u>', 2); INSERT INTO `news_sort` VALUES (4, 'Überschrift 4', 3);
Hat jemand Ideen?
Danke im Voraus.
Innuendo
Kommentar