Mehrseitiges Formular: Var-Übergabe hin- u. zurück

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrseitiges Formular: Var-Übergabe hin- u. zurück

    Hallo Zusammen,

    habe jetzt die letzten sechs Stunden gesurft, gesucht, gelesen und getüfftelt und habe es noch immer nicht endgültig hinbekommen.

    Variablen in einem mehrseitigen Formular in die eine Richtung zu übergeben, ist kein Problem. Aber leider habe ich es nicht hinbekommen die Variablen in beide Richtungen zu übergeben , also von Formular-Seite 1 an Seite 2, von Seite 2 an Seite 3 und wieder zurück falls der User noch nachträglich etwas ändern möchte vorm Versenden.

    Notfalls könnte ich das auch mit Session-IDs oder Cookies lösen aber ich mag nicht glauben, dass man es nicht hinbekommt. Ich jedenfalls hasse es, dass Gefühl zu haben auf'm Schlauch zu stehen. Liegt bestimmt an der Uhrzeit
    PHP Code:
    <?php
    //seite1.php
    function hiddenSchleife()

       while (list (
    $key$val) = each ($_POST))
       {
         echo 
    "<input type=hidden name='".$key."' value=\""htmlspecialcharsstripslashes($val))."\">";
       }
    }
    ?>
    <html>
    <form action='seite2.php' method='post' >
    Vorname <input type=text name='vorname' value='<?php echo"$vorname"?>'><br>
    Nachname <input type=text name='nachname' value='<?php echo"$nachname"?>'>
    <? hiddenSchleife(); ?>
    <input type='submit' name='vor' value=' seite 2 '>
    </form>
    </html>
    Mit der Function 'hiddenSchleife' werden die $_POST-Variablen ausgelesen und in das Formular als hidden-Felder geschrieben.

    PHP Code:
    <?php
    //seite2.php
    include('datra.php');


    if (
    $zuruck1)
    {
       
    //echo"<META HTTP-EQUIV=\"refresh\" content=\"0; URL=seite1.php\">";
       
    header ("location: seite1.php");
    }
    elseif  (
    $vor3)
    {
       
    //echo"<META HTTP-EQUIV=\"refresh\" content=\"0; URL=seite3.php\">";
       
    header ("location: seite3.php");
    }

    ?>
    <html>
    <form action='<?php echo"$_SERVER[PHP_SELF]"?>' method='post'>
    Ihre Adresse <input type=text name='adr' value='<?php echo"$adr"?>'><br>
    Ihr Wohnort <input type=text name='ort' value='<?php echo"$ort"?>'><br>
    <?php hiddenFelder(); ?>
    <input type='submit' name='[COLOR=orangered]zuruck1[/COLOR] ' value=' Seite 1 '>
    <input type='submit' name='[COLOR=orangered]vor3[/COLOR] ' value=' Seite 3 '>
    </form>
    <html>
    Die Eingaben der Seite 1 werden ohne Probleme an Seite 2 übergeben, nur die Eingaben der Seite 2 werden nicht an die Vor- oder Folgeseite übergeben. Weil ich es nicht hinbekommen durch die zwei Submit-Button, die ich vorher Abfragen muss.

    Kann mir jemand netterweise einen neuen Ansatz geben?

    Für Eure Hilfe im voraus vielen Dank!

    Gruss
    Jofris

  • #2
    Re: Mehrseitiges Formular: Var-Übergabe hin- u. zurück

    if ($zuruck1)
    hast du geprüft, ob es diese variable gibt, ob sie einen wert hat, und ob sie den wert hat, den du erwartest?
    elseif ($vor3)
    siehe oben.
    <input type='submit' name='[COLOR=orangered]zuruck1[/COLOR] ' value=' Seite 1 '>
    <input type='submit' name='[COLOR=orangered]vor3[/COLOR] ' value=' Seite 3 '>
    sind die leerzeichen hinter den name-werten nur beim aufbereiten des codes für's forum entstanden, oder stehen die da wirklich drin? wenn letzteres, warum?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Danke!

      Hallo Wahsaga,

      vielen Dank für die Tipps. Als ich Deine Antwort gelesen hatte, dachte ich lieber Gott lass es einfach nur an einem Leerzeichen liegen.
      Leider lag es nicht an dem
      hast du geprüft, ob es diese variable gibt, ob sie einen wert hat, und ob sie den wert hat, den du erwartest?
      Ja, habe ich überprüft, die Variablen kommen an. Habe das Script zum Testen wie folgt geändert -
      Der Inhalt des echo-Befehls wird richtig ausgegeben.
      PHP Code:
      //seite2.php -- Seite von der ich eine Seite zurück gehen will
      if (isset($zuruck1))
      {
         echo
      "\$adr: $adr";
      }
      elseif (isset(
      $vor3))
      {
         echo
      "\$adr: $adr";

      Aber die Variable $adr exisitert auf der Folgeseite nicht mehr.
      PHP Code:
      //seite1.php -- Vorseite
      if (isset($adr))
      {
       echo 
      "\$adr exisitert - Inhalt: $adr";
      }
      else
      {
       echo 
      "\$adr existiert nicht";

      Ich sehe das doch richtig, dass beim Absenden des Formulars durch Anklicken einer der beiden Submit-Button der Inhalt des Formulars über POST an den Server gesandt wird. Dort wird dann die If-Schleife aufgerufen und überprüft welchen Submit-Button gedrückt wurde. Der Inhalt des Formulars ist ebenfalls in der If-Schleife abfragbar. Wenn jetzt der header(location)-Befehl zum Aufrufen einer neuen Seite in der If-Schleife ausgeführt wird, dann wird eine neue Seite an den Browser gesandt und die Variablen aus dem Formular gehen verloren!?

      Wenn ich dem header-Befehl folgendes mitgebe, dann funktioniert es:
      PHP Code:
      header("location: seite1.php?adr='$adr'"); 
      Aber da es sich um eine ganze Menge Formularfelder handelt, über mehrere Formularseiten verteilt, habe ich gehofft, dass man die $_POST-Variable automatisch mit all seinem Inhalt übergeben kann, so wie es von der ersten Seite an die zweite ja auch problemlos funktioniert!?

      Noch jemand vielleicht einen neuen Denkansatz?
      Im voraus vielen Dank!!!

      Gruß
      Jofris

      Comment


      • #4
        Re: Danke!

        Original geschrieben von Jofris
        Wenn jetzt der header(location)-Befehl zum Aufrufen einer neuen Seite in der If-Schleife ausgeführt wird, dann wird eine neue Seite an den Browser gesandt und die Variablen aus dem Formular gehen verloren!?
        ja.

        (was heisst hier "verloren gehen"? in der zweiten seite hast du nur noch script-interne variablen, aber doch serverseitig kein "formular" mehr ...)
        so wie es von der ersten Seite an die zweite ja auch problemlos funktioniert!?
        das funktioniert deshalb, weil die action des formulars auf der ersten seite auf die zweite seite zeigt, und du ein ganz normales html-formular mit post abschickst.

        eine weiterleitung per header ist aber etwas ganz anderes, als ein post-formular abzuschicken.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Comment


        • #5
          Danke!

          Vielen Dank Wahsaga,

          manchmal muss man sich die Logik einfach noch mal bestätigen lassen.

          Eine Lösung ist mir dazu leider bis jetzt auch noch nicht eingefallen. Leider habe ich momentan auch keine Zeit an diesem Problem weiterzutüfteln. Aber ich bleibe am Ball!

          Also falls jemanden noch eine neue Idee dazu einfällt, nur zu, ich bin für jeden Ansatz dankbar!

          Schönen Freitag und vielen Dank im voraus!
          Gruß
          Jofris

          Comment


          • #6
            hi Jofris

            Danke für deine Function, habe mal deine function hiddenSchleife verwendet für ein mehrseitiges Formular.
            hiddenSchleife Funktioniert einwandfrei, aber nur im Firefox1.0 Browser.
            Im IE6 und Opera7.2 kommt die Variable nicht mit auf die zweite Seite.

            Das Problem könnte sein, das ich ein Stoffmuster als Bild habe das bei anklicken zur 'nächsten Seite' führt wo Menge und Lieferadresse eingegeben wird

            Formular.php
            PHP Code:
            <?php include 'hiddenSchleife.php'?>
            <form name="form1" method="post" action="naechste_seite.php">
            <input name="stoff" type="image" value="112-3" id="stoff"
             src="img/muster/muster_112-3.jpg" alt="112-3" width="100" height="70" border="0">
            <?php hiddenSchleife(); ?>
            </form>
            nächste Seite
            PHP Code:
            <?php echo $stoff?>
            keine Ausgabe der Variablen $stoff

            wenn ich aber im Formular.php ein textfeld habe
            PHP Code:
              <input name="stoff" type="text" id="stoff" value="4oz"
            wird die Variable $stoff in jedem Browser weitergegeben

            Ich kann nicht erkennen was im Input Type Image falsch ist...

            Hat mir jemand die Lösung


            Wünsche einen schöönen Sonntag
            Last edited by hennash; 19-12-2004, 13:01.
            hennash@gmx.li

            Comment


            • #7
              Original geschrieben von hennash

              PHP Code:
              <?php include 'hiddenSchleife.php'?>
              <form name="form1" method="post" action="naechste_seite.php">
              <input name="stoff" type="image" value="112-3" id="stoff" 
              src="img/muster/muster_112-3.jpg" alt="112-3" width="100" height="70" border="0">
              <?php hiddenSchleife(); ?>
              </form>
              Wo ist das Problem wird das Bild nicht dargestellt oder wie oder was???

              BTW: Posting umbrechen !
              Last edited by Payne_of_Death; 19-12-2004, 11:55.
              [color=blue]MfG Payne_of_Death[/color]

              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
              [color=red]Merke:[/color]
              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

              Murphy`s Importanst LAWS
              Jede Lösung bringt nur neue Probleme
              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

              Comment


              • #8
                hi


                Wo ist das Problem wird das Bild nicht dargestellt oder wie oder was???
                wenn ich das Formular absende, in dem ich auf das bild klicke,
                wird die variable $stoff nicht übergeben im IE6, wohl aber im Firefox.

                mit phpinfo(32); kann ich auf der Folgeseite alle variablen auslesen.

                Einen Auszug aller _Post Variablen:

                im IE6:
                PHP Code:
                _POST["stoff_x"76  
                _POST
                ["stoff_y"34 
                im Firefox:
                PHP Code:
                _POST["stoff_x"]    67 
                _POST
                ["stoff_y"]    46 
                _POST
                ["stoff"]    112-
                und Opera:
                PHP Code:
                _POST["stoff_x"]    60     
                _POST
                ["stoff_y"]    36 
                Last edited by hennash; 19-12-2004, 13:52.
                hennash@gmx.li

                Comment


                • #9
                  ist ja auch kein Wunder

                  lies dir das mal durch und überarbeite entsprechend:

                  http://faq-php.de/q/q-formular-image.html
                  [color=blue]MfG Payne_of_Death[/color]

                  [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                  [color=red]Merke:[/color]
                  [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                  Murphy`s Importanst LAWS
                  Jede Lösung bringt nur neue Probleme
                  Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                  In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                  Comment


                  • #10
                    ja hab ich eben gelesen

                    wenn richtig verstanden, dann soll man 'input type image' nur zu submit Zwecken verwenden.

                    Komisch nur dass Firefox neben dem var_x und var_y auch var weitergibt.


                    Danke für die Info Payne_of_Death
                    hennash@gmx.li

                    Comment

                    Working...
                    X