Button Value merken und Seite neu laden

  • Hallo zusammen,


    ich habe ein kleines Formular gebaut, in dem meine Mitarbeiter die angezeigten Daten/Werte unterschreiben können und ich bekomme diese dann als PDF Datei mit der Unterschrift per E-Mail zugeschickt.


    Klappt alles super, auch responsive auf dem Handy/Tablet.


    Die Links die die Mitarbeiter bekommen sind alle spezifisch, darin enthalten ist auch die Muttersprache des Mitarbeiters, nicht im Link in der URL, sondern im dahinter liegenden PHP Script, welches die Daten aus einer Datenbank liest und dem Kollegen dann anzeigt.


    Beispiel:

    Herr Meier bekommt von mir für Juli 2023 den Link zugeschickt. Wenn er diesen Link aufruft, lädt es im Hintergrund die aktuellen Daten für Herrn Meier im Juli 2023, ruft er diese erneut auf, kann es sein die sind aktualisiert. Da Herr Meier als Muttersprache deutsch bei seinen Stammdaten hinterlegt hat, bekommt er die Seite auf deutsch angezeigt. Möchte Herr Meier aber die englische Seite lesen, weil er über Nacht seine Muttersprache verloren hat, kann er auf die englische Flagge klicken und soll dann die Seite auf englisch angezeigt bekommen.


    Die Buttons mit den Flaggen habe ich oben links auf der Website in einem eigenen Form eingebunden.


    Wichtig ist, es gibt in der Datenbank eine Tabelle, die die ganzen Übersetzungen gespeichert hat und dort abruft, also wenn Muttersprache = deutsch, dann werden aus der Tabelle Uebersetzung die Werte aus der spalte "deutsch" gezogen. Hat der Mitarbeiter aber englisch als Muttersprache, werden beim Seitenaufruf die Werte aus der Spalte "englisch" in der Tabelle Uebersetzung geladen.


    Mein Gedanke war, wenn der Mitarbeiter die deutsche Seite geladen hat, er aber auf englisch umschalten will, klickt er oben im Form auf die englische Flagge, die Seite lädt es neu und statt den Paramter sprache aus dem Mitarbeiterstamm, wird die angeklickte Sprache genommen.


    Kann ich das so lösen?


    MfG


    Erik

  • Hi Erik,


    Mein Gedanke war, wenn der Mitarbeiter die deutsche Seite geladen hat, er aber auf englisch umschalten will, klickt er oben im Form auf die englische Flagge, die Seite lädt es neu und statt den Paramter sprache aus dem Mitarbeiterstamm, wird die angeklickte Sprache genommen.


    Kann ich das so lösen?

    Ich würde die gewählte Sprache einfach in ein Cookie stecken.

    Das PHP-Skript prüft ihn dann.

    Ist der Cookie gesetzt, nimm die Sprache, ansonsten den Standard.

  • Mit PHP z.B.:

    PHP
    $cookie_opt = array("expires" => time() + (86400 * 30), "path" => "/", "domain" => "DOMAIN_HALT", "secure" => false, "httponly" => false, "samesite" => "Lax");
    
    setcookie("LANG","DE/EN/...",$cookie_opt);



    Mit Javascript z.B.:

    JavaScript
    document.cookie = "LANG=DE/EN/...; max-age=86400*30; path=/; domain=DOMAIN_HALT; samesite=lax";
  • und einfach einen button, der die seite neu lädt und in der url im browser dabei ein parm2=englisch dranhängt?

    Unter anderem z.B. so, ja.

    Ich würde es aber lieber ohne Neuladen umsetzen.


    Die Flaggen nicht in eine Form, sondern einfach als Buttons mit einer Javascript-Funktion, welche dann den Cookie setzt.


    Im PHP-Skript dann einfach abfragen:

    PHP
    $final_lang = ((isset($_COOKIE["LANG"]) ? $_COOKIE["LANG"] : STANDARD_HALT...));
  • das ist das letzte was mir fehlt, mein button:


    Code
    <div class="col-2 button_flags">
                                <input type="image" src="./src/css/images/hu.png" alt="ungarisch" name="parm2" value="ungarisch" id="button-ungarisch" onclick="window.location.reload(true)">
                            </div>

    dann macht er ?parm2.x=8&parm2.y=6 an die url dran, anstatt ?parm2=ungarisch... wo kommt die.x=8 und .y=6 her? Sind das die Koordinaten wo der Button sich befindet?


    würde es wirklich lieber über den refresh lösen

  • Ok, kleiner Fehler von mir.

    Ohne Neuladen wäre nur, wenn man die Sprachdaten dynamisch z.B. mit Ajax hineinlädt.


    Ansonsten halt z.B. so:

    JavaScript
    function set_lang(l)
    {
        // Hier entweder Sprachdaten laden
        // ...
    
        // oder Cookie setzen
        document.cookie = "LANG=" + l + "; max-age=86400*30; path=/; domain=DOMAIN_HALT; samesite=lax";
        location.reload();
    }


    HTML
    <div class="col-2 button_flags">
        <input type="image" src="./src/css/images/hu.png" alt="ungarisch" name="parm2" value="ungarisch" id="button-ungarisch" onclick="set_lang('ungarisch')">
    </div>


    Und dann wie oben im PHP-Skript reagieren.


    wo kommt die.x=8 und .y=6 her? Sind das die Koordinaten wo der Button sich befindet?

    Das ist Standardverhalten bei "type=image", die Mauskoordinaten...

  • ich rufe ja die übersetzten Wörter beim Aufruf der Seite aus der Datenbank. Es muss ja die Seite neu geladen werden. Der Cookie bringt hier nichts, oder?


    Ich möchte im prinzip folgendes:


    Klick auf Button England:

    Seite neu geladen werden, vorher war http://www.google.de


    nach dem Klick soll:

    Google


    das möchte ich gern :D

  • ich rufe ja die übersetzten Wörter beim Aufruf der Seite aus der Datenbank. Es muss ja die Seite neu geladen werden. Der Cookie bringt hier nichts, oder?

    Der Cookie ist doch genau das richtige!

    Anstatt immer ein Parameter mit der URL anzugeben, reagierst du in deinem PHP-Skript auf den Cookie.

  • Eine simple und robuste Lösung wäre: Das Symbol mit der Flage mit einem a-href-Tag umgeben und die Sprache als URL-Parameter anhängen.

    Er müsste die Spracheinstellung ja aber noch Speichern.


    Da finde ich die Lösung mit dem Cookie deutlich besser.

    Vor allem, wie oft wird die Sprache denn schon geändert? Ein Cookie tut es hier am besten.

  • ich hab es ehrlich gesa

    Ansonsten halt z.B. so:

    JavaScript
    function set_lang(l)
    {
        // Hier entweder Sprachdaten laden
        // ...
    
        // oder Cookie setzen
        document.cookie = "LANG=" + l + "; max-age=86400*30; path=/; domain=DOMAIN_HALT; samesite=lax";
        location.reload();
    }


    HTML
    <div class="col-2 button_flags">
        <input type="image" src="./src/css/images/hu.png" alt="ungarisch" name="parm2" value="ungarisch" id="button-ungarisch" onclick="set_lang('ungarisch')">
    </div>


    Und dann wie oben im PHP-Skript reagieren.

    wie kann ich den cookie dann auslesen und was bedeutet im script domain=DOMAIN_HALT;?

  • wie kann ich den cookie dann auslesen

    Den Cookie brauchst du doch nur in deinem PHP-Skript auslesen, nicht im JS.
    Und wie du es machen kannst, hatte ich ja schon weiter oben erwähnt:

    Im PHP-Skript dann einfach abfragen:

    PHP
    $final_lang = ((isset($_COOKIE["LANG"]) ? $_COOKIE["LANG"] : STANDARD_HALT...));


    was bedeutet im script domain=DOMAIN_HALT;?

    Na, deine Domain halt. Die musst du ja schon noch angeben...


    EDIT:

    Und noch eine kleine Anmerkung (bevor Scatello es anspricht ;) )

    Ich weiß, dass der Parameter "domain" auch weggelassen werden kann, wenn es eh nur der aktuelle Host ist.

    Bei größeren Projekten will man aber nicht immer Cookies global haben, daher nutze ich den Parameter persönlich gerne einfach mit...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!