Heiko Hirsch: "Variablen" über mehrere Dateien weitergeben

Hallo,
ich habe eine html-Datei, die verschiedene Daten abfrägt:
Auszug:
 <form method="post" action="rechnung-post.php">
 <table border="0" cellpadding="4">
     <tr>
       <td>&nbsp;</td>
       <td>Anrede:</td>
       <td><input type="text" name="anrede" size="10"></td>
     </tr>
     <tr>

Diese Variable "anrede" bearbeite ich in der rechnung-post.php weiter:
<?php
$anrede = $_POST["anrede"];
<?php echo "<b>$anrede<br>$vorname $nachname <b><br><hr>" ?>

[....]

Nun möchte ich das - falls Eingaben falsch sind der Benutzer wieder zurückgehen kann. Dies mache ich über die back-Funktion von javascript.
Wenn alles ok ist sollen die Daten an eine weitere Datei geschickt werden:
rechnung-post2.php
Wenn ich dort wieder die Variable $anrede ausgeben will oder eine x-beliebige Variable so hat die Variable nun keinen Inhalt mehr.

Wie schaffe ich es eine Art "Dreierkette" zu gestalten, also html-Formulardaten an eine PHP-Datei zu übergeben und diese nochmal an eine zweite PHP-Datei?
Ist dies überhaupt möglich?
Vielen Dank
Heiko

  1. primtiv:
    inkludiere die formularseite auf der auswertungsseite wenn ein fehler auftritt - dann brauchst du auch dieses nicht barrierefreie history-back nicht

    1. primtiv:
      inkludiere die formularseite auf der auswertungsseite wenn ein fehler auftritt - dann brauchst du auch dieses nicht barrierefreie history-back nicht

      Danke, was aber wenn ich es genau so machen möchte?
      Also html-Formular nach PHP und nochmal nach PHP.
      Ist dies überhaupt möglich? Scheinbar nicht da der inhalt der Variablen verloren geht.

      1. Danke, was aber wenn ich es genau so machen möchte?
        Also html-Formular nach PHP und nochmal nach PHP.
        Ist dies überhaupt möglich? Scheinbar nicht da der inhalt der Variablen verloren geht.

        Würdest du dich mal mit "Jaroslav Jablonski" Post beschäftigen, dann wüsstest du jetzt dass dies selbstverständlich möglich ist.

        NOCHMAL:
        Stichwort: Affenformular

        1. Würdest du dich mal mit "Jaroslav Jablonski" Post beschäftigen, dann wüsstest du jetzt dass dies selbstverständlich möglich ist.

          NOCHMAL:
          Stichwort: Affenformular

          Hab es mir angesehen und finde es recht kompliziert. Mein Weg erschien mir einfacher zu sein. Also html Datei dort Variable an php Datei und wieder weitergabe an PHP-Datei.
          Nun muß ich sagen...Ich begreife dieses Affenformular nicht...Und mein Weg geht nicht...also muß ich es so sein lassen...Danke für die Antworten...falls mir doch noch irgendeiner helfen kann...wäre ich sehr dankbar...

          1. Stichwort: Affenformular
            Hab es mir angesehen und finde es recht kompliziert.

            Was ist denn an einem millionenfachbewährten Konzept kompliziert??

            Nun muß ich sagen...Ich begreife dieses Affenformular nicht...Und mein Weg geht nicht...also muß ich es so sein lassen...Danke für die Antworten...falls mir doch noch irgendeiner helfen kann...wäre ich sehr dankbar...

            Man nimmt ein PHP-Script, das beim parameterlosen Aufruf das leere Formular ausgibt, so wie dien HTML vmtl. aussieht. Man mache zwei Submits, einen "Absenden", einen "Korrigierebn". Das Formular ruft das gleiche PHP-Script wieder auf, aber jetzt mit Parametern. Dann verzeigst du:

            • Korrigieren-Button? Zeige das Formular nochmal an und belege die Formularfelder mit den übergebenen Werten vor (htmlspecialchars nicht vergessen!!)
            • Absenden-Button? Prüfe die Formulareingaben. Wenn was nicht in Ordnung ist, gib einen Hinweis aus und mache ansonsten das gleiche wie beim Korrigieren-Button. Ist alles in Ordnung, verarbeite die Daten und gib statt des Formulars eine Dankesseite aus.
            1. Mahlzeit,

              Ist alles in Ordnung, verarbeite die Daten und gib statt des Formulars eine Dankesseite aus.

              ... oder leite auf die "nächste Seite" weiter ...

              MfG,
              EKKi

              --
              sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              1. Ist alles in Ordnung, verarbeite die Daten und gib statt des Formulars eine Dankesseite aus.

                ... oder leite auf die "nächste Seite" weiter ...

                MfG,
                EKKi

                Hallo EKKi,
                und genau das geht nicht :(

                HTML-Seite --> erste_PHP_seite --> zweite_PHP_seite
                und sobald ich auf die "zweite_PHP_seite" verlinke haben alle Variablen keinen Inhalt mehr. Vermutlich "verliert" PHP Variablen sobald Sie über "mehrere" Dateien geschickt werden.

                1. Mahlzeit,

                  Ist alles in Ordnung, verarbeite die Daten und gib statt des Formulars eine Dankesseite aus.

                  ... oder leite auf die "nächste Seite" weiter ...

                  und genau das geht nicht :(

                  Natürlich geht das.

                  HTML-Seite --> erste_PHP_seite --> zweite_PHP_seite

                  und sobald ich auf die "zweite_PHP_seite" verlinke haben alle Variablen keinen Inhalt mehr.

                  Wieso brauchst Du auf der "nächsten Seite" überhaupt nochmal wieder alle Variablen? Anscheinend hast Du den Sinn eines Affenformulars noch nicht ganz verstanden - die prinzipielle Vorgehensweise ist folgendermaßen (unter Berücksichtigung des EVA-Prinzips):

                  <?php  
                  [code lang=php]  
                    
                  function sind_ueberhaupt_daten_in_POST_drin() {  
                    // bla  
                  }  
                    
                  function sind_alle_daten_korrekt() {  
                    // blubb  
                  }  
                    
                  function daten_verarbeiten() {  
                   // laber  
                  }  
                    
                  function bastele_fehlermeldungen() {  
                    // fasel  
                  }  
                    
                    
                  if (sind_ueberhaupt_daten_in_POST_drin()) {  
                    if (sind_alle_daten_korrekt()) {  
                      daten_verarbeiten();  
                    
                      header("Location: http://www.example.com/naechste_Seite.php?irgendeine_statusmeldung=$foobar");  
                    } else {  
                      bastele_fehlermeldungen();  
                    }  
                  }  
                    
                  
                  ~~~?>  
                  <html>  
                  [...]  
                  <form target="<?php echo $\_SERVER['PHP\_SELF']; ?>" method="post">  
                  <!-- Formularelemente -->  
                  </form>  
                  [...]  
                  </html>[/code]  
                    
                    
                  
                  > Vermutlich "verliert" PHP Variablen sobald Sie über "mehrere" Dateien geschickt werden.  
                    
                  PHP verliert gar nichts. Variablen sind nunmal nur während der Laufzeit eines Skripts gültig. Wenn Du den Inhalt von Variablen an ein anderes PHP-Skript übergeben willst, musst Du diese Werte per POST oder GET (wobei ich im Zusammenhang mit Affenformularen [header()](http://de.php.net/manual/de/function.header.php) und GET empfehlen würde) übergeben.  
                    
                    
                  MfG,  
                  EKKi  
                  
                  -- 
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  
                  1. Mahlzeit,

                    Ist alles in Ordnung, verarbeite die Daten und gib statt des Formulars eine Dankesseite aus.

                    ... oder leite auf die "nächste Seite" weiter ...

                    und genau das geht nicht :(

                    Hallo,
                    ich habe vermutlich mich falsch ausgedrückt.

                    Kunde füllt html-Formular aus bestätigt mit "OK"
                    Dann öffnet sich PHP-Datei:
                    Dort sieht Kunde was er ausgefüllt hat.
                    Wenn Kunde merkt das falsch ist geht er zurück ansonsten geht er auch dort auf "OK" und dann öffnet sich das zweite PHP-Formular.

                    Die Daten werden in der ersten PHP Datei korrekt angezeigt aber sobald ich sie auf die nächste PHP-Datei übertrage sind alle Variablen gelöscht.

                    Ich habe dies probiert mit Internet Explorer und mit Mozilla Firefox.

                    P.S. Es ist wirklich toll

                    • wie schnell bei selfhtml geholfen wird
                    • und das hier wirklich Profis am mitlesen sind.
                      Ich vermute mal, das Ihr alle viele Jahre schon euch mit PHP beschäftigt.
                    1. ich habe vermutlich mich falsch ausgedrückt.

                      nein, du hast es nur falsch verstanden

                      [...]

                      du sprichst immer von html datei, php auswertung mit fehlerseite und dankeseite

                      es gibt nur EIN file, das macht alles

                      wenn es keine post daten gibt, wird das leere formular angezeigt
                      wenn es post daten gibt, diese aber fehler enthalten wird die "korrekturvariante" angezeigt
                      wenn es keine fehler gibt, wird die "hier können sie ihre daten nochmal ändern"-variante angezeigt
                      wenn man dann nochmal abschickt (immer wieder auf das selbe script) wird die danke seite angezeigt

                      auch das html formular wird vom php script erzeugt und befüllt auf alle 3 (oder 4) "seiten"

                      Ich habe dies probiert mit Internet Explorer und mit Mozilla Firefox.

                      das hat nix mit dem browser zu tun

                    2. Mahlzeit,

                      Kunde füllt html-Formular aus bestätigt mit "OK"
                      Dann öffnet sich PHP-Datei:
                      Dort sieht Kunde was er ausgefüllt hat.
                      Wenn Kunde merkt das falsch ist geht er zurück ansonsten geht er auch dort auf "OK" und dann öffnet sich das zweite PHP-Formular.

                      Und genau diese Vorgehensweise ist - gelinde gesagt - Blödsinn. Glaub uns. Tu Dir selbst einen großen Gefallen: beschäftige Dich mit Affenformularen und stelle Dein Formular entsprechend um. Es ist vielleicht einmalig ein größerer Aufwand, aber Du ersparst Dir Doppelt- und Mehrfacharbeit, da die gesamte Formularverarbeitung an EINER Stelle erfolgt.

                      Die Daten werden in der ersten PHP Datei korrekt angezeigt aber sobald ich sie auf die nächste PHP-Datei übertrage sind alle Variablen gelöscht.

                      Ja, sicher. Und wenn Du den letzten Absatz meines Beitrages gelesen und verstanden hättest, wüsstest Du auch warum. Variablen existieren nur zur Laufzeit des Skripts. Skript beendet = Variablen weg.

                      Ich habe dies probiert mit Internet Explorer und mit Mozilla Firefox.

                      Das ist irrelevant, da es sich weder um ein Client-, noch ein Server-, sondern eher ein Verständnisproblem Deinerseits handelt.

                      • und das hier wirklich Profis am mitlesen sind.

                      Definiere "Profi". :-)

                      Ich vermute mal, das Ihr alle viele Jahre schon euch mit PHP beschäftigt.

                      Das ist relativ. PHP seit 9 Jahren, verschiedene andere Sprachen teilweise länger, teilweise kürzer.

                      MfG,
                      EKKi

                      --
                      sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                      1. Ja, sicher. Und wenn Du den letzten Absatz meines Beitrages gelesen und verstanden hättest, wüsstest Du auch warum. Variablen existieren nur zur Laufzeit des Skripts. Skript beendet = Variablen weg.

                        Hallo Ekki,

                        vielen Dank für den nochmaligen Hinweis...So langsam verstehe ich es...9 Jahre PHP...Ok, trozdem Danke das Du nocheinmal mir ausführlich geantwortet hast. Ich werde es nun auf den von euch geschilderten Weg versuchen.
                        Vielen Dank.

                2. Hello,

                  und genau das geht nicht :(

                  HTML-Seite --> erste_PHP_seite --> zweite_PHP_seite
                  und sobald ich auf die "zweite_PHP_seite" verlinke haben alle Variablen keinen Inhalt mehr. Vermutlich "verliert" PHP Variablen sobald Sie über "mehrere" Dateien geschickt werden.

                  Wo stehen denn Deine "Variablen", die PHP weiterleiten soll?

                  1b      2b
                  Server        O       O
                               / \     / \             /   \   /   \            /     \ /     \ Client    O       O       O
                            1a      2a      3a

                  1a = "Leerer Browser", Initial-Request wird abgesendet über Eingabe in der Adressleiste
                  2a = Erste Antwort kommt vom Server, Formular wird vom Briwser angezeigt,
                       eventuell sind die Dialogelementen vorbelegt.
                       Änderungen werden durch den User vorgenommen und der zweite Request an den
                       Server abgesendet
                  2b = Der Server erhält z.B. im Post-Body des Requests Parameter, die
                       das Script anschließend als Variablen zur Verfügung stellt.
                       Diese stammen aus dem Formular, dass der Client unter 2a abgeschickt hat
                  3a = Der Client erhält vom Server ein neues Formular. Dieses enthält wieder
                       vorbelegte Dialogelemente.
                       Er kann beim Request _nur_ solche Dialogelemente in "Name-Value-Pärchen"
                       des Post-Bodys verwandeln und an den Server senden.

                  Wenn Du also "Variablen weiterreichen" willst, musst Du sie dem Client im Formular zur Verfügung stellen, z.B. als <input> oder als <hidden>-Elemente.

                  Ein harzliches Glückauf

                  Tom vom Berg

                  http://bergpost.annerschbarrich.de
                  .

                  --
                  Nur selber lernen macht schlau
  2. Wie schaffe ich es eine Art "Dreierkette" zu gestalten, also html-Formulardaten an eine PHP-Datei zu übergeben und diese nochmal an eine zweite PHP-Datei?

    Dein Konzept ist wirr und unausgereift, beschäftige dich mit Affenformularen.

    JJ