Andreas: Chat-Formular macht nich was es soll

Hallo,
ich habe folgenden Code:

....
print "<td align="center" width="50%">";
print "<TABLE WIDTH="100%" CELLPADDING="2" CELLSPACING="0" BORDER="1">\n";
print "<tr><td class="small">\n";

$tablewidth = 120;    //Breite der Tabelle
  $showcomments = 5;    //Anzahl der anzuzeigenden Kommentare
  $file = "shouts.txt";    //Name der Shoutsdatei
  echo "
  <form action='$PHP_SELF' method='post'>
  <input type='text' value='Name' name='input_name' size='12' maxlength='20'>
  <input type='text' value='Kommentar' name='input_comment' size='40' maxlength='150'>
  <input type='submit' value='Go!'><br>";
  if($input_name != "Name" && $input_name != "" && $input_comment != "Kommentar" && $input_comment != ""){
    $tmp = fopen($file, "a");
    fputs($tmp,"$input_name|$input_comment\n");
    fclose($tmp);
  }
  $names = array();
  $comments = array();
  $tmp = fopen($file,"r");
  while(!feof($tmp)){
    $row = fgets($tmp,999999);
    list($name,$comment) = split("|",$row);
    if($name != ""){
      array_push($names,$name);
      array_push($comments,$comment);
    }
  }
  fclose($tmp);
  $names = array_reverse($names);
  $comments = array_reverse($comments);
  if($show == "all")
    $max = count($names);
  else
    $max = $showcomments;
  for($i=0; $i<$max; $i++)
    echo "<b>$names[$i]:</b> $comments[$i]<br><br>\n";
  echo "</form>";

print "</td></tr>\n";
print "</TABLE>\n\n";
print "</td>\n";
....

Der Code steckt in einem anderen PHP-Script innerhalb einer Tabellenzelle. Der Effekt ist folgender:
Ich gebe Namen und Kommentar in das Form ein und clicke Go, Browser refreshed und Eintrag ist zu sehen. Jetzt refreshe ich nochmals den Browser und jetzt meldet er sich mit den Worten: Die Seite kann ohne ein erneutes Senden der Informationen nicht aktualisiert werden.
Ich klicke OK an, und jetzt erscheint der vorherige Eintrag nochmals. Das gleiche nochmal und der Eintrag steht zum 3. mal da.

Nehme ich den Code für sich alleine passiert genau das gleiche.

Wer kann mir Helfen?
Siehe auch obigen Link.

Gruß Andreas

  1. Hallo

    Ich habe deinen Code jetzt nicht gelesen, aber deiner Aussage zufolge Aktualisierst du nochmals und sendest alle Daten nochmals, wenn du auf OK klickst. Dein Formular macht genau das, was du Ihm sagst, denn du sendest die Daten ja auch mehrere male.

    Ich weiss nicht ob ich dir damit helfen kann ;)

    Gruss Patrik

    1. Hi,
      das ist schon klar, aber er summiert die formular-Inhalte auf, obwohl nichts im Formular steht. Denn das ist doch der Knackpunkt.

      Gruß Andreas

      1. Hi!

        Alsoo...:

        Du gibst zum ersten Mal daten in das Formular ein. Dann klickst du auf senden.
        Dem Formular zufolge wird die selbe Seite aufgerufen, dieses mal werden jedoch noch die Daten des Formulars mitübergeben. (Wenn du method="post" nicht im form-tag drinstehen hast, kannst du das auch sehen - alá seite.php?variable=wert etc.). Wenn du nun Aktualisierst, wird genau die gleiche Seite mit genau den gleichen Werten nochmal aufgerufen (also nochmal seite.php?variable=wert) und somit werden die Daten auch nochmal eingefügt...

        Beheben könntest du das zum Beispiel indem du im Formular eine andere Datei aufrufst, die dann wieder zur Datei, die die Daten anzeigt, weiterleitet.

        viele grüße und HTH,
        benni

        1. Hi,

          ...eine andere Datei aufrufst, die dann wieder zur Datei, die die Daten anzeigt, weiterleitet.

          Äh, wie rufe ich im Form eine andere Datei auf? Bin in PHP nicht so firm.

          Gruß Andreas

          1. Hallo

            Äh, wie rufe ich im Form eine andere Datei auf? Bin in PHP nicht so firm.

            du könntest z.B. die Daten schreiben und bevor du eine ausgabe machst sendest du einen header:
            header("Location: http://www.meineseite.ch/chat.php);

        2. PS: gibts eine bessere Möglichkeit auf meiner Seite an der betreffenden Stelle einen Mini-Chat einzurichten?
          Vieleicht mit anderer Technik?

          Wie kann man den Browser bei den Clients neu refreshen, wenn ein neuer Eintrag vorhanden ist?

          Gruß Andreas