Hallo zusammen
Ich steh bei einer Datenbankabfrage an... Es geht darum, dass ich aus einer Tabelle alle Einträge einer Unterseite der Website in der gewählten Sprache auslesen möchte.
Angenommen, ich habe eine Tabelle mit der folgenden Struktur:
id key lang text
1 form1_eintrag1 de Dies ist mein erster Text
2 form1_eintrag1 en This is my first text
3 form1_eintrag2 de Zweiter Text
4 form1_eintrag2 en Second text
5 form1_eintrag3 de Dritter Text
6 form2_eintrag1 de Formular zwei, Eintrag 1
7 form2_eintrag1 en Second form, first entry
Die Standardsprache ist Deutsch (de); für jeden key ist sicher immer ein deutscher Eintrag in der Datenbank. Wenn aber z.B. Englisch gewählt ist (en), kann es sein, dass ein Eintrag noch nicht übersetzt wurde (z.B. ID 5). In diesem Fall soll für diesen key der deutsche Eintrag selektiert werden.
Das Resultat sollte für den Bereich form1_ demnach so aussehen, wenn Deutsch gewählt wurde:
1 form1_eintrag1 de Dies ist mein erster Text
3 form1_eintrag2 de Zweiter Text
5 form1_eintrag3 de Dritter Text
Und so, wenn Englisch gewählt wurde:
2 form1_eintrag1 en This is my first text
4 form1_eintrag2 en Second text
5 form1_eintrag3 de Dritter Text
Ich hab's so probiert:
SELECT * FROM `test` WHERE `key` LIKE 'form1_%' AND (`lang` = 'en' OR `lang` = 'de') GROUP BY `key`;
Das ergibt folgendes Resultat:
1 form1_eintrag1 de Dies ist mein erster Text
3 form1_eintrag2 de Zweiter Text
5 form1_eintrag3 de Dritter Text
Wie kann ich das Resultat so sortieren, dass zuerst meine Abfrage auch für den zweiten Fall klappt? Es wäre natürlich wenn das Ganze auch funktionieren würde, wenn die Zweitsprache z.B. be wäre (also im Alphabet vor de).
Ich bin froh um jeden Tipp!
Herzlichen Dank und liebe Grüsse
Michèle
Ich steh bei einer Datenbankabfrage an... Es geht darum, dass ich aus einer Tabelle alle Einträge einer Unterseite der Website in der gewählten Sprache auslesen möchte.
Angenommen, ich habe eine Tabelle mit der folgenden Struktur:
id key lang text
1 form1_eintrag1 de Dies ist mein erster Text
2 form1_eintrag1 en This is my first text
3 form1_eintrag2 de Zweiter Text
4 form1_eintrag2 en Second text
5 form1_eintrag3 de Dritter Text
6 form2_eintrag1 de Formular zwei, Eintrag 1
7 form2_eintrag1 en Second form, first entry
Die Standardsprache ist Deutsch (de); für jeden key ist sicher immer ein deutscher Eintrag in der Datenbank. Wenn aber z.B. Englisch gewählt ist (en), kann es sein, dass ein Eintrag noch nicht übersetzt wurde (z.B. ID 5). In diesem Fall soll für diesen key der deutsche Eintrag selektiert werden.
Das Resultat sollte für den Bereich form1_ demnach so aussehen, wenn Deutsch gewählt wurde:
1 form1_eintrag1 de Dies ist mein erster Text
3 form1_eintrag2 de Zweiter Text
5 form1_eintrag3 de Dritter Text
Und so, wenn Englisch gewählt wurde:
2 form1_eintrag1 en This is my first text
4 form1_eintrag2 en Second text
5 form1_eintrag3 de Dritter Text
Ich hab's so probiert:
SELECT * FROM `test` WHERE `key` LIKE 'form1_%' AND (`lang` = 'en' OR `lang` = 'de') GROUP BY `key`;
Das ergibt folgendes Resultat:
1 form1_eintrag1 de Dies ist mein erster Text
3 form1_eintrag2 de Zweiter Text
5 form1_eintrag3 de Dritter Text
Wie kann ich das Resultat so sortieren, dass zuerst meine Abfrage auch für den zweiten Fall klappt? Es wäre natürlich wenn das Ganze auch funktionieren würde, wenn die Zweitsprache z.B. be wäre (also im Alphabet vor de).
Ich bin froh um jeden Tipp!
Herzlichen Dank und liebe Grüsse
Michèle