zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Problem mit Datenbankabfrage und Umlauten

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 18.03.2009, 23:08
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Frage Problem mit Datenbankabfrage und Umlauten

Hallo Leute,

ich habe ein Problem mit der Abfrage von Daten mit Umlauten aus meiner Datenbank. Auf die eine Weise funktioniert es nur im Firefox und auf die andere Weise nur im IE, aber in beiden bekomme ich es nicht hin.

Zu den Details:

In meiner Datenbank stehen die Daten UTF8-Konform drin, also (ö = ö) usw. , wenn ich diese Daten dann mit PHP in eine XML-Datei schreibe dann stehen die da dann auch als normale Umlaute drin.

Wenn ich aber nun eine Datenbankabfrage machen möchte und ich habe als Ausgangswerte ein normales Umlaut (z.B. ö) dann funktioniert dies im Firefox aber im IE nicht, und wenn ich den String vorher mit utf8_encode umwandle, dann funktioniert es nur im IE.

Ich weiss nicht wie ich das noch machen soll, und wie ich es hin bekomme damit es bei beiden Browsern funktioniert oder ob wie ich es sonst lösen könnte.

Über Hilfe oder Vorschläge für eine Lösung würde ich mich freuen.
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 18.03.2009, 23:17
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

1. Die Datenbankverbindung auf UTF-8 setzen über PHP (mysql_set_charset('utf8')) oder direkt via SQL (SET NAMES 'utf8')

2. Via header() das PHP Dokument auf UTF-8 setzen: header('Content-Type: text/html; charset=utf-8');

Wichtig - die Codierung heißt überall utf-8, aber bei MySQL utf8 (sprich ohne Bindestrich).

Fertig. ^^
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 18.03.2009, 23:36
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

Jetzt bekomme ich einen Fehler:
Code:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Hier mal mein Code, so wie ich Deinen Code eingebaut habe, evtl. liegt ja da der Fehler.

Code:
<?PHP
	header('Content-Type: text/html; charset=utf-8');
	// Mit Datenbank verbinden
	function db_connect($host,$user,$password,$database) {
		$db = mysql_connect($host, $user, $password) or die(mysql_error());
		mysql_set_charset('utf8',$db);

		$db_database = mysql_select_db($database, $db) or die(mysql_error());
		return mysql_error();
	}
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 18.03.2009, 23:45
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Das Auswählen der DB muss noch vor dem setzen des Charsets gemacht werden.

Allerdings besagt die Fehlermeldung, dass du anscheinend einen falschen Charset für deine Tabellen benutzt - und nicht, wie du geschrieben hattest, UTF-8.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #5 (permalink)  
Alt 18.03.2009, 23:53
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

also die tabellen in der datenbank sind alle standard 'latin1_swedish_ci', nur eben die Umlaute habe ich UTF-8 Konform in die Datenbank geschrieben.

Ich weiss nicht ob ich da grundsätzlich was falsch mache.

Zur Erklärung:
Also ich habe einen Flash-Datei die Ihre Daten von einer XML-Datei bekommt. Diese wird mittels PHP mit Daten aus der Datenbank erzeugt. Wenn ich nun die Umlaute in der Datenbank 'normal' eingebe, also ö anstelle der UTF-8 umsschreibung, dann bekomme ich schrott in meiner xml-datei und damit kommt dann flash nicht mehr klar und liest die datei nicht ein.

wenn ich dann auf einen button in der flash-datei klicke, dann werden die daten wieder zurück an eine php funktion gegeben und diese fragt die datenbank ab um die xml-datei mit den neuen query-daten neu zu schreiben, nur da habe ich eben nun das Problem mit diesen Umlauten.

Fällt Dir dazu evtl. eine komfortablere Lösung ein, oder ist dies der richtige Weg?
Mit Zitat antworten
  #6 (permalink)  
Alt 19.03.2009, 00:12
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Zitat:
also die tabellen in der datenbank sind alle standard 'latin1_swedish_ci'
Ja, eben. Wenn du UTF-8 nutzen willst, dann müssen diese auch auf z.B. utf8_general_ci stehen und nicht mit einem schwedischen (!?!) Charset.

Ansonsten wird das alles nix.
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #7 (permalink)  
Alt 19.03.2009, 00:46
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

so, ich habe jetzt mal die datenbank und die tabellen alle nach 'utf8_general_ci' umgestellt. Ich weiß ja nicht warum diese schwedische einstellung standard ist, aber ich habe nichts eingestellt sondern einfach nur die tabellen erstellt.

nun sind natürlich die umlaute alle nicht mehr zu lesen, da diese ja noch in der codierung in der datenbank stehen, muss ich diese nun alle ändern und normale umlaute draus machen?
Mit Zitat antworten
  #8 (permalink)  
Alt 19.03.2009, 00:54
Benutzerbild von Boris
Tanzender Webentwickler
XHTMLforum-Kenner
 
Registriert seit: 29.07.2004
Ort: Kornwestheim / Stuttgart
Beiträge: 4.925
Boris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer MenschBoris ist ein sehr geschätzer Mensch
Standard

Was sind denn bitte "normale Umlaute" für dich? Normal ist ö ä ü ... wenn du etwas anderes sieht, dann nutzt du an einer Stelle die falsche Codierung.

Welche Version von MySQL nutzt du denn überhaupt?
__________________
My software never has bugs. It just develops random features ...

» DevShack - die Website des freien Webentwicklers Boris Bojic
Mit Zitat antworten
  #9 (permalink)  
Alt 19.03.2009, 00:59
Benutzerbild von onkel-tom
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 13.03.2007
Ort: Berlin
Beiträge: 129
onkel-tom befindet sich auf einem aufstrebenden Ast
Standard

naja, also die ä ö ü usw. sind normale umlaute, und diese habe ich nun mal anstelle der utf8-umschreibung des umlautes in die datenbank eingetragen. ich nutze eine aktuelle version von php daher sollte dies nicht das problem sein.

die datenbank habe ich ja nun umgestellt und den code so wie du ihn geschrieben hast in der php-datei für die datenbankabfrage geändert, aber ich erhalte immer noch 0 treffer, wenn ich als querry z.b. ein wort mit ö abfrage. ich habe mir vor der abfrage den sql-query anzeigen lassen, und da steht das ö ganz normal drin

Ergänzung:
Wenn ich also nun z.B. ein ö in der Datenbank drin stehen habe, und diese mit php in eine xml-datei schreibe, dann bekomme ich kein ö sondern ein sonderbares zeichen, daher muss ich diese mit utf8_encode vorher umwandeln, damit ich in der xml-datei wieder ein ö stehen habe.

Ich weiss eben nicht wie ich es am besten anstelle um diese sache browserkonform für alle zu machen, denn eine abfrage mit umlauten in datenbank ist ja nichts neues denke ich.

Geändert von onkel-tom (19.03.2009 um 01:07 Uhr)
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 19.03.2009, 01:24
Benutzerbild von Pablo
4 8 15 16 23 42
XHTMLforum-Kenner
 
Registriert seit: 31.05.2004
Beiträge: 1.772
Pablo sorgt für eine eindrucksvolle AtmosphärePablo sorgt für eine eindrucksvolle Atmosphäre
Standard

Die php-Datei selbst ist auch utf-8? Nicht, dass die PHP Datei latin1 kodiert ist, und in die DB latin1 Umlaute eingetragen werden.

Zum Thema latin1_swedish_ci: Je nach Einstellung, erhalten neue Tabellen das Charset latin1. In MySQL ist die Standard-Collation für latin1 latin1_swedish_ci (siehe SHOW COLLATION LIKE 'latin1%'; ). Schwedisch vermutlich deshalb, weil MySQL ursprünglich (also bevor es von Sun übernommen wurde) von der schwedischen Firma MySQL AB stammt.

Gruß,
Pablo
__________________
Go Opera!
… oder Chrome. Auch cool.

Geändert von Pablo (19.03.2009 um 01:31 Uhr)
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Umlauten bei der Eingabe in ein Kontaktformular Mathao Serveradministration und serverseitige Scripte 10 25.11.2007 21:21
Design zu CSS/HTML verarbeiten - Problem häufen sich. Grafikamateur CSS 2 06.08.2007 09:57
Problem mit WordPress und dem Bilder Upload Maxefix Serveradministration und serverseitige Scripte 0 19.12.2006 14:58
Problem bei Div's - zwei mal das gleiche und doch nicht ... Niriel CSS 10 09.06.2005 17:39
Problem mit einem CSS Layout nARC CSS 20 21.05.2005 06:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:39 Uhr.