Filos72: Über MySQL voreinstellungen in Checkbox treffen

Hallo liebe SelfHTML Community,

ich habe folgendes Problem:

Auf eine meiner Webseiten, soll ein Nutzer die Möglichkeit haben Einstellungen für seinen Account treffen zu können. Nun habe ich mit Javascript und HTML ein dynamisches Formular erstellt, welches wenn man auf "Wollen sie Benachrichtigungen erhalten" auf "Ja" klickt, sich erweitert und weitere Einstellungen in Form von Checkboxen freigibt. Zudem habe ich auf der Seite eine MySQL Datenbankabfrage, die ausliest was der Nutzer vorher angeklickt hat und die Boxen prechecked.

Meine Problem ist jetzt: Meine Website liest richtig aus, ob der Nutzer schonmal auf Ja geklickt hat und wählt dieses auch aus, aber das dynamische Menue wird dadurch nicht ausgefahren. (klar ich benutze ja auch Onclick als Auslöser). Meine Frage ist jetzt, wie stelle ich es an, dass das Formular mit Onklick dynamisch, bei Auswahl, bleibt, aber auch das Untermenue aufruft, wenn mein Code das Ja checked?

Ich hoffe ihr könnt mir Helfen :)

Vielen Dank im Vorraus.

  1. Hallo und guten Morgen,

    Auf eine meiner Webseiten, soll ein Nutzer die Möglichkeit haben Einstellungen für seinen Account treffen zu können.

    Nun habe ich mit Javascript und HTML ein dynamisches Formular erstellt, welches wenn man auf "Wollen sie Benachrichtigungen erhalten" auf "Ja" klickt, sich erweitert und weitere Einstellungen in Form von Checkboxen freigibt. Zudem habe ich auf der Seite eine MySQL Datenbankabfrage, die ausliest was der Nutzer vorher angeklickt hat und die Boxen prechecked.

    Meine Problem ist jetzt:
    Meine Website liest richtig aus, ob der Nutzer schonmal auf Ja geklickt hat und wählt dieses auch aus, aber das dynamische Menue wird dadurch nicht ausgefahren. (klar ich benutze ja auch Onclick als Auslöser). Meine Frage ist jetzt, wie stelle ich es an, dass das Formular mit Onklick dynamisch, bei Auswahl, bleibt, aber auch das Untermenue aufruft, wenn mein Code das Ja checked?

    Mach das Anzeigen des Menus von einem Flag abhängig, sinnvollerweise der Checkbox, in der Du nach "wollen Sie?" fragst. Trenne den Handler und die eigentliche Anzeigefunktion voneinander.
    Nun kannst Du einen Handler für "onClick" (ich denke onChange könnte da besser passen) einrichten und einen für onLoad. Beide aktivieren die Anzeigefunktion, die sich aber nach dem Flag richtet.

    Da gibt es dann aber noch Unterschiede zwischen dem voreingestellten Wert der Checkbox und dem Inhalt des Objektes zur Laufzeit. Müsste ich jetzt selber suchen...

    Grüße
    TS

    1. Danke für die schnelle Antwort :) jetzt hab ich zumindest einen Ansatz. werde ich heute Nachmittag direkt versuchen zu implementieren. Hoffe es klappt alles! Und Danke nochmal.

    2. Hallo,

      Nun kannst Du einen Handler für "onClick" (ich denke onChange könnte da besser passen) einrichten und einen für onLoad.

      bitte propagiere nicht die CamelCase-Schreibweise für die Eventhandler, sondern die richtige Schreibweise onclick, onchange, onload. In Javascript muss durchgehende Kleinschreibung verwendet werden, denn Javascript ist case sensitive; als Attributname in HTML sollte sie verwendet werden. Also sollte man sich diese Schreibweise auch nach Möglichkeit so angewöhnen.

      Dass die Eventhandler im HTML möglichst gar nicht auftauchen sollten, ist nochmal ein anderes Thema.

      So long,
       Martin

      1. Hallo und guten Morgen Martin,

        Nun kannst Du einen Handler für "onClick" (ich denke onChange könnte da besser passen) einrichten und einen für onLoad.

        bitte propagiere nicht die CamelCase-Schreibweise für die Eventhandler, sondern die richtige Schreibweise onclick, onchange, onload. In Javascript muss durchgehende Kleinschreibung verwendet werden, denn Javascript ist case sensitive; als Attributname in HTML sollte sie verwendet werden. Also sollte man sich diese Schreibweise auch nach Möglichkeit so angewöhnen.

        Danke für den Hinweis.

        Dass die Eventhandler im HTML möglichst gar nicht auftauchen sollten, ist nochmal ein anderes Thema.

        Wie meinst Du das? Irgendwo muss man sie doch anbinden?
        Oder meintest Du damit, dass man lieber in JavaScript einen Event-Listener anmelden sollte?
        http://wiki.selfhtml.org/wiki/JavaScript/Objekte/DOM/event/addEventListener

        Dann kann man dem auch beibringen, dass er nur zuhören soll, wenn das HTML-Element überhaupt vorhanden ist und hat wieder etwas zum Thema saubere Trennung der Bereiche Markup, Style, Frontend-PL, Backend-PL, usw. beigetragen.

        Grüße
        TS

        1. Hi,

          bitte propagiere nicht die CamelCase-Schreibweise für die Eventhandler, ...

          Danke für den Hinweis.

          keine Ursache. ;-)

          Dass die Eventhandler im HTML möglichst gar nicht auftauchen sollten, ist nochmal ein anderes Thema.

          Wie meinst Du das? Irgendwo muss man sie doch anbinden?

          Natürlich, irgendwie schon.

          Oder meintest Du damit, dass man lieber in JavaScript einen Event-Listener anmelden sollte?
          http://wiki.selfhtml.org/wiki/JavaScript/Objekte/DOM/event/addEventListener

          Entweder das, oder man setzt ein script-Element ins Dokument, in dem beispielsweise steht:

          window.onload = init;
          

          Vorausgesetzt, es gibt eine Funktion init(), die als onload-Handler fungieren soll und ihrerseits vielleicht weitere Eventhandler an bestimmte Elemente bindet.

          Ciao,
           Martin

          1. Hallo und guten Morgen Martin,

            Dass die Eventhandler im HTML möglichst gar nicht auftauchen sollten, ist nochmal ein anderes Thema.

            Wie meinst Du das? Irgendwo muss man sie doch anbinden?

            Natürlich, irgendwie schon.

            Oder meintest Du damit, dass man lieber in JavaScript einen Event-Listener anmelden sollte?
            http://wiki.selfhtml.org/wiki/JavaScript/Objekte/DOM/event/addEventListener

            Entweder das, oder man setzt ein script-Element ins Dokument, in dem beispielsweise steht:

            window.onload = init;
            

            Vorausgesetzt, es gibt eine Funktion init(), die als onload-Handler fungieren soll und ihrerseits vielleicht weitere Eventhandler an bestimmte Elemente bindet.

            Da sind wir aber wieder bei dem Thema:

            • was wird wann ausgeführt?
            • wo muss der Javascript-Code stehen bzw. geladen werden?
            • kann man dem init() beibringen, dass es erst arbeiten darf, wenn der Javascript-Code vollständig geladen ist (beim Nachladen aus externer Source)?
            • wie wirkt sich das auf den Aufbau der Seite aus (Rumzapeln, Unruhe, Hin und Herspringen)?

            Grüße
            TS