Ausgabe $array in Combobox

Schönen Sonntag,

das mit mysql_query habe ich beachtet! Funktioniert jetzt auch alles! Nun fiel mir aber auf, das Orte mit Umlauten als null dargestellt werden. Gelesen und getestet habe ich mittlerweile fast alles, aber es funktioniert nicht. Vielleicht kannst du mir dabei nochmal helfen!? Dankeeee
 
Gehts darum, das du einen Ort "Brunsbüttel" hast, der in der DB auch als Brunsbüttel abgelegt ist, aber trotzdem nicht gefunden wird?

Kann mehrere Ursachen haben:

- MySQL-Tabelle ist als Unicode angelegt worden (oder nicht)
- PHP-Datei hat Unicode-Format (oder nicht)
- Verbindung zur DB ist im Unicode-Format (oder nicht)

Punkt 1: Findest du mit phpMyAdmin raus, in den Eigenschaften der Tabelle sollte unicode stehen (utf8_general_ci) - wäre gut
Punkt 2: Kannst du in einer guten IDE oder einem guten Editor (bspw. Notepad++) rausfinden - wäre gut, wenn das Unicode (UTF-8) steht
Punkt 3: In der Regel ist das Verbindungsencoding vom Client zum Server per php.ini definiert, meistens ist das ISO also nicht Unicode. Du kannst die Verbindung zwingen, Unicode zu verwenden, in dem du direkt nach dem Verbinden folgende SQL-Queries sendest:

SQL:
SET NAMES 'utf8';
SET CHARACTER SET 'utf8';
 
Das ist die Standard-Kollation, ja. Ich erstelle meine neuen Datenbanken bereits immer mit Unicode, daher werden auch alle Spalten bereits im Unicode angelegt. Du kannst die Kollation nachträglich ändern, wenn du das willst, oder dafür sorgen, das alle Verbindungen immer das gleiche Encoding haben.

Wobei Schwedisch für unsere deutschen Verhältnisse ohnehin nicht schlimm ist, die haben auch die Umlaute (und weitere) wie wir.

Hast du mal versucht, in phpMyAdmin deinen Query auszuführen? Was passiert da?
 
Hoffentlich habe ich das jetzt richtig verstanden!? Dein Code sql ergab:

PHP:
SET NAMES 'utf8';# MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).

SET CHARACTER SET 'utf8';# MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).
 
Nein, ich meinte eigentlich den Select, der dir die Daten für deine Combox raus holt ;-)

Also der Teil für die num_rows (die Zahl in der Klammer), denn das ist ja dein Problem oder?
 
ah, also die Abfrage liefert mir das richtige Ergebnis zurück! Wie gesagt Orte mit Umlauten, in diesem Falle ü werden nicht angezeigt bzw. als null im Dropdown dargestellt dargestellt!
 
Es müsste im Dropdown stehen "München (26)" - Angezeigt wird allerdings "null" - sprich weder der Ort noch die Anzahl und das scheint an dem Umlaut "ü" zu liegen, da alle anderen Orte ohne Umlaute richtig dargestellt werden!
 
Das null kann eigentlich nur durch das JS kommen. MySQL liefert evtl. "verkrüppelte" oder leere Ausgaben, aber nicht "null". Du solltest evtl. von vorne bis hinten alles als Unicode umstellen, das ist jetzt zwar etwas aufwendiger, macht aber in Zukunft die wenigeren Probleme. Vergiss dann nicht, auch einen Header zu senden, der die Ausgabe als Unicode an den Browser schickt:

PHP:
header("Content-Type: application/json; charset=utf-8"); // wir liefern JSON an den Browser aus

Desweiteren solltest du in dem HTML einen Meta-Tag für den Content-Type und das Charset anlegen:

HTML:
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

Denke auch bitte daran, deine sämtlichen Dateien auf Unicode umzustellen. Dazu öffnest du sie bspw. in Notepad++ und gehst auf Menü "Kodierung" und da auf "Unicode ohne BOM". Dann wie gesagt, die zwei SQL-Queries direkt nach mysql_connect() mittels mysql_query() ausführen. Datenbank-Tabellen müssen dann auch in utf8_general_ci sein.
 
Zurück