JavaScript show/hide - Den Zustand in eine DB speichern



  • Hallo an alle,

    ich habe mehrere divBoxen die man mit JavaScript Ein-/Ausblenden kann.
    DivBoxen:

    <a href="Java\1:toggle('options')" id="a_options" >hide</a>
    <div id="options">
    ...
    </div>
    
    <a href="Java\1:toggle('data')" id="a_data" >hide</a>
    <div id="data">
    ...
    </div>
    
    <a href="Java\1:toggle('adddada')" id="a_adddata" >hide</a>
    <div id="adddata">
    ...
    </div>
    

    Die JS-toggle-Funktion:

    function toggle(id)
    {
        var divbox = document.getElementById(id);
        var linkid = "a_"+id;
        var link = document.getElementById(linkid);
        if(divbox.style.display == "none")
        {
            divbox.style.display = "";
            link.firstChild.nodeValue = "hide";
        }
        else
            divbox.style.display = "none";
            link.firstChild.nodeValue = "show";
        }
    }
    

    Ich möchte nun den zustand der divBoxen irgendwie Speichern da bei einem reload(zB Formular absenden) alles wieder sichtbar wird. Es ist eine "Webapplikation" und manche Formulare braucht man nur selten und deswegen möchte ich das Irgendwie Speichern.

    PHP in JavaScript kann man ja nicht nutzen (php->server js->client)

    Mit Sessions kann ich auch nicht Arbeiten da man die mit JS nicht verändern kann. (Zustand aus DB lesen und in Sessions schreiben, den aktuellen Zustand immer in die session schreiben und wieder in die DB)

    Ich weis nicht wie man sowas machen kann und wäre für ein paar Tipps echt dankbar 👍



  • Nachdem ich die Frage gestellt habe war ich eine Rauchen und dabei ist mir gleich eine Lösung eingefallen 💡 🙂

    Mittels PHP hohle ich mir den Zustand aus einer DB und hänge es an die URL an
    index.php?options=show&data=show&adddata=hide

    Mittels PHP lese ich die GET-Paramater aus und mache die divBoxen sichtbar/unsichtbar.

    Wenn der User nun eine divBox sichtbar/unsichtbar macht verändere ich den Zustand in der URL mit JavaScript. http://aktuell.de.selfhtml.org/artikel/javascript/wertuebergabe/index.htm#a4 (Wertübergabe mittels URL)

    Ich überprüfe mit PHP ob sich da was geändert hat und schreibe es in die DB und URL.

    Nachteil ist das ich die GET-Parameter ständig mit an die URL schreiben muss aber dafür kann ich mir ja ne kleine PHP-Funktion schreiben.

    Fällt euch noch was bessers ("eleganteres") ein? Ansonsten mache ich es so.

    Vielen Dank



  • Einfach ein Ajax-Request beim show/hide rausschicken, das nichts weiter macht, als dem Server den neuen Sichtbarkeitsstatus mitzuteilen? Beim Aufrufen des Formulars wird dann grundsätzlich immer dynamisch anhand der DB-Werte generiert.



  • Meine Lösungsansatz funktioniert leider nicht bzw doch sehr umständlich 😞

    @árn[y]ék Danke für deine Hilfe aber mit Ajax habe ich mich noch nie beschäftigt und hatte es auch eigentlich nicht vor. Gibts noch andere Lösungen?
    (Wenn nicht dann muss ich mich halt mal damit beschäftigen 😞 )

    Vielen Dank



  • Hallo,

    ich habe mich nun entschlossen das ganze mit PHP zu machen.
    Dadurch wird zwar die Seite neu geladen wenn man eine divBox ein-7ausblenden will aber das ist nicht so schlimm da die Funktion sowieso nur selten benutzt wird.

    Vielen Dank



  • was denn nun an der db-variante so verkehrt .. php muss doch eh drüber rattern. Da kannst dir doch nen Array in die DB speichern, es einfach so mit senden, oder in ne session packen.



  • warum speicherst du das nicht in einem cookie?



  • also mit jquery und ajax, zB die .post() oder .get() funktion ist echt easy. und zudem gibts ne menge kleiner anleitungen im netz, da kannste nicht viel falsch machen.. nur so zur ermutigung 😉


Anmelden zum Antworten