foreach mit Sessions ?!

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

  • foreach mit Sessions ?!

    Ich habe folgende foreach Schleife :

    PHP-Code:
    if (isset($_POST['sprache']))
        {
        foreach (
    $_POST['sprache'] as $schluessel => $sprache)
            {
            print 
    "<tr><td>$sprache</td></tr>";
            }
        }
    else
        {
        echo 
    "Keine Sprachen";
        } 
    $_POST['sprache'] bekomme ich vorher aus einem Formular geliefert und es koennen bis zu 40 Werte sein.

    So wie die Schleife da oben steht, funktioniert sie einwandfrei. Nur wenn vorher folgendes mache :

    PHP-Code:
    $_SESSION['sprache'] = $_POST['sprache']; 
    und dann die Schleife mit dem neuen Wert anstatt dem alten durchfuehre, bekomme ich einen Fehler.

    Hat einer ne Idee woran das liegen koennte ?
    Grüße
    Andreas

  • #2
    afaik kannst du $_SESSION['sprache'] nicht ein komplettes array $_POST['sprache'] übergeben - du müsstest demnach den inhalt von $_POST['sprache'] entweder serialisieren oder unter verschiedenen namen speichern
    (-:
    Bookmarks:·Bilder·Jobs·Recht·
    kostenloser Webkataloge-Assistent

    Kommentar


    • #3
      Danke schonmal fuer den Tipp.

      Ich habe mir jetzt gerade mal die Referenz von serialize() angeschaut (http://www.php.net/manual/de/function.serialize.php)

      Leider muss ich sagen, dass ich daraus nicht wirklich schlau geworden bin, sprich ich habe es nicht verstanden.

      Koenntest du mir ein simples Anwendungsbeispiel geben ? vielleicht verstehe ich es dann.


      Fuer den Moment habe ich es einfach so geloest, das ich $_POST['sprache'] in $wert speichere, dann mit der Schleife auslesen und danach in die Session speichere.
      Funzt zwar, ist aber bestimmt nicht der eleganteste weg.
      Zuletzt geändert von Maratos; 12.02.2004, 03:12.
      Grüße
      Andreas

      Kommentar


      • #4
        Original geschrieben von Maratos
        Danke schonmal fuer den Tipp.

        Ich habe mir jetzt gerade mal die Referenz von serialize() angeschaut (http://www.php.net/manual/de/function.serialize.php)

        Leider muss ich sagen, dass ich daraus nicht wirklich schlau geworden bin, sprich ich habe es nicht verstanden.

        Koenntest du mir ein simples Anwendungsbeispiel geben ? vielleicht verstehe ich es dann.


        Fuer den Moment habe ich es einfach so geloest, das ich $_POST['sprache'] in $wert speichere, dann mit der Schleife auslesen und danach in die Session speichere.
        Funzt zwar, ist aber bestimmt nicht der eleganteste weg.
        Ähm ich bin zwar Newbie aber ich versuch' mal OK

        mit serialize($arg) kannst du das $arg (egal was es ist) in einen String um wandelt, dabei wird der Typ von $arg auch im String für die Rückwandlung mitgespeichert.

        mit unserialize($arg) wird das Ganze rückgängig gemacht, unter dem Aspekt, dass bei Objekten die Methoden _alle_ verloren gehen.

        hier in deinem Fall:

        $var_serialized = serialize($_POST['sprache']); // array 'quasi' in String ablegen

        um wieder mit foreach arbeiten zu können, musst du

        $var_unserialzed = unserialize($var_serialized);

        foreach ($var_unserialized ....

        alles klar

        Kommentar


        • #5
          @maratos
          lass dir nix einreden mach mal ein
          PHP-Code:
          echo '<pre>';
          $_SESSION['sprache'] = $_POST['sprache'];
          print_r($_SESSION); 
          und schau dir mal den aufbau des arrays an, dann dürfte klar sein warum das so nicht
          geht.
          Kissolino.com

          Kommentar


          • #6
            Original geschrieben von Wurzel
            @maratos
            lass dir nix einreden mach mal ein
            PHP-Code:
            echo '<pre>';
            $_SESSION['sprache'] = $_POST['sprache'];
            print_r($_SESSION); 
            und schau dir mal den aufbau des arrays an, dann dürfte klar sein warum das so nicht
            geht.
            Also wenn ich mir alleine $_SESSION anschaue, dann habe ich ein ziemlich großes, mehrdimensionales Array, da dort natürlich auch noch andere Daten gespeichert sind. Macht Sinn das es so nicht geht.

            Wenn ich allerdings ein :

            print_r($_SESSION['sprache']);

            mache, sieht das ganze wesentlich sturkturierter aus :

            PHP-Code:
            Array ( [0] => sprache1 [1] => sprache2 [2] => spreache3 [3] => sprache4 [4] => sprache5 [5] => sprache6 [6] => sprache7 [7] => sprache8 

            @asp2php

            Vielen Dank für die Erklärung.
            Ich habe jetzt verstanden wie genau ich serialize einsetze, doch mir bleibt leider noch immer der Sinn verborgen, warum ich das Array erst serialiseren muß um es direkt danach wieder zu deserialisieren.

            Da scheint mir doch die Methode die ich jetzt gewählt habe, nämlich $_POST['sprache']; direkt in eine Variable zu speichern, wesentlich effektiver.
            Grüße
            Andreas

            Kommentar


            • #7
              um Gotteswillen, natürlich macht keiner so 'n Unsinn. Du sagtest, du hast nicht verstanden, wie serialize funktioniert, daraufhin habe ich nur anhand Bsp. gezeigt, wie man mit serialize und unserialize umgeht. Das war's.

              Wann wird serialize eingesetzt ... schau mal in die Tutorial da ist ein Bsp. ... da wird ein ganzes Array in einem DB-Feld abgelegt, indem man serialize anwendet, um die abgelegte Daten "irgendwann" aus der DB wieder zu verwenden, braucht man unserialze. HTH

              Kommentar


              • #8
                Original geschrieben von asp2php
                um Gotteswillen, natürlich macht keiner so 'n Unsinn. Du sagtest, du hast nicht verstanden, wie serialize funktioniert, daraufhin habe ich nur anhand Bsp. gezeigt, wie man mit serialize und unserialize umgeht. Das war's.

                Wann wird serialize eingesetzt ... schau mal in die Tutorial da ist ein Bsp. ... da wird ein ganzes Array in einem DB-Feld abgelegt, indem man serialize anwendet, um die abgelegte Daten "irgendwann" aus der DB wieder zu verwenden, braucht man unserialze. HTH
                War schon klar.
                Mein Unglaube, warum man in diesem Falle serialize anwenden sollte, bezog sich auch nicht auf dein Kommentar sondern auf eine frühere Antwort wo jemand sagt das man auch serialize verwenden könnte.
                Grüße
                Andreas

                Kommentar

                Lädt...
                X