Problem mit der Ausgabe von Wörtern mit Umlauten

yoursmilie

Well-known member
25 April 2006
848
52
Hallo,
Folgendes Problem: Ich habe mir ein Formular geschrieben, mit dem ich Daten in einem Datenbank (mysql) schreiben kann. Soweit, so gut. Allerdings werden Umlaute mit "ä", "ö" usw. eingespeichert. Das Problem ergibt sich dann bei einer Ausgabe der Datensätze in alphabetischer Reihenfolge, da "ö" vor dem eigentlichem Buchstaben gesetzt werden.

Ausgeben lasse ich die Datensätze folgendermaßen:

PHP:
if(mysql_num_rows($query)){
echo '<table><tr><td><a href="inland.php">Name</a></td>';
 while($sql = mysql_fetch_assoc($query)){
  echo '<tr>'
  .'<td>'.$sql[name].'</td>'
  .'</tr>'.chr(10);
 }
echo '</table></div>';
}

Wie kann man es nun bewerkstelligen, dass Wörter mit Umlauten an der richtigen Stelle im Alphabet angezeigt werden? Danke schon einmal fürs lesen. :)
 
Naja, entweder du speicherst die Daten gleich korrekt (d.h. ohne HTML-Entities) ab oder du musst dir die Mühe machen und vor der Ausgabe rückumwandeln, um sortieren zu können.

Ich würde aber lieber gleich korrekt abspeichern, denn die DB sortiert um einiges schneller, als du umwandeln und selber sortieren kannst.
 
Problem wäre dabei, dass ich um die 500 Datensätze schon in der Datenbank habe, die dann ja per Hand ändern müsste. :-?
Naja, wer von vorneherein so komisches Zeugs macht, muss sich dann nicht wundern, dass es entsprechenden Aufwand bereitet, das wieder grade zu biegen.

MySQL bietet String-Funktionen. Dann kannst du dir ein Script sparen und kannst das direkt mit nur einer Abfrage ändern:
Code:
[FONT=Courier New][B][COLOR=#9932cc]UPDATE[/COLOR][/B] my_table
[B][COLOR=#9932cc]SET[/COLOR][/B] field = [COLOR=#9932cc][COLOR=#9932cc]...([/COLOR][/COLOR][B][COLOR=#9932cc][B][COLOR=#9932cc]REPLACE[/COLOR][/B][/COLOR][/B][COLOR=#9932cc]([/COLOR][B][COLOR=#9932cc]REPLACE[/COLOR][/B][COLOR=DarkOrchid]([/COLOR][B][COLOR=#9932cc]REPLACE[/COLOR][/B][COLOR=DarkOrchid]([/COLOR]field, "ä", "ä"[COLOR=#9932cc])[/COLOR], "ö", "ö"[COLOR=#9932cc])[/COLOR], ...;[/FONT]
 
Danke hat soweit alles mit dem Ändern geklappt.

Naja, entweder du speicherst die Daten gleich korrekt (d.h. ohne HTML-Entities) ab
Kannst Du mir einen Tipp geben, wie das zu bewerkstelligen ist?

Ich hatte was mit "mysql_query("SET CHARACTER SET 'utf8'");" gefunden - würde das was bringen? *verzweifelt*
 
Kannst Du mir einen Tipp geben, wie das zu bewerkstelligen ist?
Ne. Einfach richtig machen.
Das Character-Set ist für die Zeichenkodierung der Daten verantwortlich (z.B. UTF-8 vs. ISO-...), nicht für die eigentlichen Daten, die du der DB sendest.

Ich mach mal wieder einen meiner komischen Vergleiche, um es "anschaulicher" zu erklären:
Du machst mir ein Sandwich. Nimmst Toastbrot, streichst Butter drauf, legst Käse, Salatblatt, Wurst, ne Tomatenscheibe und 4 Eierscheiben drauf, würzt mit etwas Pfeffer und haust noch ne Scheibe Toastbrot als Deckel drauf.
Nachdem du mir das Sandwich gegeben hast, beschwere ich mich, dass ich das Sandwich nicht mag, weil Butter drauf is.

Was is hier wohl der Tipp, um es mir recht zu machen?
<lösung>Den Butter einfach weglassen ;)</lösung>