require() funktion innerhalb eines formulars

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

  • require() funktion innerhalb eines formulars

    Hallo!

    Ich hantiere jetzt schon ein ganzes Weilchen an folgendem Problem.
    Ich hoffe es kann mir jemand einen Tip geben.

    Ich habe eine Datei namens New.php
    Diese enthält ein Formular:

    PHP-Code:

    echo    "<html>
            <head>
            <title>XML Konfigurationsdatei</title>
            
            <meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
            </head>
            
            <body bgcolor='#FFFFFF' text='#000000'>
                <form name='FORM' method='post' action='
    $PHP_SELF' >

    ...
    ...
    ...

    <p align='center'>
                <input type='submit' name='Weiter' value='Weiter'>
              </p>
            </form>
            <p>&nbsp;</p>
            <p>&nbsp; </p>
            </body>
            </html>"


    Bis hier funktioniert alles ganz gut. Der User kann ein paar eingaben machen und abhängig davon ob er ALLE nötigen Felder ausgefüllt hat soll das Skript diese Daten zum nächsten Skript schicken und diese auswerten.
    Sollte etwas fehlen, dann soll die New.php wieder aufgerufen werden und darunter die Fehler die der User gemacht hat:

    Deshalb geht es bei mir so weiter:

    PHP-Code:

    if (isset($_POST['Weiter']))
    {
    if(
    count($error)==0)
        {
            require(
    "NewWFvFinal2.php");
            
            
    //Keine Fehler
        
    }
        else 
        {
            require(
    "New.php");
            for (
    $i=0;$i<count($error);$i++)
            {
                echo 
    $error[$i];
            }
            
    //FEHLER
        
    }


    Wenn der User einen Fehler gemacht hat, dann wird er unter dem Formular
    darauf hingewiesen.
    Wen er aber alles korrekt eingegeben hat, dann wird das Skript "NewWFvFinal2.php" auch darunter ausgegeben.
    Ich möchte aber dass "NewWFvFinal2.php" statt New.php erscheint.
    Das beißt sich wohl mit der $PHP_SELF im Formular. Kann ich eine Art Fallunterscheidung machen und die Datei in action="Datei" dynamisch verändern?

    Hätte jemand eine Idee?

    Viele Grüße,

    Wassim

  • #2
    hmm,

    normalerweise macht man im erfolgsfall eine weiterleitung mittels header, u.a. auch, um das $_POST zu leeren und beim reload nicht wieder zu senden.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Passt! Ich habs grad hinbekommen.
      Hab ins Formular noch diese Zeile eingefügt:

      <input type='hidden' name='sent' value='1'>

      und am Anfang von New.php steht jetzt eine Bedingung:
      PHP-Code:
      if(isset($_POST['sent']))

      .....
      .....
      //Gib bei falscher Eingabe Fehlermeldung aus...

      Und dann kam der andere Fall:

      PHP-Code:
      else 
      {
      echo    
      "<html>
                   <head>
                   ...
                       <form name='FORM' method='post' action='
      $PHP_SELF' >
                   ...

      Trotzdem vielen Dank!

      Wassim

      Kommentar


      • #4
        aber du mußt bei falscher eingabe doch eh das formular gleich wieder anzeigen, ...

        oder bist du auf dem 'ich mach ne extra-seite, damit der user sich ärgert, weil er hin- und herklicken muß'-trip?
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Du hast Recht. Das hat mich auch genervt....

          Habe nun den ersten Teil von New.php (HTML Ausgabe) in ne Funktio gepackt:

          PHP-Code:
          function htmlhead() 
          {
              
          echo    
          "
          <html>
              <head>
              ...    
                         <form name='FORM' method='post' action='
          $PHP_SELF' >
                          ...
          "

          und weiter unten steht dann:

          PHP-Code:
          if(isset($_POST['Weiter']))
          {
          ...
          ...
          if(
          count($error)==0)
              {
                  require(
          "NewWFvFinal2.php");
              }
              else 
              {
                  
          htmlhead();

                  for (
          $i=0;$i<count($error);$i++)
                  {
                      echo 
          $error[$i];
                  }
                  
              }

          }
          else 
          {
              
          htmlhead();    

          Jetzt passt alles. Nur nervt mich die Tatsache dass die New.php und die NewWFvFinal2.php irgendwie zusammengewachsen sind.
          Jedesmal wenn ich New.php aufrufe, meine Daten korrekt eingebe dann auf "Weiter" drücke wird die nächste Seite korrekt ausgegeben, nur ich kann mittels des "zurück" Buttons des Browsers nicht mehr zur New.php zurück. Wenn ich zwischendurch auf anderen Webseiten surfe, und dann wieder New.php eingebe, dann erscheint gleich die NewWFvFinal.php. Keine Ahnung woran das liegt.
          Kannst Dir das Ganze auch gern ansehen:

          Demo

          Dank Dir für Dein Feedback!

          Wassim
          Zuletzt geändert von Wassim; 23.04.2005, 17:08.

          Kommentar

          Lädt...
          X