PHP - mehrseitige Formulare

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

  • #16
    laß ob_start etc. weg.

    Du mußt schlicht und ergreifend die Auswertung des POST-Arrays VOR dem html-Teil machen.

    Kommentar


    • #17
      @ Koala:
      Vielen Dank für die Info. Habe es wie folgt geändert und es klappt wunderbar:
      PHP-Code:
      <?php
      $gueltige_eingabe 
      true;
      $fehlermeldung_vorname "";
      $fehlermeldung_nachname "";
      if (
      $_POST["weiter"] == "Absenden") {
          if (
      $_POST["vorname"] == "") {
              
      $fehlermeldung_vorname "Bitte geben Sie Ihren Vornamen ein!";
              
      $gueltige_eingabe false;
          }
          if (
      $_POST["nachname"] == "") {
              
      $fehlermeldung_nachname "Bitte geben Sie Ihren Nachnamen ein!";
              
      $gueltige_eingabe false;
          }
          if (
      $gueltige_eingabe == false) {
              if(
      $fehlermeldung_vorname != "") {
                  echo 
      $fehlermeldung_vorname "<br>";
              }
              if(
      $fehlermeldung_nachname != "") {
                  echo 
      $fehlermeldung_nachname "<br>";
              }
          } else {
              
      header("Location: Test2.php");
          }
      }
      ?>
      <html>
      <head>
      <title>Teilnehmer</title>
      </head>
      <body>
      <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
          Vorname: <br><input name="vorname" type="text" value="<?php print htmlspecialchars($_POST["vorname"]); ?>"><br><br>
          Nachname: <br><input name="nachname" type="text" value="<?php print htmlspecialchars($_POST["nachname"]); ?>"><br><br>
          <input type="submit" name="weiter" value="Absenden" >
      </form>
      </body>
      </html>
      Könnte mir jemand erklären oder einen Hinweis geben, wieso die Eingaben
      in der File Test2.php nicht ausgegeben werden können. File Test2.php sieht wie folgt aus:
      PHP-Code:
      <?php
      print_r
      ($_POST);
      ?>
      Als Ausgabe bekomme ich nur: Array ( )

      Kommentar


      • #18
        PHP-Code:
        <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
        hast du das auch auf test2.php geändert?
        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

        Kommentar


        • #19
          Wie auf Test2.php geändert?

          PHP-Code:
          <form action="Test2.php" method="post"
          Muss ich dies noch irgendwo im Code einfügen? Falls ja, an welcher Stelle.

          Kommentar


          • #20
            wieso soll ers denn auf test2 ändern, wenn die Auswertung in test1 ist ?

            Das ist schon richtig so wie es ist.

            Was soll denn auf test2 passieren ?

            Eintragen in die DB kannst ja schon in test1 bei der Überprüfung der Eingabedaten wenn sie korrekt sind.

            Auf test2 kommt dann lediglich "Vielen Dank für .... ".

            Wenn Du Daten über mehrere Seiten hinweg transportieren möchtest,
            dann brauchst eine Session oder input hidden - Felder.

            Kommentar


            • #21
              Was soll denn auf test2 passieren ?
              Da wollte er gerade $_POST ausgeben - warum weiß ich auch nicht....
              Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

              Kommentar


              • #22
                Ich wollte es nur zu Testzwecken ausgeben. Normalerweise dürfe dies ohne Probleme gehen.

                Wieso werden die auf der Formularseite in die entsprechenden Felder eingetragenen Daten nicht aussgegeben?

                Kommentar


                • #23
                  zeig mal online.

                  Kommentar


                  • #24
                    Wie online zeigen? Weiß nicht bzw. habe keine Möglichkeit den Code online zu stellen. Den Code der File "Test1.php" (Eingabeformular) habe ich bereits am 28.04.07 um 21.37 Uhr gepostet. Der Code der File "Test2.php" - auf die die Weiterleitung erfolgt - sieht wie folgt aus:
                    PHP-Code:
                    <?php
                    print_r
                    ($_POST);
                    ?>
                    Wie bereits gesagt, ich will es nur zu Testzwecken ausgeben.

                    Kommentar


                    • #25
                      dann bleibt tontechnikers einwand immer noch aktuell.

                      und ich hoffe, du gehst nicht einfach auf test2.php, um sich das ergebnis anzuaschauen - das geht nämlich nur über die form.

                      Kommentar


                      • #26
                        Ich weiß nicht, worauf tontechnicker hinaus will. Ich will eingentlich Formulare über mehrere Seiten (mit Pflichtfeldern) erstellen, am Ende sollen alle Eingaben in die DB eingetragen werden.

                        Zur Zeit entwerfe ich die Grundstruktur - die wie folt aussieht: Auf dem ersten Formular soll der Benutzer Eingaben machen, wenn alle Felder ausgefüllt sind, soll die Weiterleitung auf eine andere Seite erfolgen, wo lediglich zum Testzwecken die gemachten Eingaben ausgegeben werden.

                        Der Tontechnicker meinte, ich soll
                        PHP-Code:
                        <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
                        durch
                        PHP-Code:
                        <form action="Test2.php" method="post"
                        ersetzen. Wenn ich dies mache, kommt der Benutzer auf die zweite Seite, auch wenn er auf der Ersten nicht alle Felder ausfüllt. Genau das will ich nicht haben, nachdem er auf der ersten Seite alle Felder ausgefüllt hat, soll es möglich sein, auf die andere Seite zu kommen. Nach meinen Kenntnissen erzwinge ich dies mit
                        PHP-Code:
                        <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
                        und auf die Weiterleitung auf die andere Seite ist ja mit
                        PHP-Code:
                        header("Location: Test2.php"); 
                        realisiert. Die Auswertung der Eingaben kann oder besser gesagt muss ja auf der ersten Seite erfolgen weil es in diesem Fall nicht möglich ist
                        PHP-Code:
                        <form action="Test2.php" method="post"
                        zu verwenden und die Eingaben somit nicht auf die zweite Seite "übernommen bzw. übertragen" werden können.

                        Bleibt nun die Frage, wie ich die Eingaben auf der zweiten Seite ausgeben kann. Gibt es da keine Möglichkeit mit include oder etwas ähnlichem?

                        Kommentar


                        • #27
                          Das ist soweit richtig, $_POST ausgeben kannst du aber nur wenn du auch Daten über Post verschickst. Mit header ( 'test2.php' ); werden jedenfalls keine Daten verschickt.
                          Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                          Kommentar


                          • #28
                            @ tontechnicker: Ich stimme dir vollkommen zu.

                            Da ich hier Pflichtfelder habe und mit
                            PHP-Code:
                            <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
                            arbeiten muss, könnt ich die Benutzereingaben, auf der Seite - wo Sie eingegeben wurden - auswerten und in eine SESSION ablegen z.B.
                            PHP-Code:
                            $_SESSION['vorname'] = $_POST["vorname"];
                            $_SESSION['nachname'] = $_POST["nachname"]; 
                            Anschließend kann ich die ja auf "Test2.php" ausgeben. Oder?

                            Ich würde gerne hierzu eine Meinung von einem Profi hören.

                            Kommentar


                            • #29
                              genau !

                              nur noch auf jeder Seite session_start(); drüber und fertig ist die Laube.

                              Kommentar

                              Lädt...
                              X