Browser - aktualisieren

WolfBauer

Erfahrenes Mitglied
Hallo,

so erstmal vorweg. Ich weiß nicht, ob ich hier richtig bin oder besser bei html oder javascript hätte schreiben soll.

Aber nun zu meinem Problem. Wahrscheinlich ist es aber eh nicht losbar.

Also ich habe ein Formular mit welchem ich einen simplen Text eingeben kann. Dieser wird in einer Datenbank gespeichert und das formular wird wieder zur gleichen seite geschickt. (man bleibt also bei der seit wo man den Text eingegeben hat). Der text wird nun über dem formular angezeigt. Wenn man noch mehr Texte speichert werden sie über dem vorher eingegebenen angezeigt. ( :) halt wie ein Gästebuch)

Ein Problem habe ich nun, wenn ich ein Text erfolgreich eingegben habe und er angezeigt wird. Wenn man jetzt als nächstes sofort auf "aktualisiern" des Browsers klickt wird der eben gespeicherte Text nochmal gespeichert und angezeigt und das bei jedem aktualisieren.

hier ein kleiner auszug beim speichern;
Code:
if(isset($gesendet))     // Wert des Formularbutton
 {      
$new_kommentar = convert(true,true,true,$new_kommentar);            
$akt_datum = date("d.m.Y"); // aktuelles Datum wird eingelesen      
$akt_datum = crunch($akt_datum); // datum zum format JJJJ-MM-TT              

   if (strlen ($new_kommentar)> 0)        
   {                
   $kom_new = "INSERT INTO $bug_kommentar 
                       (BUG_NUM, KOMMENTAR, DATUM, ERSTELLER)
                       VALUES('$bug_num', '$new_kommentar', '$akt_datum', '$username');";      

    mysql_db_query($dbname, $kom_new); // der DBbefehl wird ausgefuehrt                  
    
      if (mysql_affected_rows()==0)  //wenn datensaetze geaendert wurden  			 
      {            
          echo "Fehler beim SQL-Befehl: $kom_new ";            
      }      
    }
}

Kann man das iregdnwie unterbinden? Ich habe schon versucht die Werte auf null, 0 oder false zu setzen aber interessiern tut das den Browser herzlich wenig.

Danke,
MFG,
Wolf
 
Es ist möglich!

Du musst nach dem Einfügen der Daten in die DB einfach den header()-Befehl verwenden und das Script auf eine andere Seite weiterladen (d.h. nicht auf die Seite, die du in der action-Angabe im Formtag verwendest). Wenn du aber auf die selbe Seite weiterleiten willst, weil sich Code zum Einfügen und Anzeige der Gästebucheinträge auf der selben Seite befinden, kannst du auch einfach einen beliebigen Parameter per GET übermitteln, der für den weiteren Verlauf des Scripts unwichtig ist oder evtl. sogar die Bestätigung enthält, dass der Gästebucheintrag eingefügt wurde.
PHP:
<?php
  if(isset($_POST["name"])) {
     # einfügen
     header("Location: ".$_SERVER["REQUEST_URI"]."&insert=true");
  }
  
  if(isset($_GET["insert"]) AND $_GET["insert"] == "true")
     echo "<b>Der Eintrag wurde eingef&uuml;gt!</b>";

  #Gästebucheinträge anzeigen

?>
 
Danke im voraus werde das gleich mal ausprobieren. Ich kann allerdings nicht die Header-Version nehmen, das sich der code zum anzeigen in der gleichen Datei befindet.
 
Du kannst schon die Headerversion nehmen, nur dass du eben noch eine zusätzliche Variable übergeben muss, die beim Senden des Formulars nicht übergeben wird, so wie ich es oben im Beispiel getan habe ;)

Die Variable habe ich dabei "insert" genannt und als Wert "true" benutzt.
 
Also es klappt nicht...

Den Header befehl kann ich nicht benutzen, da vorher schon Header-Infos gesendet werden.

Jetzt habe ich es versucht indem ich mit dem Formular eine Variable mitgegeben habe. ("J")
Die oben angegebnen if anweisung betritt er nur bei einem "J". in der Anweisung wird der Variable "N" zugewiesen.

Es kann also nur gespeicht werden wenn man den Submit()-Button drückt. Wenn ich mit jetzt diese Steuervariable in der If-Struktur ausgeben lassen. (vor und nach der "N"-Zuweisung) wird bei ersten Eintrag folgendes ausgegeben:
N J - ist ja auch logisch.

Code:
if($gespeichert=="J")

Wenn ich nun aber auf neu laden der Seite klickt wird der Eintrag gespeicht und angezeigt. Die Variable wird aber nicht angezeigt. Sie ist ja auch leer, da ich nicht den Button gedrückt habe. Aber warum zum Teufel wird der Text trotzdem gespeichert?

Die Steuervariable ist doch nicht gesetzt...

Gruß
 
so habe es geschafft. :)

du hastest natürlich recht mit dem Header geht es. aber ich mußte erst alles in eine Datei auslagern in der noch nichts ausgegeben wurde.

sonst gab es eine Fehlermeldung.

Danke und schönen Tag noch.
 
Wenn du vor dem header() bereits einen Output hast, kannst du auch ob_start() und ob_end_flush() benutzen.

PS: Kennzeichne das Thema bitte als 'erledigt'.
 
Danke für die Info.

mmh und ich habe das Thema schon vor einiger Zeit als erledigt markiert. Aber im Forum wird es nicht als erledigt angezeigt.
 
Zurück