Bei Sprachwechsel eine andere Tabelle auslesen

  • Hallo Traum-Projekt Community,


    ich habe eine common.php welche für die Sprachauswahl der gesamten Webseite dient und sich die Übersetzungen der einzelnen Worte/Sätze der Webseite per Sprachvariablen aus den Languagefiles z.B. lang/lang.de.php , lang.en.php , etc. ausliest und ausgibt. Dies funktioniert auch wunderbar und stellt kein Problem dar. Da ich nun ein Blog in der Webseite intrigiert habe, wessen Beiträge in einer Datenbank untergebracht sind, möchte ich diese nun, je nach Sprachwahl des Besuchers, aus der dementsprechenden Tabelle auslesen und ausgeben.


    Kurz:
    Der Besucher wählt die deutsche Sprache und alles wird aus folgenden Tabelle ausgelesen und ausgegeben...

    PHP
    1. <?php
    2. $sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3
    3. ?>


    ... oder wenn der Besucher z.B. die englische Sprache auswählt, dass dann entsprechend die nachfolgende Tabelle ausgelesen wird ...

    PHP
    1. <?php
    2. $sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3
    3. ?>


    u.s.w.


    common.php


    blog.php


    Die Sprachausgabe funktioniert wunderbar und es werden auch auf allen Unterseiten die vorhandenen Sprachen über die Sprachvariable aus der lang/lang.de.php , lang/lang.en.php , etc. richtig ausgelesen und ausgegeben. Wenn ich nun aber z.B. mit:

    PHP
    1. index.php?lang=en


    die englische Sprache in der Navigation aufrufe, dann werden mir die Blogbeiträge nicht wie gewünscht aus der entsprechenden Tabelle ausgelesen. m.E. sollte es doch mit dem o.g. Code funktionieren - oder sitzt da ein Fehlerteufel drin bzw. irre ich mich da total? :rolleyes:
    Somit meine Frage an die Profis unter euch, wie ich es bewerkstelligen kann, dass je nach gewünschter Sprachwahl auch die entsprechende Tabelle aus der vorhandenen Datenbank ausgelesen und angezeigt werden. :confused:


    Vielen Dank vorab für eure Antworten!
    Gruss 8)

  • Als erstes würde ich zum Testen vor dem foreach folgendes einbauen:

    PHP
    1. echo "get: ".$_GET['lang'].", abfrage: ".$abfrage;


    Dann weißt Du schon mal, ob der Parameter in der url bei deinem Skript ankommt oder nicht.


    Grundsätzlich sieht aber die Vorgehensweise korrekt aus.

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek
    zuerst einmal "vielen Dank" für Deine schnelle Antwort.
    Ich habe Deinen Code vor dem von Dir genannten "foreach" eingefügt und habe im Anschluss daran dann an der entsprechender Stelle auch folgende Ausgabe angezeigt bekommen:


    So dass ich davon ausgehe, dass der Parameter an der URL übergeben wird.
    Wenn ich aber nun auf den Link zur Sprachauswahl, z.B. auf die englische Sprache via:

    PHP
    1. index.php?lang=en


    klicke, dann ändert sich die Sprache dennoch nicht.


    PS: Im übrigen habe ich das PHP-Script von Dir aus einen anderen Posting übernnommen, so das ich Dir an dieser Stelle auch, abseits der hierigen Hilfe, danken möchte 8)

  • Gut, dass wir drüber geredet haben, jetzt sehe ich erst, dass die Variablennamen nicht ganz passen.
    Du verwendest $sql für de und für die Ausführung und $abfrage für alle anderen Sprachen.
    Wenn Du $abfrage durch $sql ersetzt sollte es schon besser aussehen.


    @Cybergreek
    PS: Im übrigen habe ich das PHP-Script von Dir aus einen anderen Posting übernnommen, so das ich Dir an dieser Stelle auch, abseits der hierigen Hilfe, danken möchte 8)


    Daher kommt mir das so bekannt vor ;)
    Freut mich, dass es immernoch nützlich ist.

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek
    Da spricht der Fachmann und nun funktioniert es so wie ich es mir gewünscht habe 8)
    Vielen vielen Dank für Deine Hilfe ohne der ich mir wahrscheinlich Wochenweise den Kopf ausgerissen hätte.
    Sollte ich noch einmal Hilfe benötigen, so würde ich mich sehr freuen, wieder auf Dich zurückgreifen zu dürfen ;)


    Zitat

    Daher kommt mir das so bekannt vor
    Freut mich, dass es immernoch nützlich ist.


    Nunja, wenn man mal nach einer Lösung googelt, dann kommen einen schon Lösungsvorschläge als Ergebnis.
    Aber nicht immer ist es das oder so gelöst wie man wollte - im Gegensatz zu Deiner Lösung im genannten Thread.
    Somit immer noch sehr nützlich und nochmals vielen vielen Dank!!!


    ... und damit auch schöne Grüße nach Griechenland
    von einen nach Belarus ausgewanderten Deutschen :D




    EDIT: Dieses Thema kann also als gelöst markiert und geschlossen werden

  • @Cybergreek
    Jetzt doch noch mal eine kleine Frage zum Thema ...


    Wenn ich die Webseite aufrufe, dann wird bis zum klick auf den Sprachwechsel-Link, nichts an der URL angehangen.
    Das unschöne daran ist, dass es abseits der common.php, im eigentlichen Script, keine "Default"-Angabe bzgl. der Sprache gibt, so das keine Blogbeiträge angezeigt werden, bis die Sprachauswahl stattgefunden hat.
    Jedoch würde ich es gerne noch so haben wollen, dass wenn keine Sprache ausgewählt wurde, dann automatisch die Standardsprache (Default-Angabe in der common.php) gewählt wird. Wenn das noch umzusetzen bzw. miteinander verbinden ließe, dann würde das den Nagel auf dem Kopf setzen ;)



    Edit:
    Mir ist noch etwas aufgefallen ...
    Ich habe auf der Webseite eine Galerie die mit einen "index.php#box" Link in einen Overlay über die komplette Seite geöffnet wird. Wenn ich nun die Sprachauswahl nutze sieht es jedoch so aus: "index.php&lang=de"
    Damit würden auch die Blogbeiträge angezeigt werden, aber diese verschwinden dann auch ganz schnell wieder, wenn ich den Link der Galerie anklicke. Gibt es dazu noch eine Lösung?
    Wenn nicht könnte ich diese auch in einen neuen Fenster öffnen, jedoch wäre es mir bei meinen bisherigen One-Site-Style lieber wenn die Overlay-Variante bestehen bleiben könnte.


    Gruss

    Einmal editiert, zuletzt von php_echo ()

  • Wenn ich die Webseite aufrufe, dann wird bis zum klick auf den Sprachwechsel-Link, nichts an der URL angehangen.
    Das unschöne daran ist, dass es abseits der common.php, im eigentlichen Script, keine "Default"-Angabe bzgl. der Sprache gibt, so das keine Blogbeiträge angezeigt werden, bis die Sprachauswahl stattgefunden hat.
    Jedoch würde ich es gerne noch so haben wollen, dass wenn keine Sprache ausgewählt wurde, dann automatisch die Standardsprache (Default-Angabe in der common.php) gewählt wird. Wenn das noch umzusetzen bzw. miteinander verbinden ließe, dann würde das den Nagel auf dem Kopf setzen ;)


    In diesem Code hast Du ja eigentlich die Default-Sprache auf ru gesetzt:

    PHP
    1. if ($_GET['lang']=="de") { $sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
    2. else if ($_GET['lang']=="en") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
    3. else if ($_GET['lang']=="fr") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
    4. else if ($_GET['lang']=="ru") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }
    5. else { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru LIMIT 3 ORDER BY Name ID LIMIT 3"; }


    Der geht den lang-Parameter durch und wenn er weder de, en, fr noch ru ist, geht er in den else-Zweig.


    Zu der Galerie:
    Das habe ich nicht wirklich verstanden, warum die Blogbeiträge verschwinden sobald Du auf die Galerie klickst. Wird dann die Seite neu geladen? Evtl. hast Du ja einen Link, wo man sich das mal angucken kann.

    Grüße vom Griechen,
    Cybergreek!

  • Cybergreek

    Zitat

    In diesem Code hast Du ja eigentlich die Default-Sprache auf ru gesetzt:

    PHP
    1. if ($_GET['lang']=="de") { $sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
    2. else if ($_GET['lang']=="en") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
    3. else if ($_GET['lang']=="fr") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
    4. else if ($_GET['lang']=="ru") { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }
    5. else { $abfrage = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru LIMIT 3 ORDER BY Name ID LIMIT 3"; }


    Der geht den lang-Parameter durch und wenn er weder de, en, fr noch ru ist, geht er in den else-Zweig.


    Ja, dass durch die Default-Angabe die Sprache auf den, wie der Name "Default" schon sagt, gesetzt wird ist verständlich und so sollte dann auch bei dem ersten Seitenaufruf die Defaultsprache gesetzt werden. Aber und nun das große aber ... es tut sich nichts! Wenn ich die Seite aufrufe, dann habe ich in der Adresszeile lediglich die "MEINE_SEITE.tld/index.php" stehen, aber nicht z.B. "MEINE_SEITE.tld/index.php&lang=de" ;)
    Aber genau da wird m.E. der Fehler liegen! Denn wenn ich Deinen zuvor mitgeteilten Code einfüge, dann wird definitiv der GET Parameter mit übergeben (sprich: &lang=de , o.a.). Somit genau so wie Du schon gesagt hast, dass wenn er weder z.B. "de","en","fr" findet, dass er dann automatisch durch den else-Zweig auf "ru" umstellt.
    Doch genau das tut er eben nicht und frage mich jetzt bitte nicht wieso, denn die eigentliche Sprachumstellung samt den Mini-Blog funktioniert ja einwandfrei - zumindest funktioniert der Mini-Blog einwandfrei wenn ich mindestens einmal eine Sprache manuell ausgewählt habe. Wenn aber jemand mit der Standardsprache vertraut ist, dann wird er diese sicher nicht noch einmal auswählen - warum auch? Und so bleiben diesem Besucher eben die Blog-Einträge vorenthalten, was ich wiederum nicht möchte ;)



    Zitat

    Zu der Galerie:
    Das habe ich nicht wirklich verstanden, warum die Blogbeiträge verschwinden sobald Du auf die Galerie klickst. Wird dann die Seite neu geladen? Evtl. hast Du ja einen Link, wo man sich das mal angucken kann.


    Also das ist so ...
    Die bestehende "One-Site-Website" wollte ich um eine Galerie erweitern. Aber dieses wollte ich nicht auf einer zweiten gesonderten Seite, denn dann wäre das keine "One-Site-Website" mehr ;)
    Demnach bin ich darauf gekommen das ganze mittels JS zu lösen und da wird dann mittels einem Link (MEINE_SEITE.tld/index.php#galerie) ein Overlay über der gesamten Website gelegt. Doch da ist der Haken bei der Sache! Denn wenn ich diesen Link anklicke und dann den Overlay wieder ausblende, dann ist zwar alles noch in der vorherigen Sprache, aber genau die Mini-Blog Einträge sind wieder verschwunden. Ehrlich gesagt kann ich genau den Punkt nicht nachvollziehen. Denn wenn die Seite doch weiterhin in der selben Sprache angezeigt wird, dann sollte es doch auch der Mini-Blog tun. Doch das tut er eben nicht :confused:


    Zu Deinen weiteren Fragen ...
    1) Die Seite wird nicht neu geladen, da es zum einen eine "One-Page-Site" ist und zudem auch kein reload stattfindet
    2) Einen Link kann ich Dir leider nicht anbieten, denn die Seite befindet sich hier bei mir auf meinen Heimischen auf Ubuntu installierten lokalen Apache Server - zumindest noch bis dahin, bis die Seite funktioniert ;) 8)


    Ich hoffe, dass ich mit meinen jetzigen Worten mein Problem besser beschreiben konnte.
    Zwar ist die Site im Moment noch nicht online, aber ich wäre gerne bereit Dir die benötigten Dateien zu posten oder aber anderwertig zukommen zu lassen.


    Nochmals vielen Dank für Deine Mühe und Hilfestellung(en)
    Gruss aus Belaurs
    php_echo

  • Fangen wir erstmal damit an:


    Ja, dass durch die Default-Angabe die Sprache auf den, wie der Name "Default" schon sagt, gesetzt wird ist verständlich und so sollte dann auch bei dem ersten Seitenaufruf die Defaultsprache gesetzt werden. Aber und nun das große aber ... es tut sich nichts! Wenn ich die Seite aufrufe, dann habe ich in der Adresszeile lediglich die "MEINE_SEITE.tld/index.php" stehen, aber nicht z.B. "MEINE_SEITE.tld/index.php&lang=de" ;)
    Aber genau da wird m.E. der Fehler liegen! Denn wenn ich Deinen zuvor mitgeteilten Code einfüge, dann wird definitiv der GET Parameter mit übergeben (sprich: &lang=de , o.a.). Somit genau so wie Du schon gesagt hast, dass wenn er weder z.B. "de","en","fr" findet, dass er dann automatisch durch den else-Zweig auf "ru" umstellt.
    Doch genau das tut er eben nicht und frage mich jetzt bitte nicht wieso, denn die eigentliche Sprachumstellung samt den Mini-Blog funktioniert ja einwandfrei - zumindest funktioniert der Mini-Blog einwandfrei wenn ich mindestens einmal eine Sprache manuell ausgewählt habe. Wenn aber jemand mit der Standardsprache vertraut ist, dann wird er diese sicher nicht noch einmal auswählen - warum auch? Und so bleiben diesem Besucher eben die Blog-Einträge vorenthalten, was ich wiederum nicht möchte ;)


    Hier hilft auf jeden Fall wieder ein echo.
    Also sowas:

    PHP
    1. if ($_GET['lang']=="de") { echo "ifde";$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
    2. else if ($_GET['lang']=="en") { echo "ifen";$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
    3. else if ($_GET['lang']=="fr") { echo "iffr";$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
    4. else if ($_GET['lang']=="ru") { echo "ifru";$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }
    5. else { echo "else";$sql = "SELECT Blogtitel, Blogdate, Blogpost FROM blog_ru LIMIT 3 ORDER BY Name ID LIMIT 3"; }


    So weißt Du zumindest, in welchem Zweig Du bei egal welchem Link landest.

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergeek

    Zitat

    Hier hilft auf jeden Fall wieder ein echo
    ...
    So weißt Du zumindest, in welchem Zweig Du bei egal welchem Link landest.


    Eingefügt und genau das gekommen was auch erwartet wurde, nämlich beim klick auf die Sprachauswahl "de" = ifde , bei "en" = ifen , bei "fr" = iffr und bei "ru" ifru. Also das was nach Deinem Code her auch angezeigt werden sollte wird auch angezeigt. Damit wird also definitiv das GET der Sprachauswahl (aus der common.php) übermittelt und genau das ist das was mir letztlich den Kopf zerbricht.
    Der Besucher wählt die gewünschte Sprache und die wird ihm letztlich auch angezeigt. Lediglich wenn der Besucher die Website zum ersten mal besucht wird im Mini-Blog rein gar nichts angezeigt - weder "de" , "en" , "fr" oder "ru". Alle anderen Worte aus den Sprachdateien werden in der Website angezeigt. Nur im "Mini-Blog" nichts!
    Dies geschieht erst wenn ich die Sprachauswahl getätigt habe - sprich: klick auf "de" und der Blog (und nat�rlich auch die Website) wird in "de" angezeigt. Wenn "en" dann in "en" usw.
    Ich begreife das einfach nicht, warum das nicht beim ersten Seitenaufruf funktioniert? :confused:
    Das einzigste was ich mir als Fehlerursache vorstellen kann ist, wie bereits gesagt, dass wenn ich die Seite zum ersten mal aufrufe, dass die dann in der Adresszeile (URL) lediglich: index.php angezeigt wird und damit auf die Default Sprache zurückgegriffen wird. Erst wenn ich die Sprachauswahl tätige, dann steht in der Adresszeile: index.php?lang=de oder eben index.php?lang=en , etc. etc.


    Lösungsgedanken wären m.E. ...
    1)
    Beim ersten Aufruf der Website eine Weiterleitung auf xyz- index.php?lang=de (o.a. Sprache)
    Nur wäre dieses nur mit einer Spracherkennung (des Browsers) wirklich Sinnvoll, oder
    2)
    Die GET Variablen, wie auch immer (ratlos), so anpassen, dass eben mittels else gleich beim ersten Seitenaufruf nicht nur die Default Sprache angezeigt wird, sondern eben auch die Mini-Blog Einträge der Default Sprache. Doch dies ist/wäre nur möglilch wenn eben auch beim ersten Seitenaufruf die URL automatisch wir folgt verändert wird:
    index.php?lang=de . Das Blau-markierte muss in diesen Fall, wie auch immer, beim ersten Seitenaufruf an die URL. Die große Frage dabei ist, wie so meistens immer, WIE? :confused:


    Gruss



    PS:
    Wenn Du nichts dagegen hast, dann würde ich nach funktionierenden Abschluss, den Mini-Blog hier im Forum allen anderen zur freien Verfügung bereitstellen (als Quellcode sowie als .rar Paket). Allerdings nur, wenn Du nichts dagegen hast, denn schließlich beinhaltet dieser Mini-Blog auch ein Teil von Dir ;)

  • Eingefügt und genau das gekommen was auch erwartet wurde, nämlich beim klick auf die Sprachauswahl "de" = ifde , bei "en" = ifen , bei "fr" = iffr und bei "ru" ifru. Also das was nach Deinem Code her auch angezeigt werden sollte wird auch angezeigt.
    ...
    Lediglich wenn der Besucher die Website zum ersten mal besucht wird im Mini-Blog rein gar nichts angezeigt - weder "de" , "en" , "fr" oder "ru".


    Die große Frage wäre, was beim ersten Aufruf durch das oben genannte echo angezeigt wird. Erwarten würde ich "else".



    PS:
    Wenn Du nichts dagegen hast, dann würde ich nach funktionierenden Abschluss, den Mini-Blog hier im Forum allen anderen zur freien Verfügung bereitstellen (als Quellcode sowie als .rar Paket). Allerdings nur, wenn Du nichts dagegen hast, denn schließlich beinhaltet dieser Mini-Blog auch ein Teil von Dir ;)


    Klar, habe ich kein Problem mit. Schließlich ist der mini-Anteil von mir eh schon hier im Forum verfügbar ;)

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek

    Zitat

    Die große Frage wäre, was beim ersten Aufruf durch das oben genannte echo angezeigt wird. Erwarten würde ich "else".


    Nö ... also mir wird das ausgegeben, was ich bereits geschrieben habe. Das wird wohl auch größtwahrscheinlich daran liegen, dass eben (je nach Sprachauswahl) durch das vorherige echo das z.B. ifde , ifen , etc. etc. ausgegeben wird. Aber "Ja" die else waht auch dabei - öhm ausgegeben worden ;)
    Wie dem auch sei, eine Lösung dazu habe ich dennoch nicht und mir fällt auch nichts ein, warum das so ist wie es ist und ich so nicht will :confused:


    Gruss



    Edit:
    Ich habe den "Mini-Blog" nun hier im Traum-Projekt mal zum Download angeboten und dafür an geeigneter Stelle ein neues Thema dazu eröffnet. Wer interessiert an diesem Mini-Blog ist, der findet den Mini-Blog unter:
    Webdesign & Coding -> Traum-Dynamik -> Traum-Scripts ->"[Script] Mini-Blog"

    Einmal editiert, zuletzt von php_echo ()

  • @Cybergreek
    Entschuldige bitte vorab, dass wenn ich Dir jetzt wieder mit etwaigen Fragereien auf den Wecker gehe. Doch würde ich gerne wissen wie ich es anstelle, dass wenn die Webseite eines Besuchers aufgerufen wird, dass diese dann nicht wie üblich auf die index.php landen sondern entweder ...
    a) auf eine vordefinierten Sprachlink wie z.B.: index.php?lang=de
    ... oder,
    b) mittels Browserspracherkennung auf die jeweilige Sprachdatei zurückgegriffen wird.


    Ich wäre Dir wirklich sehr Dankbar wenn Du mir da unter die Arme greifen könntest, wie ich dieses bewerkstelligen kann bzw. welche der beiden genannte Variante die bessere wäre - wenn es nicht sogar noch eine ggfls. sogar noch bessere Variante gibt ;)


    Gruss

  • Doch würde ich gerne wissen wie ich es anstelle, dass wenn die Webseite eines Besuchers aufgerufen wird, dass diese dann nicht wie üblich auf die index.php landen sondern entweder ...
    a) auf eine vordefinierten Sprachlink wie z.B.: index.php?lang=de
    ... oder,
    b) mittels Browserspracherkennung auf die jeweilige Sprachdatei zurückgegriffen wird.


    Zu b) kann ich Dir leider nicht helfen, damit kenne ich mich nicht aus.


    Zu a)
    Ich würde nicht weiterleiten sondern den Default auf irgendwas setzen, so wie Du es auch schon gemacht hast.
    Zur Not kannst Du auch sowas machen in einer Datei, die zu Beginn irgendwo ausgeführt wird:

    Code
    1. if ($_GET['lang']==""){$_GET['lang']="de";}


    Aber das ist unsauber, da Du dann immer auf "de" wechseln würdest, sobald der Parameter nicht übergeben wird. Eigentlich müsstest Du Dir irgendwie merken, wenn eine Sprache ausgewählt wurde:
    - durch Cookies
    - durch Session-Variablen
    - durch einen Teil in der url (http://de.domain.com/... bzw. http://www.domain.com/de/...)

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek

    Zitat

    Ich würde nicht weiterleiten sondern den Default auf irgendwas setzen, so wie Du es auch schon gemacht hast.


    Das ist es ja, was zwar vorhanden ist, aber letztlich nicht so funktioniert wie es sollte. Die eigentliche Sprachweiche funktioniert Tadellos. Das Problem liegt nur daran, dass wenn ich Dir hier z.B. ein Link, zum Beispiel http://www.MeineWebseite.de zusende und Du diese dann folgst, dann siehst Du zwar alles auf der Webseite in der Default-Sprache, aber keine Beiträge des Blogs!
    Dies liegt einfach daran, dass wenn Du die Seite zum ersten mal aufrufst, dass Du dann zwar die Default-Sprache angezeigt bekommst, aber die Blog-Einträge erst dann siehst, wenn Du nochmals auf Dein Sprachlink klickst.


    Mit anderen Worten ...
    Du besuchst zum ersten mal "http://www.MeineWebseite.de" und ...
    1) Du wirst die Default Sprache der Webseite zu sehen bekommen (ohne das Blog Einträge angezeigt werden)
    2) Du siehst in der Adresszeile des Browsers lediglich: http://www.MeineWebseite.de/index.php


    Wenn Du dann nochmal den Sprachwechsler anklickst, dann steht in der Adresszeile http://www.MeineWebseite.de/index.php?lang=de und damit werden dann auch die Blogeinträge angezeigt. Es liegt also definitiv daran, dass beim ersten Seitenaufruf nicht die Sprachvariable mit übergeben wird und somit auch die Blogeinträge nicht angezeigt werden. Nur wo und wie kann ich dieses Problemchen lösen?
    In der common.php oder aber im Blogscript?


    Wenn Du mir dabei nochmal helfen könntest, dann wäre ich Dir endlos Dankbar! 8)


    Gruss


  • Wenn Du dann nochmal den Sprachwechsler anklickst, dann steht in der Adresszeile http://www.MeineWebseite.de/index.php?lang=de und damit werden dann auch die Blogeinträge angezeigt. Es liegt also definitiv daran, dass beim ersten Seitenaufruf nicht die Sprachvariable mit übergeben wird und somit auch die Blogeinträge nicht angezeigt werden. Nur wo und wie kann ich dieses Problemchen lösen?


    Wenn in der Adresszeile ...?lang=de steht, dann bedeutet das, dass in der Variablen $_GET['lang'] "de" drin steht.
    Wenn es nicht in der Adresszeile drin steht, dann bedeutet das, dass die Variable leer ist.


    Wichtig ist also, zu verstehen, was hiermit ist:

    In der common.php oder aber im Blogscript?


    Das hängt davon ab, wie Dein Blogscript eingebunden wird. Wenn Du es per iframe einbindest, dann musst Du den default dort auch definieren. Wenn es per include() oder require() serverseitig in Deiner index.php eingebunden ist, und die common.php vorher dort genau so eingebunden ist, dann reicht es in der common.php.


    Deswegen auch die ganzen echos weiter oben (bzw. auf der ersten Seite). Damit Du verstehst, wo die Variable $_GET['lang'] welchen Wert hat.

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek

    Zitat

    Wenn in der Adresszeile ...?lang=de steht, dann bedeutet das, dass in der Variablen $_GET['lang'] "de" drin steht.
    Wenn es nicht in der Adresszeile drin steht, dann bedeutet das, dass die Variable leer ist.


    Das kommt nun ganz darauf an wie Du dies genau meinst?
    Beim ersten Seitenaufruf, wird wie bei jeder Webseite die index.php (zumindest bei mir eine .php Datei) aufgerufen.
    Sprich in der Adresszeile steht dann damit: index.php
    (Allerdings wird durch die common.php automatisch die Default-Sprache angezeigt - also: Deutsch.)
    Wenn ich jedoch "Englisch" in der Sprachauswahl anklicke, dann steht in der Adresszeile: index.php?lang=en


    Zitat

    Wichtig ist also, zu verstehen, was hiermit ist:


    Dazu vorab gesagt ...
    1.) Das Blog-Script ist nicht per iFrame eingebunden
    2.) Das Blog-Script ist auch nicht per include oder require eingebunden
    3.) Die common.php wird direkt an erster Stelle (über alles) eingebunden
    Das Blog-Script selbst habe ich direkt in der index.php intrigiert anstatt dieses zu includieren oder per iFrame einzubinden. Lediglich das eintragen von neuen Blog-Einträgen in der Datenbank geschieht im ACP (Backend). Aber daran kann es ja nicht liegen, denn das Blog-Script im Frontend liest die Daten von dort aus der Datenbank heraus.


    Zitat

    Damit Du verstehst, wo die Variable $_GET['lang'] welchen Wert hat.


    Schon klar, dass dies der Verständlichkeit halber ist ;)
    Nach diesbezgl. erkenntnissen kommt die "$_GET['lang'] Variable eindeutig aus der common.php mit wessen letztlich die Sprachdateien eingebunden werden.


    Letztlich würde ich Dich darum bitten mal ein Blick auf das ganze zusammen zu werfen. Vielleicht findest Du ja den Fehler im Quellcode. Denn es wird zwar immer beim ersten Seitenaufruf die Default-Sprache angezeigt, aber eben nicht die Blog-Einträge (zumindest nicht so lange ich nicht auf die Sprachauswahl klicke) und das Problemchen bricht mir echt bald noch das Genick. Denn dieses kann ich nun wirklich nicht mehr nachvollziehen warum und wieso das so ist. Den Mini-Blog findest Du hier im Forum unter "Traum-Scripts" (wobei das mit den Problemchen eher weniger ein Traum, sondern eher ein Albtraum ist :( ;) ).


    Nochmals vielen Dank für Deine ständigen Bemühungen und entschuldige bitte auch gleichzeitig meine ständigen Fragereien mit welchen ich Dir sicher schon auf die Nerven falle. Doch dies ist keine Absicht, denn wenn ich den Fehler nachvollziehen könnte, dann könnte ich diesen auch beseitigen - aber wenn man diesen nicht nachvollziehen kann, dann weiß man auch nicht woher dieser kommt und kann diesen auch nicht korrigieren.
    Somit bitte ich Dich nochmals ums Hilfe - Danke!


    Gruss

  • Probier mal das hier:

    PHP
    1. if ($_GET['lang']=="de") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
    2. else if ($_GET['lang']=="en") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
    3. else if ($_GET['lang']=="fr") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
    4. else if ($_GET['lang']=="ru") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }


    durch das hier zu ersetzen:

    PHP
    1. if ($lang=="de") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_de ORDER BY ID ASC LIMIT 3"; }
    2. else if ($lang=="en") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_en ORDER BY ID ASC LIMIT 3"; }
    3. else if ($lang=="fr") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_fr ORDER BY ID ASC LIMIT 3"; }
    4. else if ($lang=="ru") { $sql = "SELECT Blogtitle, Blogdate, Blogpost FROM blog_ru ORDER BY ID ASC LIMIT 3"; }


    Erklärung:
    In Deiner common.php prüfst Du $_GET, $_SESSION und $_COOKIE und setz in $lang die anzuzeigende Sprache.
    Diese Variable solltest Du im gesamten Skript dann auch weiter verwenden und nicht wieder an die $_GET dran gehen.

    Grüße vom Griechen,
    Cybergreek!

  • @Cybergreek

    Zitat

    Probier mal das hier:
    ... gekürztes Zitat ...
    In Deiner common.php prüfst Du $_GET, $_SESSION und $_COOKIE und setz in $lang die anzuzeigende Sprache.
    Diese Variable solltest Du im gesamten Skript dann auch weiter verwenden und nicht wieder an die $_GET dran gehen.


    Also um das ganze jetzt noch einmal übersichtlich, verständlich und nachvollziehbar zu halten nun noch einmal die nach Deinen Rat angepassten und benötigten Dateien (common.php & index.php in welchen sich letzteres das "Mini-Blog" Script befindet) ...


    common.php



    index.php


    Ich habe den Code, wie von Dir beschrieben, eingesetzt und ausprobiert, aber wenn ich die Seite aufrufe dann ...
    1.) wird zwar per common.php die Default Sprache genutzt und kann/könnte dieses auch erfolgreich ändern
    aber ...
    2.) werden mir immer noch keine Blog-Einträge angezeigt wenn ich die Seite zum ersten mal aufrufe :(


    Auch mir Deinem geposteten Code werden die Blogbeiträge erst angezeigt, wenn ich die Sprachauswahl anklicke, aber nicht ein einziger Blogbeitrag wenn ich die Seite zum ersten mal aufrufe. Sprich wie schon zuvor geschrieben:
    index.php in der URL = keine Blogbeiträge | index.php?lang=de = Blogbeiträge werden angezeigt


    Das unschöne an der ganzen Sache ist das, dass trotz Deinen nun mittgeteilten Code, mit der gleichen Variable $lang, mir immer noch nicht beim Aufruf der Webseite die, mich noch zum Haare rausrupfen bringenden, Blogeinträge angezeigt werden :confused:


    ... oder habe ich jetzt etwas übersehen bzw. einfach zu bl*d angestellt. Wenn dem so ist, dann hau ruhig zu, denn das würde meinen derzeitig qualm aufseigenden Kopf sicher auch gut tun :rolleyes:


    Es muss doch irgendwie möglich sein, dieses Script so zum laufen zu bringen, dass es so Multilingual ist, dass auch anfangs schon Blogeinträge angezeigt werden - ohne das erst eine Sprachauswahl getroffen werden muss. Sollte dies gelingen, dann werde ich mir auch weiterhin die Zeit dafür nehmen, dieses Script Versionsaufsteigend nach und nach noch besser zu gestalten bzw. auch mit weiteren Funktionen auszustatten. Jedoch aber nicht mit zu vielen Funktionen, denn es soll seinen Namen schon alle Ehre machen und ein "Mini-Blog" bleiben, der sich u.a. auch sehr leicht in eine vorhandene Webseite intrigieren lässt (ist ja eh nur, abseits des ACPs, ein kleiner Bruchteil an Code der eingesetzt werden müsste). Natürlich würde ich diesen "Mini-Blog" dann auch hier, unter Berücksichtigung Deiner Nick-Angabe, allen anderen zur freien Verfügung zu stellen. 8)



    PS:
    Hast Du die Möglichkeit das "Mini-Blog" Script auf einen lokalen Server (Xamp, Apache, o.ä.) auszuprobieren?
    Ich denke das würde die meinige Problembeschreibung erleichtern und Du könntest Dir damit dann selbst ein Bild von der Problematik machen - ist sicher einfacher es auch zu betrachten als nur in Codezeilen zu lesen ;)
    Wobei das aber nun nicht bedeuten soll/muss, dass Du Dir diese Arbeite antun sollst/musst. Aber ich und sicher auch der/die ein(r) oder andere(r) wäre sicher auch sehr erfreut über ein solches Script :)


    Gruss