Liar: Tabellen-Zellen mit Data-Status

Hallo,

ist es möglich mit jQuery, da ich dieses bereits in meinem Projekt einsetze Tabellen-Zellen ein oder auszublenden je nachdem welches Checkboxen angeklickt sind?

<tr data-status="<?php echo htmlspecialchars($array['status']); ?>">
  <td><?php echo htmlspecialchars($array['name']); ?></td>
  <td><?php echo htmlspecialchars($array['vorname']); ?></td>
</tr>

Für die Auswahl dachte ich an folgenden Aufbau, ich bin mir allerdings nicht sicher ob ich überhaupt ein <form> benötige?

<form method="post" class="" id="">
    <fieldset>
        <legend>Welche Einträge wollen Sie sehen? </legend>
        <label><input type="checkbox" name="status[]" value="1" /> Aktive</label>
        <label><input type="checkbox" name="status[]" value="0" /> Gesperrte</label>
    </fieldset>
</form>

Schön wäre es wenn sich das System merkt welche Auswahl ich mir eingestellt habe.
Ich dachte hier an folgendes

  1. User trifft die Auswahl und es werden erst einmal die Einträge ausgeblendet
  2. Es wird ein Wert in die Datenbank geschrieben um beim nächsten Aufruf nur die Werte angezeigt die ausgewählt sind. Jetzt stellt sich mir hier Frage wie kann ich die Werte direkt in die Datenbank schreiben ohne die Seite neu laden zu müssen? OK, hier merke ich mein Vorhaben kann nicht funktionieren denn wie lade ich dann die Einträge die derzeit nicht ausgelesen werden wenn ich mich für etwas anderes entscheide? Dieses müsste irgendwie dynamisch ausgelesen werden?
  3. Es gäbe auch die Möglichkeit immer alles auszulesen und einfach nur zu verstecken, was bei vielen Einträge allerdings unnötig ist.

Wie würdet ihr vorgehen bzw. dieses umsetzen?

  1. Liebe(r) Liar,

    ist es möglich mit jQuery, da ich dieses bereits in meinem Projekt einsetze Tabellen-Zellen ein oder auszublenden je nachdem welches Checkboxen angeklickt sind?

    ja. Du togglest einen Klassennamen. Dein CSS sorgt dann für die Darstellung solcher Art bezeichneter Elemente.

    <tr data-status="<?php echo htmlspecialchars($array['status']); ?>">
      <td><?php echo htmlspecialchars($array['name']); ?></td>
      <td><?php echo htmlspecialchars($array['vorname']); ?></td>
    </tr>
    

    Was genau tut das data-status? Soll es die ganze Zeile ausblenden? Du kannst anstelle des toggleClass auch den Inhalt des data-status-Wertes benutzen. Passende Selektoren gibt es ja.

    Für die Auswahl dachte ich an folgenden Aufbau, ich bin mir allerdings nicht sicher ob ich überhaupt ein <form> benötige?

    Wenn Du die Seite ohne JavaScript nicht benutzen können musst, kannst Du alles über AJAX-Techniken machen und auf ein <form> verzichten, ja.

    Schön wäre es wenn sich das System merkt welche Auswahl ich mir eingestellt habe.

    Soll diese Einstellung auf dem Server oder im Client gespeichert werden? Wenn Du mit JavaScript hantierst, gäbe es ja localStorage.

    Ich dachte hier an folgendes

    1. User trifft die Auswahl und es werden erst einmal die Einträge ausgeblendet

    Das tust Du mit JavaScript. OK.

    1. Es wird ein Wert in die Datenbank geschrieben

    Du POSTest also etwas via AJAX im Hintergrund an die DB, die sich diese Einstellung merkt. OK.

    um beim nächsten Aufruf nur die Werte angezeigt die ausgewählt sind.

    Du meinst, wenn die Seite neu geladen wird? Da käme dann der gespeicherte Einstellungen-Wert ins Spiel, ja.

    Jetzt stellt sich mir hier Frage wie kann ich die Werte direkt in die Datenbank schreiben ohne die Seite neu laden zu müssen?

    Siehe AJAX-Techniken. Dein jQuery vereinfacht die Nutzung dieser in seinen spezialisierten Methoden.

    OK, hier merke ich mein Vorhaben kann nicht funktionieren denn wie lade ich dann die Einträge die derzeit nicht ausgelesen werden wenn ich mich für etwas anderes entscheide? Dieses müsste irgendwie dynamisch ausgelesen werden?

    Auch dafür kann man AJAX-Techniken benutzen. Ob das aber sinnvoll ist, bleibt eine Frage.

    1. Es gäbe auch die Möglichkeit immer alles auszulesen und einfach nur zu verstecken, was bei vielen Einträge allerdings unnötig ist.

    Mag unnötig sein, ist aber flexibler in der Benutzerführung. Auch wenn der Benutzer eine bestimmte Einstellung vorgenommen hat, werden die ausgeblendeten Daten trotzdem ausgeliefert, damit er sich diese bei Bedarf auch anzeigen lassen kann. Die Klassen oder Attributwerte, Die Dein jQuery anhand der Checkboxen ändert, kann ja das serverseitige Script ebenso vorbereiten.

    Liebe Grüße,

    Felix Riesterer.

  2. Liebe(r) Liar,

    ich habe gerade noch einmal über deinen Code geschaut:

    <tr data-status="<?php echo htmlspecialchars($array['status']); ?>">
      <td><?php echo htmlspecialchars($array['name']); ?></td>
      <td><?php echo htmlspecialchars($array['vorname']); ?></td>
    </tr>
    

    anders als in Deinem Threadtitel notiert tragen nicht Deine Tabellenzellen das data-status-Attribut, sondern Deine Tabellenzeilen! Das ist ein wesentlicher Unterschied.

    Liebe Grüße,

    Felix Riesterer.

    1. Hallo,

      ich meinte auch Tabellenzeilen. Hab mich verschrieben. Danke auch für deine Ausführliche Erklärung. Stellt sich doch schwieriger da als angenommen. Ich werde es wohl mit PHP und einem Seiten-Reload machen.

      Kann ein wenig jQuery mehr aber nicht und etwas fertiges habe ich im Netz nach 4 Stunden suchen leider nicht gefunden.

      Wäre zwar etwas schönes aber man kann ja nicht alles haben ;)

      1. Liebe(r) Liar,

        Kann ein wenig jQuery mehr aber nicht

        Du könntest aber lernen, wie man so etwas macht. Links zur API habe ich Dir ja schon gegeben. Für Detailnachfragen bist Du hier richtig.

        und etwas fertiges habe ich im Netz nach 4 Stunden suchen leider nicht gefunden.

        Ja, das gibt es hier auch nicht. Aber Hilfe beim Selberlernen.

        Liebe Grüße,

        Felix Riesterer.

    2. Hi,

      anders als in Deinem Threadtitel notiert tragen nicht Deine Tabellenzellen das data-status-Attribut, sondern Deine Tabellenzeilen!

      Was erwartest Du denn von einem Lügner? 😉

      cu,
      Andreas a/k/a MudGuard