mehrseitige Formulare in Session speichern ?!?!

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

  • mehrseitige Formulare in Session speichern ?!?!

    Hallo allerseits,

    ich habe ein mehrseitiges Formular gebastelt. Auf jeder Seite sind es 30 Datensätze (durch LIMIT $Anfang, 30 unterteil). Ich möchte, daß der Benutzer die Formularseiten nacheinander bearbeitet und anschließend die gesamten Daten in einem Schritt in die DB geschrieben werden.

    Ich denke eine SESSION ist sehr gut geignet, die Daten ersmal zwischen zu speichern. Hier habe ich Problem und zwar wenn ich von der ersten Seite auf die 2. gehe, werden die 30 Zeilen in Session registriert. Wenn ich aber dann auf weiter gehe, werden die neuen 30 Zeile auch in Session geschrieben aber die Daten von der 1. Seite überschrieben.

    Wie kann ich es denn lösen?

    Hier mein Code:
    PHP-Code:
    $anfang_select 0;
            if (isset(
    $_REQUEST['weiter']))
                {
                    foreach (
    $_REQUEST as $key => $value)
                        {
                            
    $_SESSION[$key] = $value;
                        }
                    
    $anfang_select $anfang_select 30;
                    
                } 
    Vielen Dank vorab
    Gruß, Otto

  • #2
    PHP-Code:
    $_SESSION[$key+30] = $value
    should work! ansonsten musste mit {} hantieren, oder auslagern. Der Grund für dein Problem sollte aber klar werden!

    Kommentar


    • #3
      Re: mehrseitige Formulare in Session speichern ?!?!

      aber die Daten von der 1. Seite überschrieben.
      wenn du sagst, die daten werden überschrieben, gehe ich davon aus, daß die indizies jeweils gleich sind? wenn ja, dann nimm andere.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        oder
        PHP-Code:
        $_SESSION[$anfang_select][$key] = $value
        Kissolino.com

        Kommentar


        • #5
          @wurzels lösung: find ich net so dolle, weil du da nacher nen multiarray hast und zwei schleifen zum auslesen brauchst. brauchste bei meiner nicht.

          stelle mir aber die frage, ob man wirklich 100e von Daten in der Session speichern sollte. Die wird ja doch ziemlich groß dann.

          Kommentar


          • #6
            ... stimmt schon ... allerdings brauchst du ein substr/regex/whatever-konstrukt,
            um die ursprünglichen keys zu erhalten ... allerdings ist die frage nach der
            sinnhaftigkeit berechtigt ... btw: ich liebe multidim-arrays
            Kissolino.com

            Kommentar


            • #7
              da hast du jetzt wiederum recht. ich war davon ausgegangen, dass es sich um ein nummerisches array handelt. weil er ja gesagt hat, dass er immer 30 ds ausließt.
              bei nem assoziativen array wäre deins wahrscheinlich schöner, vorallem weil man dann dann du unterindexe wahrscheinlich schon kennt. -> also nur eine schleife.

              Kommentar


              • #8
                Hallo,

                vielen Dank für die schnelle Hilfe.
                PHP-Code:
                $_SESSION[$key+30] = $value
                da meine $keys keine Zahlen sind, habe ich [$key."30"] verwendet und es geht.
                ansonsten musste mit {} hantieren, oder auslagern
                Wie kann ich mit {} arbeiten? und was meinst du mit "auslagern"? neue Session?? ne oder?

                gehe ich davon aus, daß die indizies jeweils gleich sind? wenn ja, dann nimm andere
                Ja, es ist so. Ich habe eine Tabelle, die viele Datensätze hat. Da ich die Bearbeitung der Daten im Formular übersichtlicher machen wollte, habe ich jeweils 30 Zeilen auf jede Seite begrenzt. - Also Feldernamen sind auf jeder Formularseite identisch.

                Kann man denn nicht in die Session in die jeweiligen Arrays die neuen Zeilen einfach anhängen, ohne neues Array zu erzeugen?

                stelle mir aber die frage, ob man wirklich 100e von Daten in der Session speichern sollte. Die wird ja doch ziemlich groß dann.
                Gibt es eine Alternative dazu? Wie macht man denn sowas normalerweise? Das ist mein erstes mal, mehrseitige Formulare zum Bearbeiten zu programmieren

                Danke nochmal

                Gruß, Otto

                Kommentar


                • #9
                  Wie kann ich mit {} arbeiten? und was meinst du mit "auslagern"? neue Session?? ne oder?
                  uninteressant! - wäre nur wichtig gewesen, wenns zahlen gewesen wären.

                  Kommentar


                  • #10
                    Original geschrieben von otto-mueller
                    Ja, es ist so. Ich habe eine Tabelle, die viele Datensätze hat. Da ich die Bearbeitung der Daten im Formular übersichtlicher machen wollte, habe ich jeweils 30 Zeilen auf jede Seite begrenzt. - Also Feldernamen sind auf jeder Formularseite identisch.
                    warum machst du das so? wäre es nicht eleganter,
                    - 1 datensatz zu holen,
                    - die id in der session zu speichern,
                    - den ds bearbeiten
                    - updaten
                    - den nächsten ds zu holen, dessen id > ist als $_SESSION['id']

                    ... scheint mir userfreundlicher ... alternativ schreibs in ne txt-datei, dann
                    kannst du auch morgen noch dran weiterarbeiten
                    Kissolino.com

                    Kommentar


                    • #11
                      1 DS pro Seite???

                      Hallo,


                      wäre es nicht eleganter,
                      - 1 datensatz zu holen,
                      - die id in der session zu speichern,
                      - den ds bearbeiten
                      - updaten
                      - den nächsten ds zu holen, dessen id > ist als $_SESSION['id']
                      Verstehe ich dich richtig, du meinst, daß ich auf jeder Seite statt 30 DS nur einen DS ausgeben soll, und diesen dann beim z. B. klicken auf "weiter" in DB schreibe und dann nächsten DS anzeigen usw.? So hätte ich bei 300 DS schon 300 Seiten - ich halte es nicht so für eine gute Idee. Oder habe ich dich falsch verstanden?

                      Außerdem ist mein Ziel, daß die Daten ganz zum Schluß einmal dem Benutzer zum bestätigen in einer Übersicht angezeigt werden und ers dann, wenn sie ok sind, dann per Knopfdruck alles in DB "updaten"/"inserten" Sowie hier im Forum auch, man schreibt seinen Text und lässt sich den Text mit "Vorschau" anzeigen, wenn es ok ist klickt man auf "Antworten" ansonsten korrigiert man den Text nochmal. Mein formular ist im gegensatz dazu mehrseitig.

                      Die Idee mit txt-Datei finde ich sehr gut - ich muß es noch probieren - DANKE

                      Gruß
                      Otto

                      EDIT:
                      Ich habe folgende lösung gebastelt und es funktioniert - jedenfalls bis jetzt ;-)

                      Otto


                      PHP-Code:
                      $feld1_temp $_SESSION['feld1'];
                      $feld2_temp $_SESSION['feld2'];
                      $feld3_temp $_SESSION['feld3'];
                      $feld4_temp $_SESSION['feld4'];

                      session_unregister('feld1');
                      session_unregister('feld2');
                      session_unregister('feld3');
                      session_unregister('feld4');

                      $_SESSION['feld1'] = array_merge($feld1_temp$_REQUEST['feld1']);
                      $_SESSION['feld2'] = array_merge($feld2_temp$_REQUEST['feld2']);
                      $_SESSION['feld3'] = array_merge($feld3_temp$_REQUEST['feld3']);
                      $_SESSION['feld4'] = array_merge($feld4_temp$_REQUEST['feld4']); 
                      Zuletzt geändert von otto-mueller; 07.03.2004, 20:21.

                      Kommentar

                      Lädt...
                      X