Ergebnis 1 bis 23 von 23

Thema: Checkbox-Wert in FE-User Session speichern und ändern

  1. #1
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard Checkbox-Wert in FE-User Session speichern und ändern

    Habe verschiedene Anleitungen im Web ausprobiert, aber leider führte noch keine zum Erfolg.
    Ich möchte den Wert einer Checkbox in der Session des eingeloggten FE-User speichern. Wenn die Checkbox wieder abgewählt wird, sollte dies wiederum gespeichert werden.
    HTML-Code:
    <div>
    <input type="checkbox" id="show-hide-column">
    <label for="show-hide-column-input">Spalte anzeigen</label>
    </div>

    Vielen Dank im Voraus!
    Michael
    Contao ist echt !

  2. #2
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Mittlerweile, kann ich mit Hilfe eines Javascripts und CSS Tabellenspalten ein- und ausblenden lassen.
    Aber wie speichere ich, welche Checkboxen ausgewählt wurden, damit ich beim Verlassen und späterem zurückkehren auf die Seite dieselben Checkboxen ausgewählt habe? Niemand einen Typ?

    Besten Dank!
    Michael
    Contao ist echt !

  3. #3
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Hmm.. ist meine Frage zu ungenau oder ist dies gar nicht oder nur schwierig umzusetzen?
    Contao ist echt !

  4. #4
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard

    Moin,

    ich weiß nicht, ob es in Contao noch andere Möglichkeiten gibt bzw. wie Sessions in Contao gemanaged werden, aber ich würde es mal damit versuchen:
    http://www.php-einfach.de/php-tutorial/php-sessions/

    MfG, Daniel

  5. #5
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Stunden später.. ich kann die Checkboxen auslesen und im Module in der Session speichern:
    PHP-Code:
    $ein_aus = \Input::post('ein_aus');
    $this->Session->set('ein-aus'$ein_aus); 
    Wenn ich aber eine andere Seite anwähle bleibt der Wert in der Session drinnen, wenn ich aber wieder auf die Seite mit den Checkboxen zurückkehre, wird der Session-Wert auf null gesetzt. Was mache ich noch falsch?
    Contao ist echt !

  6. #6
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Zitat Zitat von Michael Beitrag anzeigen
    Was mache ich noch falsch?
    Du setzt beim Erzeugen der Seite jedes Mal den Wert neu. Wenn Du nun auf die Seite gehst, ohne daß das Formular abgeschickt wurde steht in POST natürlich nichts drin und das schreibst Du dann in die Session.

  7. #7
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Aber sollte mit:
    Code:
    $(document).ready(function() {
       $('.einaus select').change(function() {
       $(this).closest('form').submit();
       });
    });
    das Formular nicht nur bei einer Änderung abgeschickt werden?
    Habe schon versucht mit einer if-Schleife das Erstellen eines leeren Wertes zu verhindern, leider klappt es nicht. Ein Tipp?
    Contao ist echt !

  8. #8
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Das mag schon sein, daß das das Formular abschickt, aber Du hast geschrieben "wenn ich aber wieder auf die Seite mit den Checkboxen zurückkehre", d.h. Du gehst auf eine andere Seite und dann wieder zurück auf die Seite mit dem Formular. Dabei wird die Seite neu geladen und Dein Code ausgeführt. Das Formular wird dabei nicht abgeschickt, wohl aber \Input:ost('ein_aus') ausgewertet und in die Session geschrieben.

  9. #9
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Ok, jetzt verstehe ich den Vorgang. Danke für die genauen Erklärungen!
    Hmm.. habe schon probiert mit if ($sessionwert != null) soll er nur den Post lesen. Aber dann habe ich das Problem, dass bei einem neuen Mitglied der Post auch nicht ausgelesen wird.
    Contao ist echt !

  10. #10
    Contao-Urgestein Avatar von fiedsch
    Registriert seit
    09.07.2009.
    Ort
    München
    Beiträge
    2.972

    Standard

    Dazu kann ich nichts sinnvolles sagen, denn ich verstehe noch nicht was Du genau machst und wo Du hin willst. Mein Gefühl sagt mir aber, daß Du Deine (Ablauf-)Logik noch mal überdenken solltest und es nicht an den technischen Aspekten (wie greife ich auf die Session zu?) krankt.

  11. #11
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Die Logik wäre diese:
    1. Ein eingeloggtes Mitglied ruft eine Seite auf und kann per Klick auf 3 verschiedene Checkboxen, 3 verschiedene Spalten einer Tabelle ausblenden lassen. Der Klick wird via POST ins Modul übertragen und in der Session gespeichert. Dies klappt auch.
    2. Diese Einstellung sollte in der Session gespeichert werden, auch wenn ich die Seite verlassen und später zurückkehrt.
    3. Beim Zurückkehren wird die Session gelöscht wegen dem \Inputost('ein_aus'), wie von dir gelernt.

    Und so klappt es nun:
    PHP-Code:
    if($this->Session->get('ein-aus') == null OR \Input::post('ein-aus') != null) {
      
    $ein_aus = \Input::post('ein-aus');
      
    $this->Session->set('ein-aus'$ein_aus);
      } 
    @fiedsch: Besten Dank!
    Contao ist echt !

  12. #12
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Ich hatte das ganze mit einen Form und Select getestet. Jetzt möchte ich es noch mit Checkboxen umschreiben. Finde dazu aber kein passendes Javascript:
    Habe
    Code:
    $(document).ready(function() {
       $('.einaus select').change(function() {
       $(this).closest('form').submit();
       });
    });
    zu
    Code:
    $(document).ready(function() {
      $('.einaus input').onclick(function() {
      $(this).closest('form').submit();
      });
        });
    Das Form sieh so aus:
    HTML-Code:
    <form action="" method="post" class="einaus">
      <input value="Ein" type="checkbox" id="show-hide-changes-input" name="ein-aus" <?php if($this->Session->get('ein-aus') == 'Ein'): ?>checked<?php endif; ?>>
      <label for="show-hide-changes-input">Umteilungen anzeigen</label>
     </form>
    abgeändert, aber dies passt nicht. Jemand einen Tipp wie ich dies änder muss? Ich sehe es leider nicht
    Contao ist echt !

  13. #13
    Contao-Nutzer
    Registriert seit
    15.01.2016.
    Beiträge
    20

    Standard

    Moin,

    mit
    Code:
    $('.einaus input')
    greifst du auf das Formular zu. Ich vermute mal onclick funktioniert nicht mit dem Formular sondern nur mit den sichtbaren Elementen wie mit den input:
    Code:
    $(document).ready(function() {
      $('.show-hide-changes-input').onclick(function() {
      $(this).closest('form').submit();
      });
        });
    MfG, Daniel

  14. #14
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    GELÖST!

    Nächstes Problem, aber ich bleibe hartnäckig Nun will ich die zwei Funktionen kombinieren:
    1. Dass der Wert der Checkbox in der Session gespeichert wird (wie oben beschrieben)
    2. Dass die zugehörige Spalte der Tabelle ausgeblendet wird.

    Edit: manchmal sieht man vor lauter Bäum den Wald nicht mehr!
    Geändert von Michael (29.01.2016 um 18:51 Uhr)
    Contao ist echt !

  15. #15
    Contao-Nutzer
    Registriert seit
    06.10.2012.
    Beiträge
    213

    Standard

    Ähm doofe Frage, aber aus JS hast du doch keinen Zugriff auf die Session? Du müsstest den Wert stattdessen in einem Cookie speichern.
    Es geht nur darum, die Darstellung zu kontrollieren, richtig? Also nicht darum, dass manche User manche Spalten gar nicht sehen dürfen?

  16. #16
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Zitat Zitat von pju Beitrag anzeigen
    Ähm doofe Frage, aber aus JS hast du doch keinen Zugriff auf die Session? Du müsstest den Wert stattdessen in einem Cookie speichern.
    Ja, soweit ich es bis jetzt verstehe hat man im JS keinen Zugriff.
    Zitat Zitat von pju Beitrag anzeigen
    Es geht nur darum, die Darstellung zu kontrollieren, richtig? Also nicht darum, dass manche User manche Spalten gar nicht sehen dürfen?
    Genau dies ist mein Ziel, dass ein eingeloggtes Mitglied nicht benötigte Spalten aus- oder einblenden kann und diese Einstellungen in der Session gespeichert werden.
    Contao ist echt !

  17. #17
    Contao-Nutzer
    Registriert seit
    06.10.2012.
    Beiträge
    213

    Standard

    Ja, dann mach es doch mit einem Cookie, das ist das einfachste.
    Den Umweg über PHP kannst du dir dann auch sparen, einfach direkt im Click-Event, mit dem du die Zeile ausblendest, Cookie setzen.

  18. #18
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Ich möchte aber die Einstellungen computerunabhängig speichern und dann muss ich es über die Session lösen?
    Contao ist echt !

  19. #19
    Contao-Nutzer
    Registriert seit
    06.10.2012.
    Beiträge
    213

    Standard

    Bist du sicher, dass die Session nicht an den Client gekoppelt ist? Zumindest ist das normalerweise so bei Php, die Session-Id wird per Cookie gespeichert. In Contao hab ich noch nie mit der Session gearbeitet ...

    Ansonsten kannst du die Mitglieder-Tabelle um entsprechende Felder erweitern, also direkt über die DB gehn.

    Zur Vebindung zu JS: Wie gibst du deine Tabelle aus? Kannst du in der Ausgabe nicht eine entsprechende Klasse mitgeben - ob der Wert aus der DB oder der Session kommt, ist dabei ja erstmal egal.

  20. #20
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Bist du sicher, dass die Session nicht an den Client gekoppelt ist?
    Ja, habe es getestet. Die Member-Session wird in tl_member > session gespeichert.

    Ansonsten kannst du die Mitglieder-Tabelle um entsprechende Felder erweitern, also direkt über die DB gehn.
    Das akzeptieren der AGBs speichere ich dort.

    Zur Vebindung zu JS: Wie gibst du deine Tabelle aus? Kannst du in der Ausgabe nicht eine entsprechende Klasse mitgeben - ob der Wert aus der DB oder der Session kommt, ist dabei ja erstmal egal.
    Ich erstelle die Tabelle mittels PHP und HTML oder wie meinst du das? Dazu brauche ich gar keine Verbindung von Session-Werten und Javascript. Würde aber wahrscheinlich schon so eine geben?
    Contao ist echt !

  21. #21
    Contao-Nutzer
    Registriert seit
    06.10.2012.
    Beiträge
    213

    Standard

    Haha, du bist ein harter Brocken
    Zitat Zitat von Michael Beitrag anzeigen
    Das akzeptieren der AGBs speichere ich dort.
    Und wieso nicht auch, ob die Spalten ein- und ausgeblendet werden?

    Zitat Zitat von Michael Beitrag anzeigen
    Ich erstelle die Tabelle mittels PHP und HTML oder wie meinst du das? Dazu brauche ich gar keine Verbindung von Session-Werten und Javascript. Würde aber wahrscheinlich schon so eine geben?
    Dein Problem ist doch folgendes: 1. Dass der Wert der Checkbox in der Session gespeichert wird (wie oben beschrieben) 2. Dass die zugehörige Spalte der Tabelle ausgeblendet wird.
    Ausserdem hast du geschrieben, dass du: Javascripts und CSS Tabellenspalten ein- und ausblenden lässt.

    Da du über JS nicht an die Werte aus der Session kommst und nur indirekt an die Werte aus der DB, kannst du doch einfach beim erstellen per PHP (in einem eigenen Template nehme ich an?) den Wert für die Spalte aus der Session oder DB ziehen. Dann vergibst du eine Klasse (.ausgeblendet oder so) mit der du die Spalte versteckst, und kannst dann per JS die Klasse und damit die Sichtbarkeit toggeln?

  22. #22
    Contao-Fan Avatar von Michael
    Registriert seit
    19.06.2009.
    Beiträge
    479

    Standard

    Zitat Zitat von pju Beitrag anzeigen
    Haha, du bist ein harter Brocken
    und ein Programmieranfänger

    Zitat Zitat von pju Beitrag anzeigen
    Und wieso nicht auch, ob die Spalten ein- und ausgeblendet werden?
    Weil mir dies schwieriger, fehleranfälliger und perfomanceverschleissender erschien?

    Zitat Zitat von pju Beitrag anzeigen
    Dein Problem ist doch folgendes: 1. Dass der Wert der Checkbox in der Session gespeichert wird (wie oben beschrieben) 2. Dass die zugehörige Spalte der Tabelle ausgeblendet wird.
    Ausserdem hast du geschrieben, dass du: Javascripts und CSS Tabellenspalten ein- und ausblenden lässt.

    Da du über JS nicht an die Werte aus der Session kommst und nur indirekt an die Werte aus der DB, kannst du doch einfach beim erstellen per PHP (in einem eigenen Template nehme ich an?) den Wert für die Spalte aus der Session oder DB ziehen. Dann vergibst du eine Klasse (.ausgeblendet oder so) mit der du die Spalte versteckst, und kannst dann per JS die Klasse und damit die Sichtbarkeit toggeln?
    Irgendwie konnte ich die zwei Javascript-Funktionen(Post und toggle; wie oben beschrieben) nicht kombinieren. Wahrscheinlich weil sie auf die gleiche ID zugreifen? Von Javascript habe ich leider fast keine Ahnung.
    Contao ist echt !

  23. #23
    Contao-Nutzer
    Registriert seit
    06.10.2012.
    Beiträge
    213

    Standard

    Zitat Zitat von Michael Beitrag anzeigen
    und ein Programmieranfänger
    Das waren wir ja alle mal …
    Aber was wichtig ist: dass du möglichst genau erklärst, was dein Problem ist. Sonst kann es niemand nachvollziehen.

    Immer gut sind deshalb Screenshots und Code! Zeig doch mal, wie deine Tabelle und dein Eingabe-Formular aussehen (die Bilder kannst du direkt hier im Forum hochladen). Und dann poste bitte mal den aktuellen Stand von deinem PHP für die Tablle und deinem JS (mit dem Coder- oder HTML-Tag).

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •