Datensatz-Sortierfunktion sortiert alles, aber nicht ersten Datensatz

Hektik

Erfahrenes Mitglied
Hallo liebe Tutorials-Gemeinschaft!

Ich habe eine Funktion geschrieben, die es mir per GET-Übergabe der Datensatz-ID erlauben soll, die Datensätze entsprechend meinen Wünschen zu sortieren. Das klappt auch ganz gut, jedoch kann ich lediglich den ersten Datensatz nicht in seiner Sortierung beeinflussen. Wenn ich den 2ten Datensatz auf den ersten Platz stellen möchte und somit den ersten auf den 2ten Platz verdrängen, dann steht der 2te Datensatz ganz am Ende der Auflistung und der erste bleibt der erste. Ich verstehe das nicht und suche schon den ganzen Vormittag den Fehler :(

Meine mysql-Tabelle ist folgende:

id | place | rangorder | inhalt

Die entsprechende Funktion: (wird z.b. mit "index.php?id=2" aufgerufen)
PHP:
function reorder($id) {
$tabelle = $_GET['nav'];	
$sql = "UPDATE ".$tabelle." SET `rangorder` = `rangorder` - 15 WHERE id = $id";
mysql_query($sql) or die(mysql_error());
$sql = "SELECT * FROM ".$tabelle." ORDER BY `rangorder` ASC";
$result = mysql_query($sql) or die(mysql_error());
$i = 1;
$j = 10;
//anschließend überschreibe ich alle place und rangorder Inhalte mit 1-x beziehungsweise 10-xx:
while( $row = mysql_fetch_assoc($result) )
	{
$sql = "UPDATE $tabelle SET  `rangorder` = $j, `place` = $i WHERE id = ".$row['id']."";  
mysql_query($sql) or die(mysql_error());
$j += 10;
$i++;
	}
	
return true;
	
	}

Die Ausgabe erfolgt sortiert nach "place".

Ich hoffe, es ist deutlich, was mein Script macht und vielleicht kann mir hier ja einer helfen, ich weiß nämlich nicht mehr weiter :(
 
Bist du sicher, dass "rangorder" einen numerischen Spaltentyp besitzt?

Zeige bitte mal die Werte vor+nach den Updates... damit man sieht, was dort überhaupt drinnen steht.
 
@gumbo: nach place sortiere ich die Ausgabe und "rangorder" ist in 10er Schritten (placex10) angegeben, um beim sortieren z.b. -15 rechnen zu können um zwischen zwei andere Datensätze zu gelangen.

@Sven: Das war des Rätsels Lösung! Danke! Hatte die entsprechende Spalte auf varchar stehen. Jetzt hab ichs auf Integre Zahlen gestellt und es funktioniert! Danke!
 
Zurück