Umlaute aus Wörtern für sql rausnehmen und anschließend wieder anzeigen lassen
Hallo zusammen
wie ich sehe kann man ja keine Datenbanken und Tabellen mit Umlauten abfragen. Denn ich will eine Auswahl an Link Bereichen, den Datenbaken, und zusätzlich untergeordnete Auswahlmöglichkeiten, sprich die Tabellen, anzeigen.
Und ich will aber nicht hinterlegen wie jede einzelne Datenbank oder Tabelle heist. Und so wäre es genial wenn man mit Umlauten wie gewünscht umgehen könnte. Denn dann lautet nur der Name der Datenbank und Tabelle so, aber die Namen können wie gewünscht angezeigt werden.
die folgenden Namen sind von mir nur für dieses Thema kreiert worden. Ich möchte die Möglichkeit bieten Einträge ohne Einschränkungen anlegen zu können und wählte hierfür einfach mal folgende Namen:
Die Datenbank heist zb. Ämter, und dann erhalte ich die Fehlermeldung: DB kann nicht ausgewählt werden
Lautet der Name der Tabelle Ämterverzeichnis, so erhalte ich die Fehlermeldung:
Error:
Table ‚amt.ämterverzeichnis‘ doesn’t exist
Du hast ein Zeichensatzproblem, das liegt aber nicht an mysql. Irgendwo hast du eine Umwandlung der utf-8 Zeichen in den ISO zeichensatz, das geht natürlich schief.
ok nur wie finde ich dieses? Die Namen der Datenbank und Tabelle übergebe ich als Link an die Seite. Und dieses durch urlencode und bzw. dann auch per urldecode auf der Seite. Lasse ich mir per Echo und dann per alert die Namen anzeigen, so werden diese dann auch korrekt angezeigt.
$verbindung=mysql_connect(ini_get(„mysqli.default_host“), $user, $password) or
die(„Es konnte keine Datenbankverbindung hergestellt werden.“);
mysql_select_db($db, $verbindung) or
die(„DB kann nicht ausgewählt werden.“);
mysql_query(„UPDATE $db.$table SET Url = ‚$Adresse‘, Link = ‚$Link‘, Name = ‚$LinkName‘, Bild = ‚$Bild‘, Hoch = ‚$Hoch‘, Breit = ‚$Breit‘, Datei = ‚$Datei‘, Infos = ‚$Infos‘, Daten = ‚$Daten‘ WHERE ID = ‚$LinkID‘“) OR die(„Error: “.mysql_error());
mysql_close($verbindung);
[/PHP]
Und ich erstelle derzeit die Tabellen mit phpmyAdmin und ich hatte die Verzeichnisse und Tabellen im dbdir von server2go einfach umbenannt, was ja auch funktioniert wenn keine Umlaute drinstehen.
Danke für Eure Hilfe, denn wäre toll es hinzubekommen.
OK doch frage ich mich wo das hinsoll? Ich probier gerade mehrere Zeilen/Varianten aus.
Und Nachtrag: Sorry anfangs nicht die Fehlermeldung von mysql beim Öffnen der Datenbank Ämter geschrieben zu haben. Denn diese lautet Error: Unknown database ‚ämter‘
ok dann sehen also meine Zeilen jetzt so aus:
[PHP]$verbindung=mysql_connect(ini_get(„mysqli.default_host“), „root“, „“, „SET NAMES ‚utf8‘“) or
die(„Error: “.mysql_error());
mysql_select_db($db, $verbindung) or
die(„Error: “.mysql_error());
[/PHP]
doch weiterhin bekomme ich die Nachricht
Error:
Unknown database ‚ämter‘
Ich tippe mal drauf, dass Du in $db den Namen „Ämter“ nicht als UTF-8 gespeichert hast. Wenn dein Editor selbst das nicht unterstützt, dann schreib es so:
mysql_select_db(utf8_encode($db), $verbindung) or
die("Error: <br>".mysql_error());
Setzt aber ebenso wie der SET NAMES Befehl voraus, dass die Datenbank wie auch der Datenbankname mit utf8 als Zeichensatz erstellt wurde.
Ach, um das Rätselraten hier mal abzukürzen: Es ist ein Zeichensatzproblem.
Geh etwa diesen Artikel durch und überprüfe, in welchem Zeichensatz die einzelnen Komponenten deiner Anwendung arbeiten/gespeichert (Dateikodierung) sind.
Das tatsächliche Encoding einer HTML-Seite kannst du etwa im Firefox unter „View Page Info → General → Encoding“ einsehen. Die Zeichensätze der DB-Tabellen stehen etwa im phpMyAdmin.