Mehrseitige Formulardaten mit Session

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

  • Mehrseitige Formulardaten mit Session

    Hallo zusammen !

    Ich habe auf 6 PHP - Seiten Formularfelder, die nacheinander ausgefüllt werden sollen. Seite1.php -> submit -> seite2.php -> submit -> seite3.php usw. Erst danach sollen die Daten in einem Rutsch in eine MySQL - DB geschrieben werden !

    Es kommen so c.a. 100 Felder zusammen, sodaß eine normale Übertragung per HTTP GET/POST nicht in Frage kommt. ( Manipulation !!!), hidden fields zu aufwendig, etc ...

    Nun soll es mit der PHP Session - Funktion möglich sein, Variablen über die gesamte Sitzung zu speichern.

    Ich kann über den form action="blabla.php" Aufruf erfolgreich die Session-Id mitübertragen, aber weder in der temporären Session auf der Festplatte die eingetragene Variable mit Wert sehen (=> wert |N , noch im dann aufzurufenden Formular kann ich áuf die zu registrierenden Variablen zugreifen. Es scheint, daß der Variblenwert des Formulars mit einem SUBMIT nicht in die Session aufgenommen wird.

    Registriere ich die Variable per Hand => $_SESSION['wert'] = "123"; bekomme ich die Werte auf der nächsten Seite angezeigt.

    Am hilfreichsten wäre für mich einfach ein Codeschnipsel über mehrere Formularseiten, um die Übetragung und Registrierung von Variablen aus Formulardaten zu verstehen.

    Viele Grüße

    Stefan

  • #2
    Re: Mehrseitige Formulardaten mit Session

    Original geschrieben von sdecher
    Am hilfreichsten wäre für mich einfach ein Codeschnipsel über mehrere Formularseiten, um die Übetragung und Registrierung von Variablen aus Formulardaten zu verstehen.
    nö. warum sollten wir die code posten? das steht ja alles im manual.

    viel wichtiger ist doch, warum es BEI DIR nicht funktioniert. und dazu solltest DU evtl. mal deinen RELEVANTEN code posten.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Mehrseitige Formulardaten mit Session

      Hallo !

      Gelobe Besserung. Hier mein Versuchsanordnung :

      XAMPP 1.2 unter Windows NT 4.0 SP 5
      - Apache 2.0.48
      - PHP 4.3.3

      [PHP.INI]
      Code:
      register_globals = off
      session.use_cookies = 0
      session.name = PHPSESSID
      session.auto_start = 0
      session.cookie_lifetime = 0
      [Seite1.php]
      PHP-Code:
      <?php
      session_start
      ();
      ?>
      <html>
      <head>
      </head>
      <body>
      <form method="POST" action="seite2.php?<?=SID?>">
      <p><input type="text" name="wert1" size="4"></p>
      <p><input type="text" name="wert2" size="4"></p>
      <input type="hidden" name="PHPSESSID" value="<?=session_id() ?>">
      <p><input type="submit" value="Abschicken" name="B1">
      </form>
      </body>
      </html>
      => Sessiondatei wird lokal angelegt => OKAY 1

      [Seite2.php] => Sessionid wird korrekt übermittelt !
      PHP-Code:
      <?php
      session_start
      ();
      echo 
      $wert1;                ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert1'];    ==> LEER
      echo "<p>";
      echo 
      $wert2;                ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert2'];    ==> LEER
      ?>
      <html>
      <head>
      </head>
      <body>
      <form method="POST" action="seite3.php?<?=SID?>">
      <p><input type="text" name="wert3" size="4"></p>
      <p><input type="text" name="wert4" size="4"></p>
      <input type="hidden" name="PHPSESSID" value="<?=session_id() ?>">
      <p><input type="submit" value="Abschicken" name="B1">
      </form>
      </body>
      </html>
      => Sessiondatei vorhanden, aber leer !

      [Seite3.php] => Sessionid wird korrekt übermittelt !
      PHP-Code:
      <?php
      session_start
      ();
      echo 
      $wert1;              ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert1'];  ==> LEER
      echo "<p>";
      echo 
      $wert2;              ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert2'];  ==> LEER
      echo "<p>";
      echo 
      $wert3;              ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert3'];  ==> LEER
      echo "<p>";
      echo 
      $wert4;              ==> LEER
      echo "<p>";
      echo 
      $_SESSION['wert4'];  ==> LEER
      ?>
      <html>
      <head>
      </head>
      <body>
      <form method="POST" action="seite4.php?<?=SID?>">
      <p><input type="text" name="wert5" size="4"></p>
      <p><input type="text" name="wert6" size="4"></p>
      <input type="hidden" name="PHPSESSID" value="<?=session_id() ?>">
      <p><input type="submit" value="Abschicken" name="B1">
      </form>
      </body>
      </html>
      => Sessiondatei vorhanden, aber leer !

      Wenn ich unter session_start(); auf jeder Seite die im Formular einzutragenden Variablen
      registriere, sehe ich in der lokalen Sessiondatei nur

      Code:
      wert1|N;wert2|N;wert3|N; ...
      d.h. die Sessionverwaltung von PHP legt zwar die Variablen an, übernimmt aber nicht die
      Formularwerte.

      Meine Fragen :
      1. Wie speichere ich die im Formular eingegebenen Werte als Sessionvariablen,
      sodaß ich in beliebigen Folgeformularen darauf zugreifen kann.
      2. Es sollen über 6 Seiten Formulardaten eingegeben werden und auf einer 7. PHPSeite
      in die DB gecshrieben werden.
      3. Ich muß davon ausgehen, daß User die Cookiespeicherung ablehnen.

      Gruß

      Stefan

      EDIT:
      [php]+[code]-tags by Abraxax
      Zuletzt geändert von Abraxax; 12.12.2003, 10:46.

      Kommentar


      • #4
        Re: Mehrseitige Formulardaten mit Session

        Original geschrieben von sdecher
        Gelobe Besserung.
        dann gwöhne die auch die [php ]+[code ]-tags an.

        hier eine veränderung im code. so klappt es.
        entsprechend muss du deine anderen dateien auch anpassen.

        [Seite2.php] => Sessionid wird korrekt übermittelt !
        PHP-Code:
        <?php
        session_start
        ();

        // du musst auch erst einmal die werte in die session eintragen.
        $_SESSION['wert1'] = isset($_POST['wert1']) ? $_POST['wert1'] : '';
        $_SESSION['wert2'] = isset($_POST['wert2']) ? $_POST['wert2'] : '';

        echo 
        $wert1;                // ==> LEER
        echo "<p>";
        echo 
        $_SESSION['wert1'];    // ==> NICHT MEHR LEER
        echo "<p>";
        echo 
        $wert2;                // ==> LEER
        echo "<p>";
        echo 
        $_SESSION['wert2'];    // ==> NICHT MEHR LEER
        ?>
        <html>
        <head>
        </head>
        <body>
        <form method="POST" action="seite3.php?<?php echo SID?>">
        <p><input type="text" name="wert3" size="4"></p>
        <p><input type="text" name="wert4" size="4"></p>
        <input type="hidden" name="PHPSESSID" value="<?php echo session_id(); ?>">
        <p><input type="submit" value="Abschicken" name="B1">
        </form>
        </body>
        </html>
        alternativ kannst du auch das hier verwenden. so musst du nicht alle indizies manuell angeben.

        PHP-Code:
        foreach($_POST as $key => $value)
            
        $_SESSION[$key] = $value


        verwende auch mal lieber nicht mehr die kurzschreibweise <?=session_id() ?>, sondern das korrekte echo.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Mehrseite Formulardaten mit Session

          Hallo !

          Zunächst herzlichen Dank für die funktionierende Lösung !

          Gibt es eigentlich eine Möglichkeit, die Sessionvariablen auszulesen und diesen automatisch den Variablennamen + Wert zuzuweisen, al la ..


          foreach($_POST as $key => $value)

          $_SESSION[$key] = $value;

          Hier weise ich ja den in $_POST gespeicherten Variablen die entsprechenden $_SESSION-Werte zu.

          Hintergrund:

          Ich möchte in verschiedenen Formularen auf die in der Sessiongespeicherten Werte zugreifen, möchte aber vermeiden, diese jeweils mit einer include ("blabla.inc"), bzw requiere einzubinden.

          Also, gibt´s eine Schleife, die meine Session durchläuft, und mir aus den serializierten Variablen $variablen + dem Wert erzeugt ?

          Gruß

          Stefan

          Kommentar


          • #6
            ich vermute, du suchst extract()
            Kissolino.com

            Kommentar


            • #7
              nachgebaut

              hallo leute,

              ich habe mal versucht das ganze nachzubauen.
              lauft auch echt klasse. nur habe ich zwei probleme. da ich mit php noch nicht viel erfahrung habe.

              1. die daten vom ersten formaulr werden mir echt sauber mitgenommen.
              nur wenn ich noch eine zweite seite mit weiteren eingabefeldern einbaue. werde diese mir nicht mehr in der session mitgespeichert. Ich habe nach dem zweiten formlar einfach eine leere seite mit einem link zur seite gemacht, wo die daten kommen sollen. es kommen aber nur die vom ersten formular. die vom zweiten fehlen leider komplett. wie kann ich allso noch daten in eine bereits bestehende session einfügen???

              2. was fange ich mit der php.ini an. ich habe diese mal wegelassen und es geht trotzdem!

              vorab schon mal danke

              Kommentar


              • #8
                hast du auf jeder seite session_start() oben drin?

                dein 2. punkte verstehe ich irgendwie nicht.
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  nachgebaut

                  der session_start ist in allen seiten drin.
                  vergiss den 2 punkt. den es geht auch ohne.
                  habe folgenden script in allen seiten eingebaut:
                  PHP-Code:
                  <?php 
                  session_start
                  ();
                  /*automatische übergabe aller variablen in die session*/
                  foreach($_POST as $key => $value)
                      
                  $_SESSION[$key] = $value;
                  /*enden der automatischen übergabe*/
                  ?>
                  EDIT:
                  php.tags by Wotan.
                  Gewöhne dir bitte an die PHP-Tags zu verwenden



                  die session id wir auch auf allen seiten angezeigt, wenn ich sie mit
                  echo session_id(); abrufe.
                  Zuletzt geändert von Wotan; 08.01.2004, 17:36.

                  Kommentar


                  • #10
                    MACH ENDLICH MAL SELBER DIE PHP-TAG REIN!


                    und dann gehst du nur die indizes von $_POST durch. ist ja klar, dass du dann bei der $_SESSION keine ausgabe der daten der ersten seite bekommst. schliesslich sprichst du diese array-keys nciht mehr an.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      was heißt hier selber machen

                      Was soll der dumme spruch. mach die php-tags selber rein.

                      ich holle mir hier nur anregungen, die in keinem php-buch zu finden sind.
                      es gibt viele andere, die sich hier auf dieser seite nur die fertigen codes klauen und diese dann für geld als ihre eigene verkaufen.
                      so einer bin ich nicht. ich treibe mich hier nur rum, weil es mir spass macht, selber sachen zu machen, und wie kann es besser lernen, als wie man einfach versucht solche ansätze nachzubauen, zu verändern und sich dabei einmal anschaut, was die einzelnen befehle machen.

                      aussderm lauft das ganze nun komplett.

                      so feierabend.

                      Kommentar


                      • #12
                        Re: was heißt hier selber machen

                        Original geschrieben von in-power
                        Was soll der dumme spruch. mach die php-tags selber rein.
                        naj wenn es für dich zu schwer ist die [PHP ] Tags mit der hand zu schreiben, nutze doch den button ....
                        und was heisst hier dummer spruch????? er hatte dich schliesslich schon einmal darauf angesprochen
                        h.a.n.d.
                        Schmalle

                        http://impressed.by
                        http://blog.schmalenberger.it



                        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                        ... nur ohne :-)

                        Kommentar


                        • #13
                          dummer spruch

                          ich tippe die codes schon selber ein.
                          nicht einfach per strg+c strg+v.

                          aber wenn ihr anderer meinung seit kann ich nichts machen.

                          Kommentar


                          • #14
                            In Formular hast du oben eine über den Formular-Feld verschieden Buttons unterandern auch einen mit PHP. Diser ist gemeint mit dem PHP-Tags!!!!
                            *winks*
                            Gilbert
                            ------------------------------------------------
                            Hilfe für eine Vielzahl von Problemen!!!
                            http://www.1st-rootserver.de/

                            Kommentar


                            • #15
                              man verstehe es doch endlich mal. du sollst UM DEINEN CODE einfach nur die php-tags machen.

                              du schreibst so ...

                              // code und
                              // noch mehr code
                              echo $_SERVER['PHP_SELF'];
                              // und weiter gehts.

                              du sollst aber so schreiben.

                              PHP-Code:
                              // code und
                              // noch mehr code
                              echo $_SERVER['PHP_SELF'];
                              // und weiter gehts. 
                              und wenn du das immer noch nicht begriffen hast, klicke bei meinem post auf 'zitat' und lerne.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X