Markus: Immer noch Probleme mit dem Submit Button!

Hallo,

ich habe die meisten meiner Probleme seit meinem letzten Posting behoben. Danke an Tom und die anderen, die mir geholfen haben.

ein Problem besteht aber immer noch. Nachdem ich in meinem Formular Eingaben getätigt habe, werden diese Daten validiert. Dei einem Fehler oder einem nicht ausgefüllten Feld wird das Formular erneut angezeigt. Die eingegebenen Werte werden zur Kontrolle in den entsprechenden Feldern wieder angezeigt. Problem ist, nach dem Neuaufruf der Seite funktioniert der Submit Button nicht mehr. Woran kann das liegen?

Danke, Markus

  1. Hello,

    Problem ist, nach dem Neuaufruf der Seite funktioniert der Submit Button nicht mehr. Woran kann das liegen?

    Da hatten wir schon einmal um etwas mehr Input gebeten. Aber bitte auszugsweise, nicht das ganze Script posten. Versuch doch mal, einen funktionstüchtigen Minimalauszug deines Affenformulars zu basteln, zu testen und wenn es dann immer noch nicht funktioniert, zu posten.

    Das wichtigste in so einem testscript sind immer die Fehlerbehandlung und die Kontrollausgaben. Die darfst Du auch gerne mitposten nebst der erhaltenen Meldungen.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
      Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
      Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. So hier ist das gute Stück. Bitte nicht lachen!

      <?
       ini_set('track_errors','1');
       error_reporting(E_ALL & ~E_NOTICE);

      if (isset($_POST['submit']))
      {
      $fehlermeldung == "";
       $user_name = $_POST['user_name'];
       $user_password = $_POST['user_password'];
       $user_password2 = $_POST['user_password2'];
       if ($user_name == "" or $user_name == NULL) {$fehlermeldung="Bitte geben Sie einen Mitgliedsnamen ein!<br>";}
       ...

      if ($fehlermeldung=="") {
        session_start();
        $sn=session_name();
        $sid=session_id();

      $session_user_name = $user_name;
        $session_user_password = $user_password;

      session_register("session_user_name");
        session_register("session_user_password");

      header ("Location: editor2.php");
        exit();
       }
      }

      ?>

      <html>
      <head>
      ...
      </head>

      <body>
      <form name="newuser" method="post" action="<? echo $PHP_SELF; ?>">
       <table class="txt_content">
        <tr><td><b>Mitgliedsname</b></td><td width="10">&nbsp;</td><td><input type="text" class="feld1" name="user_name" value="<? echo $user_name ?>"></td></tr>
        <tr><td><b>Passwort</b></td><td width="10">&nbsp;</td><td><input type="password" class="feld1" name="user_password" value=""></td></tr>
        <tr><td><b>Wiederholung d. Passworts</b></td><td width="10">&nbsp;</td><td><input type="password" class="feld1" name="user_password2" value=""></td></tr>
        <tr><td><b>&nbsp;</b></td><td width="10">&nbsp;</td><td><input type="submit" name="submit" value="submit"></td></tr>
       </table>
      </form
      </body>
      </html>

      1. Hello,

        ich lache nicht. Es sah schon ganz gut aus. Die Formatierungen, Tabellen etc hättest Du zum Posten auch selber noch rausschmeißen können.

        Und dann empfehle ich Dir, dei Schreibweie von Funktionen nach "meiner Art" durchzuführen. das weicht zwar vom PEAR-Standard ab, aber man kann Fehler schneller sehen:

        so nicht:

        function bla() {
              ...
          }

        sondern so:

        function bla()
          {
            ...
          }

        Hier das Ergebnis meiner Untersuchung:

        <?php   ### markus.php ###

        ini_set('track_errors','1');

        error_reporting(E_ALL); # Zum Entwickeln immer ALLES an!

        Protokoll muss noch dynamisch ermittelt werden!

        $domain = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

        $fehlermeldung  = "";  # Wenn man alle verwendeten Variablen initialisiert
        $user_name      = "";  # kann man sich das lästige Nachfragen
        $user_password  = "";  # mit isset() sparen
        $user_password2 = "";

        if (isset($_POST['submit']))
        {
          $user_name = trim($_POST['user_name']);           # stripslashes() fehlt noch
          $user_password = trim($_POST['user_password']);
          $user_password2 = trim($_POST['user_password2']);

        if (strlen($user_name) == 0)                      # wenn man die Länge des getrimmten
          {                                                 # testet, ists einfacher
            $fehlermeldung = "Bitte geben Sie einen Mitgliedsnamen ein!<br>";
          }

        # hier weitere Prüfungen und usercheck() einfügen

        if ($fehlermeldung=="")
          {
            session_start();

        $_SESSION['sess_id']  = session_id();      # session_register() ist veraltet!
            $_SESSION['username'] = $user_name;
            $_SESSION['password'] = $user_password;

        header ("Location: $domain/editor2.php");
            exit;
          }
        }

        ?>

        <html>
        <head>
          <title>Anmeldung</title>
        </head>

        <body>
        <p><?php echo $domain; ?></p>
        <p><?php echo $fehlermeldung; ?></p>

        <form name="newuser" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"
              enctype="multipart/form-data">

        Mitgliedsname: <input type="text" name="user_name"
                                value="<?php echo htmlentities($user_name); ?>"><br />
          Passwort:      <input type="password" name="user_password" value=""><br />
          Wiederholung
          d. Passworts:  <input type="password" name="user_password2" value=""><br />

        <input type="submit" name="submit" value="submit"><br />

        </form>  <!-- hier fehlte nur die schließende Klammer -->

        </body>
        </html>

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
          Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
          Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        1. Hallo Tom,

          vielen Dank für Deine Mühe. Hab wieder eine Menge gelernt. Ich werde jetzt direkt mal anfangen, meinen Code umzuschreiben. Nochmals danke, Du ersparst mir viel Aufregung.

          CU Markus

          1. Hello,

            vielen Dank für Deine Mühe. Hab wieder eine Menge gelernt. Ich werde jetzt direkt mal anfangen, meinen Code umzuschreiben. Nochmals danke, Du ersparst mir viel Aufregung.

            Bitte.

            Sollte es im vorigen Posting nicht ganz klar rübergekommen sein:
            Das merkwürdige Verhalten mit dem Submitbutton lag an der fehlenden schließenden spitzen Klammer des Form-Ende-Tags. Kleine Ursache, große Wirkung!

            Ich habe nämlich auch erst gestutzt, nur wusste ich schon, wonach man suchen muss.

            Und in den Location-Header gehört eine vollständige URL incl. Protokoll. Daher diese Hilfskonstruktion, die den fehlenden Teil der URL berechnet und ergänzt. Nur für die Ermittlung des Protokolls musst Du Dir noch Gedanken machen. Da habe ich auf die Schnelle keine verlässliche Variable gefunden.

            Vielleicht kann da nochmal ein HTTP-Spezialist helfen?

            Liebe Grüße aus http://www.braunschweig.de

            Tom

            --
            [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
              Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
              Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            1. Hallo Tom,

              wann schläfst Du eigentlich. Du bist nachts da, wenn man Dich braucht und morgens auch schon wieder. Tstststs! Danke!

              Das fehlende ">" kann es leider nicht gewesen sein, denn das hatte ich schon in meinem Code. Ist irgendwie beim Kopieren weggefallen. Sorry, für diese Fehler!

              Ich werd jetzt erstmal Deine anderen Tipps umsetzen. Vielleicht lag es ja an meiner nicht ganz sauberen Programmierung.

              Ansonsten hätte ich noch eine Idee. Da muss ich wenig ausholen. Also, das Formular, was ich gepostet habe, ist das erste einer ganzen Reihe von Formularen, die der Nutzer ausfüllen muss, um sich bei mir zu registrieren.

              Um die reihenfolge und den Aufbau dieser Formulare flexibler zu gestalten, habe ich dies dynamisch angelegt. Es gibt eine php-Datei. Wie in einem Template sind hier die grafischen Elemente der Seiten ablegt, der Rahmen sozusagen. Die Formulare und die if(submit)'s liegen in seperaten php Datein und werden je nach Bedarf in diesen Rahmen included. Häh?

              Also es gibt eine mysql-DB mit folgender Tabelle:
              id
              Position (in welcher Reihenfolge die Formulare angezeigt werden)
              Überschrift
              Erklärungstext
              Submit-Datei
              Formular-Datei

              Jetzt wird in dieser Tabelle geschaut, an welcher Position im Registrierungsprozess sich der User befindet und dann werden die entsprechenden Texte im "Rahmen" angezeigt und die entsprechenden Dateien included.

              Kann es an so einem "aus meinem Anfängerhirn" entsprungenen Aufbau liegen, daß es Probleme mit dem Submit-Button gibt?

              Sorry für die lange Frage!

              CU Markus

              1. Hello,

                Um die reihenfolge und den Aufbau dieser Formulare flexibler zu gestalten, habe ich dies dynamisch angelegt. Es gibt eine php-Datei. Wie in einem Template sind hier die grafischen Elemente der Seiten ablegt, der Rahmen sozusagen. Die Formulare und die if(submit)'s liegen in seperaten php Datein und werden je nach Bedarf in diesen Rahmen included. Häh?

                Also es gibt eine mysql-DB mit folgender Tabelle:
                id
                Position (in welcher Reihenfolge die Formulare angezeigt werden)
                Überschrift
                Erklärungstext
                Submit-Datei
                Formular-Datei

                Jetzt wird in dieser Tabelle geschaut, an welcher Position im Registrierungsprozess sich der User befindet und dann werden die entsprechenden Texte im "Rahmen" angezeigt und die entsprechenden Dateien included.

                Kann es an so einem "aus meinem Anfängerhirn" entsprungenen Aufbau liegen, daß es Probleme mit dem Submit-Button gibt?

                Ist doch schion eine (fast) perfekte Formularsteuerung. Man könnte jetzt die beiden Dateien Submit und Dorm auch noch auflösen in Entitäten.

                Die Antwort muss ich Dir allerdings schuldig bleiben. Denn dazu müsstest Du den Output deiner Formularengine genauer untersuchen, also mal alle generierten HTML-Codes speichern, in augenfreundliches Format bringen und checken.

                Bist Du sicher, dass die fehlende Klammer auch wirkliuch auf dem Server angekommen war? Vielleicht hast Du den Upload vergessen? Kommt schon mal vor.

                Liebe Grüße aus http://www.braunschweig.de

                Tom

                --
                [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
                  Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
                  Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen