Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Letzten Sessionwert gezielt löschen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Letzten Sessionwert gezielt löschen

    Hallo zusammen,
    ich habe einen Fragen / Antworten Tool entwickelt und speicher die Antworten in einer Session. Nun möchte ich den jeweils letzten Eintrag löschen können um eine Art "Schritt zurück" zu ermöglichen.

    Speichern wie folgt:
    Code:
    #Der Link
    <a href=?parent_id=$ID&FrageID=$FrageID&mode=merken>link</a>
    #Nicht irritieren lassen weil die Var. FrageID und nicht AntwortenID heisst :razz:
    So speicher ich die Daten ab...
    PHP-Code:
    if (isset($_GET['FrageID']) && $_GET['mode'] == "merken")
     {
              
    $_SESSION['tokenproduktberater'][] = array('FrageID' => ($_GET['FrageID']));
           } 
    Jetzt gebe ich die aus - inkl. Link zum löschen:
    PHP-Code:
    foreach ($_SESSION['tokenproduktberater'] as $key=>$value)
         {
    ....
    <
    a href=?mode=letztenloeschen&FrageID=$FrageID&parent_id=$parent_id>$Titel</a>
    ...


    Und jetzt der Löschversuch:
    PHP-Code:
    if (isset($_GET['FrageID']) && $_GET['mode'] == "letztenloeschen")
    {
        unset(
    $_SESSION['tokenproduktberater'][$_GET['FrageID']]);

    Ich möchte nur den letzten Eintrag löschen...
    Mir fehlt aber schon die Möglichkeit überhaupt zu löschen...

    Leider funktioniert das überhaupt nicht...

    Hat jemand einen Tipp für mich?? Kann ich noch was beisteuern?


  • #2
    Du speicherst die Antworten in einer Session?
    Sicher, dass eine Datenbank nicht die bessere Wahl ist, weil eine Session eben sehr kurzlebig ist.
    Fatal Error: Windows wird gestartet

    Wie administriert man ein Netzwerk: Beispiel

    Kommentar


    • #3
      es ist ein tool welches wenige Minuten genutzt wird... da sah ich die session als beste Option...

      Kommentar


      • #4
        Am besten speicherst du in der Session ein Array, da hast du dann alle Möglichkeiten, die du willst.
        http://php.net/manual/de/ref.array.php
        Fatal Error: Windows wird gestartet

        Wie administriert man ein Netzwerk: Beispiel

        Kommentar


        • #5
          ähm
          mach ich das nicht?
          PHP-Code:
          $_SESSION['tokenproduktberater'][] = array('FrageID' => ($_GET['FrageID'])); 

          Kommentar


          • #6
            Lass dir mal $_SESSION['tokenproduktberater'] ausgeben, mit print_r() zB, dann kannst du genau sehen wie der aufgebaut ist und du die Werte die mit unset() ansprechen musst. Glaub du hast da eine Ebene zuviel dazwischen $_SESSION['tokenproduktberater'][], die du mit FrageID nicht ansprechen kannst, weil von PHP autom. mit 0, 1 etc.. "ge-indexst" wird, bin mir aber gerade nicht sicher.

            PHP-Code:
            echo "<pre>";
            print_r($_SESSION['tokenproduktberater']);
            echo 
            "</pre>"
            LG
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Zitat von webdreamer Beitrag anzeigen
              ähm
              mach ich das nicht?
              PHP-Code:
              $_SESSION['tokenproduktberater'][] = array('FrageID' => ($_GET['FrageID'])); 
              Nicht so wirklich.

              PHP-Code:
              $_SESSION['dein_array_mit_anworten'] = array(); 
              ist die bessere Wahl.
              jetzt hast du eine Variable die ein array darstellt und kannst alle arrayfunktionen nutzen
              Fatal Error: Windows wird gestartet

              Wie administriert man ein Netzwerk: Beispiel

              Kommentar


              • #8
                die Ausgabe habe ich mir auch schon angeschaut. Hätte ich nennen können
                Code:
                Array ( [0] => Array ( [FrageID] => 3 ) [1] => Array ( [FrageID] => 7 ) [2] => Array ( [FrageID] => 12 ) )
                Der Link, der angezeigt wird, zum löschen lautet:
                Code:
                #?FrageID=12&parent_id=91&mode=letztenloeschen
                Klick ich darauf, passiert nix...

                Kommentar


                • #9
                  array_pop könnte nützlich sein.
                  PHP-Klassen auf github

                  Kommentar


                  • #10
                    Zitat von webdreamer Beitrag anzeigen
                    Ich möchte nur den letzten Eintrag löschen...
                    D.h. du willst das letzte Element in $_SESSION['tokenproduktberater'] löschen, richtig? Dafür könntest du einfach den letzten Key ermitteln (=Länge des Arrays-1) und in mit unset($_SESSION['tokenproduktberater'][$key]); löschen oder du wendest einfach array_pop() auf das Array an.

                    Kommentar


                    • #11
                      Danke! Nur..
                      liefert mir das folgende nur ein "Array" als Wort...
                      PHP-Code:
                       $test=array_pop($_SESSION['tokenproduktberater']);
                          echo 
                      $test
                      Lt. php.net liefert array_pop den letzten Wert... Nur bei mir nicht

                      Kommentar


                      • #12
                        PHP-Code:
                        var_dump($test); 
                        // oder 
                        print_r($test); 
                        Weil es auch ein Array ist, wie oben schon erwähnt du hast da noch eine Ebene drinnen, daher ist der letzte Wert bei dir wiederrum ein Array.

                        Schau dir nochmals Beitrag #7 genau an.

                        LG
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Zitat von webdreamer Beitrag anzeigen
                          Lt. php.net liefert array_pop den letzten Wert... Nur bei mir nicht
                          Doch, siehe #12. Aber du brauchst den Rückgabewert von array_pop() garnicht, das ist ja der Wert den du löschen möchtest. Die Funktion verändert das übergebene Array, du kannst also einfach array_pop($_SESSION['tokenproduktberater']); schreiben und dann steht das letzte Element nicht mehr in $_SESSION['tokenproduktberater'].

                          Kommentar


                          • #14
                            Vielen Dank!! Ich glaub, damit hab ich es erschlagen und werde jetzt mal intensiv testen!!
                            PHP-Code:
                            array_pop($_SESSION['tokenproduktberater']); 

                            Kommentar

                            Lädt...
                            X