PHP - mehrseitige Formulare

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

  • PHP - mehrseitige Formulare

    Hallo,
    ich habe ein paar Formulare mit Pflichtfeldern erstellt. Könnte mir jemand anhand des folgenden Beispiels erklären, wie ich nun zur nächsten Formularseite (also von seite1.php zu seite2.php) komme. Ich bin schon am verzweifeln. Danke im Voraus.

    seite1.php
    PHP-Code:
    <?php
    if (isset($_POST["weiter"])) { 
        
    $gueltig true;
        
    $fehlermeldung ""
        if (
    $_POST["name"] == "") { 
            
    $fehlermeldung "Bitte geben Sie Ihren Namen ein.";
            
    $gueltig false
        }
    }
    ?> 

    <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post"> 
        <?php 
        
    if ($fehlermeldung != "")  
            print 
    $fehlermeldung ."<br>"
        
    ?> 
        Name: <input name="name" type="text"> 
        <br><br> 
        <input type="submit" name="weiter" value="Weiter >>" > 
    </form>
    seite2.php
    PHP-Code:
    <?php
    if (isset($_POST["weiter"])) { 
        
    $gueltig true;
        
    $fehlermeldung ""
        if (
    $_POST["ort"] == "") { 
            
    $fehlermeldung "Bitte geben Sie Ihren Wohnort ein.";  
            
    $gueltig false
        }
    }
    ?> 

    <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post"> 
        <?php 
        
    if ($fehlermeldung != "") { 
               print 
    $fehlermeldung "<br>"
        } 
        
    ?> 
        Ort: <input name="ort" type="text"> 
        <br><br> 
        <input type="submit" name="weiter" value="Weiter >>"> 
    </form>

  • #2
    weißt du, wofür das action attribut in dem form-tag da ist?

    Kommentar


    • #3
      ja, wenn ich auf der ersten Formularseite z.B. <form action="seite2.php" method="post"> eingebe, komme ich zur zweite Formularseite, allerdings wird nicht geprüft ob im Feld "name" (auf der ersten Formularseite) etwas eingegeben wurde.

      Kommentar


      • #4
        natürlich nicht. du hast es nicht geschrieben - also wirds auch nicht gemacht. dafür wird das feld (button?) "weiter" kontrolliert..

        willst du nicht vorher mal tut.php-q.net/formulare.html sowie peterkropff.de lesen?

        Kommentar


        • #5
          tut.php-q.net/formulare.html habe ich bestimmt 3 mal durchgelesen, komme aber nicht auf die lösung. Könntest du mit bitte zeigen, wie es geht?

          Kommentar


          • #6
            schau dir das beispiel aus unterpunkt 6 an.

            Kommentar


            • #7
              Beispiel aus Unterpunkt 6 angeschaut und kein bisschen schlauer geworden. Die folgende Lösung kann es nicht sein:
              PHP-Code:
              <?php
              if("" == $_POST['name']) {
                  echo 
              "Bitte geben sie einen Benutzernamen ein";
              }        
              ?>

              <form action="seite2.php" method="post">
                  Name: <input name="name" type="text"> 
                  <br><br> 
                  <input type="submit" name="weiter" value="Weiter >>"> 
              </form>
              Nachdem der Benutzer auf "Weiter" geklickt hat, muss überprüft werden, ob in alle Eingabefelder (bzw. die Pflichtfelder) etwas eingetragen wurde. Wenn ja, Formular seite2.php laden, wenn nicht Formular seite1.php nochmal laden (und die Felder mit bereits gemachten Eingaben belegen). Wie ich das umsetzen soll, weiss ich nicht genau.

              Kommentar


              • #8
                dann schreibe erst mal so eine art pseudocode erst mal auf, um zu verstehen, wie es aussehen soll:
                Code:
                1. form1 wird angezeigt..
                2. benutzer füllt etwas aus, klickt "ok"
                3. kontrolle:
                feld1 ausgefüllt? wenn nein, gehe zu 1
                feld2 ausgefüllt? wenn nein, gehe zu 1
                ...
                
                4. form2 wird angezeigt
                etc.

                Kommentar


                • #9
                  Ich habe es mir so gedacht, funktioniert aber auch nicht!!!!!!!!!!!!!!!
                  PHP-Code:
                  <?php
                  if (isset($_POST["weiter"])) {
                      if(
                  "" == $_POST['name']) {
                          echo 
                  "Bitte geben sie einen Benutzernamen ein";
                      } else {        
                          
                  ?>
                          <form action="seite2.php" method="post"> 
                          </form>
                          <?php
                      
                  }    
                  }
                  ?>
                  <form action="seite1.php" method="post"> 
                      Name: <input name="name" type="text"> 
                      <br><br> 
                      <input type="submit" name="weiter" value="Weiter >>"> 
                  </form>

                  Kommentar


                  • #10
                    dir fehlt noch viel zu viel wissen über die grundlagen. lass dir zeit und lies dir die zwei genannten seiten mal komplett durch.

                    Kommentar


                    • #11
                      Original geschrieben von Playa187
                      Ich habe es mir so gedacht, funktioniert aber auch nicht!!!!!!!!!!!!!!!
                      - entweder du machst die Überprüfung auf der 2. Seite und leitest bei Fehler auf die 1. zurück,
                      - oder du prüfst auf der 1. Seite und leitest dann auf die 2. wenn alles korrekt eingegeben wurde.

                      Weiterleitung kannst du mit header realisieren. Bei Fehlanwendung der Funktion, bitte zuerst das hier: http://www.php-resource.de/forum/sho...threadid=62965 lesen

                      Kommentar


                      • #12
                        Könnte sich jemand bitte 5 Minuten Zeit nehmen und evtl. den richtigen Code zu obigem Beispiel posten. Ich bin wirklich am verzweifeln. Danke.

                        Kommentar


                        • #13
                          Mach ein Grundlagentutorial - so wird das nichts !!!

                          Kommentar


                          • #14
                            Könnte sich jemand bitte 5 Minuten Zeit nehmen
                            könntest du dir vielleicht mal ein paar tage zeit nehmen, um grundlagen zu lernen, so wie die meisten von uns?

                            alles wissenwerte zum thema php findest du auf meiner seite (siehe signatur). also streng dich an oder geh woanders schnorren.

                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              Nachdem ich mir eineige PHP-Grundlagetutorials durchgelesen habe, bin ich zum folgenden Ergebnis gekommen:
                              PHP-Code:
                              <?php
                              ob_start
                              ();
                              ?>
                              <html>
                              <head>
                              <title>Teilnehmer</title>
                              </head>
                              <body>
                              <form action="<?php print $_SERVER["PHP_SELF"]; ?>" method="post">
                                  Vorname: <br><?php ob_start(); ?><input name="vorname" type="text" value="<?php print htmlspecialchars($_POST["vorname"]); ?>"><br><br>
                                  Nachname: <br><?php ob_start(); ?><input name="nachname" type="text" value="<?php print htmlspecialchars($_POST["nachname"]); ?>"><br><br>
                                  <input type="submit" name="weiter" value="Absenden" >
                              </form>
                              <?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: Test0003.php");
                                  }
                              }
                              ?>
                              </body>
                              </html>
                              <?php 
                              ob_end_flush
                              (); 
                              ?>
                              Mich würde interessieren, ob es so OK ist, oder gibt es Änderungsvorschläge - könnte mann es besser machen?

                              Um die Fehlermeldung "Warning: Cannot modify header information - headers already sent by (output started at C:\Programmierung\xampp\htdocs\workspace\PHP_Tests\Test0001.php:" unzugehen, habe ich ob_start() und ob_end_flush() verwendet. Kann mann die obige Fehlermeldung auf eine andere Art und weise umgehen, weil bei der Verwendung der obigen zwei funktionen, habe ich Schwierigkeiten beim Auslesen der eingegebenen Werte?

                              PS: http://www.peterkropff.de/site/tutor...bsp/header.htm habe ich mir x mal durchgelesen.

                              Kommentar

                              Lädt...
                              X