DocBrain: submit button zurücksetzen

Hallöchen,

ich hab für ne Internetseite ein kleines Forum geschrieben. In einem Fenster kann man sich nun die Postings zu einem Thema anschauen. Unter den bisherigen Posts steht dann das Formular um ein eigenes Post zu verfassen.
Hier mal auszugsweise das Fromular:

<form method="POST" action="<? echo "$PHP_SELF#lastPost"; ?>">
...<input type="text" name="theName" class="field">
<br><input type="hidden" name="TitleID" value="<? echo "$ID"; ?>">
<br>...<textarea rows=8 name="theText" wrap=virtual cols=30 class="fieldblock2"></textarea>
<input type="reset" name="Reset" value="Inhalt l&ouml;schen" class="btxt">
<input type="submit" name="submit" value="Abschicken" class="btxt">
</form>

Nun fange ich im oberen Teil des Dokumentes ab, ob der Submit-button gedrückt wurde.
if (isset($_POST['submit']))
{
...
}

Anschließend werden alle Posts zuzüglich dem Neuen wieder angezeigt.
Drücke ich nun aber F5 oder lade das Dokument halt neu, dann fügt sich damit automatisch das neue Post wieder an. Also mit jedem Refresh wird das letzte Post wiederholt erstellt. Ich nehme an das liegt daran, das der submit button immer nch gesetzt ist. Wie krieg ich den nu wieder dahin das der nich isset ist?

Gruß
DocBrain

  1. Hi,

    Ich nehme an das liegt daran, das der submit button immer nch gesetzt ist.

    nein, das liegt daran, dass dies die Aktion ist, welche Dein Server mit dem aktuellen Request verknüpft hat.

    Wie krieg ich den nu wieder dahin das der nich isset ist?

    Gar nicht. Du kannst allenfalls prüfen, ob Du die Aktion bereits ausgeführt hast - genauer gesagt: ob bereits Ergebnisse vorliegen, die zu erzeugen Du im Begriff bist. Denn ein "vorher" existiert in HTTP nicht.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Ich nehme an das liegt daran, das der submit button immer nch gesetzt ist.

      nein, das liegt daran, dass dies die Aktion ist, welche Dein Server mit dem aktuellen Request verknüpft hat.

      Das hat mit dem Server nichts zu tun, der führt auf den Request des Clients den Respose aus (Gleicher Reques ergibt dabei gleichen Response). Der Client speichert nur die angelieferten Daten und sendet sie jedes mal erneut.

      Wie krieg ich den nu wieder dahin das der nich isset ist?

      Gar nicht. Du kannst allenfalls prüfen, ob Du die Aktion bereits ausgeführt hast - genauer gesagt: ob bereits Ergebnisse vorliegen, die zu erzeugen Du im Begriff bist. Denn ein "vorher" existiert in HTTP nicht.

      Das ist eine Möglichkeit, die immer funktionieren wird, eine andere (mein Favorit) leitet zu einem anderen Dokument um:

      Verarbeitendes Script:

      <?php
      if($Eingabenueberpruefung)
          {
          @verarbeite_daten();
          header('Location:http://www.deine_domain.de/hat_geklappt.htm');
          }
      else
          {
          erzeuge_formular_neu_mit_User_eingaben();
          }
      ?>

      Gruß aus Berlin!
      eddi

      1. Das ist eine Möglichkeit, die immer funktionieren wird, eine andere (mein Favorit) leitet zu einem anderen Dokument um:

        Verarbeitendes Script:

        <?php
        if($Eingabenueberpruefung)
            {
            @verarbeite_daten();
            header('Location:http://www.deine_domain.de/hat_geklappt.htm');
            }
        else
            {
            erzeuge_formular_neu_mit_User_eingaben();
            }
        ?>

        Hallo,

        ich hatte ja ursprünglich ein verarbeitendes Skript in ner extra Datei. Das Problem dort war, dass er die Session verloren hat in dem Skript. Der eingeloggte Benutzer ist da seltsamerweise nie angekommen. :(

        Gruß aus Berlin!
        eddi