Steuerung / Verarbeitung von Formularen

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

  • Steuerung / Verarbeitung von Formularen

    Hi,

    ich hab vor 2 Wochen mit PHP angefangen bin also noch totaler Neuling. Dennoch stehe ich nun vor einem Problem wo ich absolut nicht weiterkomme.

    Ich habe mir eine index.php erstellt in der ich 2 "Steuervariablen" eingebaut habe: $strAction und $intAufruf
    Je nachdem wie diese Variablen gefüllt sind wird eine entsprechende Datei per include Befehl innerhalb der index.php aufgerufen. In der aufgerufenen Datei werden dann die Steuervariablen innerhalb eines Formulars (type=hidden) gefüllt.
    (Die Idee stamm übrigens hierher http://www.traum-projekt.com/html/ph...eil1/index.php ).

    Jetzt möchte ich die Eingaben des Formulars (in registrierung_input.inc.php) auf ihre Richtigkeit überprüfen und zwar OHNE nochmal das Formular anzuzeigen wenn alles ok ist! So wie es in dem Code Ausschnitt unten angezeigt wird funktioniert es nicht, ich muss immer nochmal den Button drücken auch wenn schon alles richtig eingegeben wurde (Wenn der Button gedrückt wurde kann ich das Formular wohl nicht mehr verändern bzw neue Daten hinzufügen).

    Kann ich vielleicht die Standartvariablen per Post und die Steuervariablen ZUSÄTZLICH per GET schicken? Wenn ja wie gebe ich das im Formular an? Ich möchte nämlich die Standartvariablen (wegen Passwörtern) nicht über die URL übermitteln.
    Ich hab auch schon versucht mit einem neuen Header die registrierung_save.inc.php aufzurufen aber dann sind meine vorher gefüllten Variablen leer und ich habe nichts mehr zum abspeichern, zumal dann ja auch die Steuerung über die index.php wegfallen würde.

    Ich hoffe ich konnte mein Problem irgendwie erklären
    Falls es total untypisch ist ein Projekt so zu steuern lass ich mich auch gerne zu was anderem überreden, ich hab leider nur keine Idee wie man es sonst machen kann, es soll auf jeden Fall flexibel bleiben

    Danke für Eure Hilfe!!

    Gruß
    Christiane


    Ausschnitt aus index.php:
    PHP-Code:
    $strAction=$_POST['strAction'];
    $intStep=$_POST['intStep'];

    // Neuen User registrieren
    if ($strAction=="registrierung") {
        
    //    
        
    if ($intStep=="") {
          include (
    "inc/registrierung_input.inc.php");
        }
        
    // Ergebnis der Verarbeitung ausgeben
        
    elseif ($intStep=="1") {
            include (
    "inc/registrierung_save.inc.php");
        }

    Ausschnitt aus registrierung_input.inc.php:
    PHP-Code:
    <?
        $name1=htmlentities($_POST['name1']);

        // Variablen zur Error-Erkennung
        $intError=0; 
        
        $name1_bgcolor="";

        // Hiermit werden die falsch gefüllten Felder im Formular farblich gekennzeichnet
        $bgcolor='style="background: #FFCC99;"';

        //Wenn das Formular bereits einmal abgeschickt wurde werden diese Prüfungen durchlaufen
        if  ($intAufruf==1){
            //Bei nicht korrekt gefüllter Variable wird die Background Farbe bei dem jeweiligen Feld gesetzt.
            if ($name1=="" OR eregi('[0-9]',$name1)) { $name1_bgcolor=$bgcolor; }
        }                
                                            
        // Formular ausgeben, Fehlerhafte Eingaben werden über die Variablen ..._bgcolor angezeigt
        ?>
        <fieldset> 
          <legend>Registrierung</legend>
          <form name="input1" id="input1" method="post" action= <? echo $PHP_SELF ?> >
          <label for="name1" class="left">Vorname*</label>
            <input type="text" name="name1" value="<? echo $name1; echo '"'; echo $name1_bgcolor; ?> />
            <input type="submit" name="weiter" value="Weiter" class="button" />
            
        <? 
        
        if ($weiter) {
            $intError=0;
            
            //Bei nicht korrekt gefüllter Variable wird $intError auf 1 gesetzt.
            if ($name1=="" OR eregi('[0-9]',$name1)) { $intError=1; }
            
            // Hier wird entschieden ob zum nächsten Formular gesprungen wird oder ob noch Fehler zu berichtigen sind
            echo "<br>intError $intError<br>";
            if  ($intError!=1) {
                echo '<input name="strAction" type="hidden" value="registrierung" />';
                echo '<input name="intStep" type="hidden" value="1" /> ';
            }
            else { 
                echo '<br /> <br /> Bitte berichtigen Sie die rot hinterlegten Felder <br />';
                echo '<input name="strAction" type="hidden" value="registrierung" />';
                echo '<input name="intStep" type="hidden" value="" /> ';
            }
        }
        ?>
            <input name="intAufruf" type="hidden" value="1" />
            </form>
        </fieldset>
    Zuletzt geändert von moerfi; 11.08.2005, 14:16.

  • #2
    LESEN aber dalli

    Kommentar


    • #3
      Hatte es gerade bemerkt aber da war das Posting schon da
      Sorry!!!

      (Hoffe mal das is nich zuviel Quelltext? Hab das alles gepostet weils ja um die Steuerung geht)

      Kommentar


      • #4
        Natürlich wird Dein Formular nach dem abschicken wieder angezeigt. Du leitest ja mit:
        PHP-Code:
        $PHP_SELF 
        auf die selbe Seite zurück. Schick die Formulardaten doch an ein ein anderes Script z.b. verarbeiten.php und überprüfe
        dort die Formulareingaben.
        Wenn alles richtig ist...ok, wenn nicht, dann zurück zum Formular.

        Wo kämen wir hin, wenn jeder sagte: Wo kämen wir hin? und keiner ginge, um zu sehen, wohin wir kämen, wenn wir gingen?

        Kommentar


        • #5
          Schonmal danke für deine Hilfe.
          Damit umgehe ich dann die index.php, was ich ja eigentlich nicht will. Ich habe die Prüfungen in eine andere Datei ausgelagert, meine index.php sieht nun folgendermaßen aus:
          PHP-Code:
          if ($strAction=="registrierung") {
              
          //    
              
          if ($intStep=="") {
                include (
          "inc/registrierung_input.inc.php");
              }
              
          // Formulareingaben prüfen
              
          elseif ($intStep=="1") {
                  include (
          "inc/registrierung_input_pruef.inc.php");
              }
              
          // Ergebnis der Verarbeitung ausgeben
              
          elseif ($intStep=="2") {
                  include (
          "inc/registrierung_save.inc.php");
              }

          In der registrierung_input.inc.php werden die Steuervariablen jetzt so gesetzt das registrierung_input_pruef.inc.php aufgerufen wird (sprich strAction="registrierung" und intStep="1").

          Wie kann ich diese registrierung_input_pruef.inc.php ohne eine Ausgabe oder ein Formular wieder verlassen und trotzdem die Steuervariablen setzen?
          Ich muss quasi wieder $PHP_SELF aufrufen um die index.php neu zu starten (die anderen Dateien sind ja nur included) und dann muss entweder intStep auf 2 gesetzt sein (um die Daten abzuspeichern wenn alles ok ist) oder leer "" sein (damit das Formular erneut angezeigt wird).

          Hilfe, das macht mich langsam echt wahnsinnig

          Kommentar


          • #6
            Kann ich vielleicht die Standartvariablen per Post und die Steuervariablen ZUSÄTZLICH per GET schicken?
            formal gesehen - nein.

            informiere dich über http://de3.php.net/manual/de/security.globals.php

            Standartvariablen
            OffTopic:
            was für variablen?

            Kommentar


            • #7
              Sorry das ich mich solange nich gemeldet hab, hab viel gelernt in der Zwischenzeit....

              Ich arbeite jetzt mit Sessions und wenn alle Daten richtig angegeben wurden include ich Die Datei fürs abspeichern einfach ohne nochmal das Formular auszugeben.
              Zumal bin ich abgerückt von der Idee alles über die Index.php zu steuern, wozu gibts denn Tabellen???
              Hatte mich zu sehr in das Problem reingesteigert und kannte noch keine Sessions. Der Weg von Cobol zu PHP ist hart und steinig aber ich geh ihn doch gerne

              Dankeschön für Eure Hilfe!

              Gruß
              Christiane
              Zuletzt geändert von moerfi; 23.08.2005, 12:10.

              Kommentar

              Lädt...
              X