Sortieren von Kommazahlen aus einer Datenbank

penalizer

Mitglied
Hallo Leute,
ihr habt mir bis jetzt immer spitze geholfen so das ich euch dieses Problem nicht vorenthalten will. Dieses Problem ist mit Sicherheit schon des öfteren durchgekaut worden, ich habe aber trotzdem speziell zu meinem Fall keine passende Lösung bei Goo*** und hier im Forum gefunden. Mein Problem ist folgendes:

Ich habe eine Datenbanktabelle die Kommazahlen enthält (Varchar). Diese Kommazahlen sollen logisch sortiert werden

1,99
2,99
12,99 etc.

Bis jetzt (könnt ihr euch ja denken) sieht es so aus

1,99
12,99
2,99

Nehmen ich nen Integer, double oder decimal kann ich nicht mit Kommas arbeiten (welches aber unumgänglich ist.[Punkt geht auch nicht]).

Mein Quelltext ist (vereinfacht dargestellt) so aufgebaut:

PHP:
 <?php 
$Query_xyz = mysql_query("SELECT * FROM spalte WHERE jenes=\"$welches\"") or die(mysql_error());
$Count_Query_xyz = mysql_num_rows($Query_xyz);?>
<table>
<tr>
<?php while ($R=mysql_fetch_object($Query_xyz)) {
echo"<td> $R->zahl</td>"
}
?>
</tr>
</table>

("$R->zahl" wären dann meine Kommazahlen)

Ich habe bewusst den ORDER BY Sql Befehl entfernt da mir klar ist das man dieses Problem nur mit einer Array -sort -Funktion lösen kann. Nur habe ich leider keinen Plan an welcher Position ich es welche einsetzten soll (vor der Schleife, nach der Schleife oder mitten drin ?).

Ich würde mich freuen wenn ihr mir helfen könntet.

Danke im vorraus, Pen
 
Ein typisches Beispiel für die falsche Wahl des Spalten-Typs. Denn Zeichenketten werden anders geordnet als Zahlen. Probier's mal mit dem Spalten-Typ FLOAT oder DOUBLE.
 
Danke für deine schnelle Antwort,
aber ich hatte ja bereits erwähnt das Float und Double für mich nicht in Frage kommen da dort keine Kommas erlaubt sind bzw. die Kommas entfernt würden und Punkte nicht in Frage kommen. Also bleibt mir wohl nur das Varchar in verbindung mit einer Array sort Funktion.
 
aber ich hatte ja bereits erwähnt das Float und Double für mich nicht in Frage kommen da dort keine Kommas erlaubt sind bzw. die Kommas entfernt würden und Punkte nicht in Frage kommen. Also bleibt mir wohl nur das Varchar in verbindung mit einer Array sort Funktion.
Da die meisten Prorammiersprachen auf der englischen Sprache basieren und im Englischen Dezimalzahlen mit einem Punkt anstatt einem Komma wie im Deutschen notiert werden, ist es nur logisch, dass Werte mit einem Komma als ungültig eingestuft werden.
Wieso verwendest du nicht einfach einen der von mir erwähnten Typen und formatierst die Werte entsprechend um? (Vgl. number_format()-Funktion)
 
Zurück