echo $begrüßung;
Ein Benutzer kriegt seinen aktuellen Status (z.B. "Dein Profil ist nicht öffentlich") angezeigt
Das heißt also, dass die Seite wechselnden Inhalt hat und mit jedem Besuch der Seite etwas anderes dastehen kann. In dem Fall ist es nicht sinnvoll, dass der Browser eine Kopie der Seite im Cache ablegt und beim erneuten Aufrufen diese verwendet.
Die Seite in diesem Fall ist paßwortgeschützt und nur für diesen einen User zugänglich. Über das Formular auf dieser Seite kann er seinen Status ändern, also ob im öffentlichen Teil der Website z.B. sein Profil angezeigt werden soll oder nicht. Die Seite hat also wechselnde Inhalte, allerdings werden die vom User immer manuell geändert.
Das heißt, ich müßte es irgendwie hinkriegen, daß mit Absenden des Formulars die gesamte Seite neu geladen bzw. zumindest die Datenbank neu ausgelesen und der neue Status angezeigt wird.
Bitte den Browser also, die Seite jedes Mal neu zu holen. Dazu kannst du HTTP-Header senden (Beispiel im PHP-Handbuch) und/oder im HTML-Head Meta-Elemente verwenden. Siehe Datei von Originaladresse laden und Diverse Meta-Angaben. Ein HTTP-Header hat dabei immer Vorrang vor einer gleichnamigen "meta http-equiv"-Angabe.
Ich hab das alles probiert, aber es klappt trotzdem nicht. Es geht ja nicht (nur) darum, daß die Inhalte der Datenbank bei jedem Seitenbesuch neu ausgelesen werden müssen und nicht aus einem Cache kommen dürfen. Es geht darum, daß die Seite automatisch nach Klicken eines Buttons neu geladen wird und dadurch die Daten in der Datenbank gelesen.
Momentan kriegt der User angezeigt: Ihr Profil ist nicht öffentlich. Er möchte es jetzt aber veröffentlichen und klickt auf den Button "Profil freigeben". Nach Klicken dieses Buttons wurde zwar in der Datenbank der entsprechende Eintrag geändert, aber der User kriegt immer noch angezeigt "Ihr Profil ist nicht öffentlich" und den Button zum Freigeben. Er soll aber den neuen Status angezeigt kriegen und den neuen Button, mit dem er es wieder sperren kann.
Eine Weiterleitung mit der header()-Funktion hat bislang nicht funktioniert bzw. hab ich's nicht hingekriegt ...
Das ganze Script sieht momentan so aus:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<?php
$tabellenname="xxxxxx";
$link = mysql_connect("localhost", "xxxxx", "xxxxxxx");
mysql_select_db("xxxxxxxx", $link);
$sql="SELECT status FROM $tabellenname";
$result = mysql_query($sql, $link);
$ergebnis=mysql_fetch_array($result);
?>
<HTML>
<HEAD>
<meta http-equiv="expires" content="0">
<TITLE> </TITLE>
</HEAD>
<BODY>
Ihr Profil ist derzeit:
<?php
if($ergebnis[status]=="0")
{
echo "nicht öffentlich.";
}
if($ergebnis[status]=="1")
{
echo "öffentlich.";
}
?>
<?php
if($ergebnis[status]=="0")
{
?>
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="hidden" name="flag" value="1">
<input type="submit" value="Status ändern auf: öffentlich">
<?php
if($_POST[flag]==1)
{
$sql="UPDATE $tabellenname set status=1";
$link = mysql_connect("localhost", "xxxxx", "xxxxxxxxx");
mysql_select_db("xxxxxxxxxx", $link);
$result = mysql_query($sql, $link);
}
}
?>
</BODY>
</HTML>
Welche Möglichkeit(en) hab ich denn nun hier, dem Browser zu sagen, daß er mit Klick auf den Button zuerst den Wert ändern und dann sofort die Seite neu laden oder zumindest die Datenbank neu auslesen soll?
Ich wäre Euch wirklich überaus dankbar, wenn mir irgend jemand einen entscheidenden Tipp geben könnte. Bislang hat alles nicht so recht funktioniert, was ich mit der header()-Funktion probiert hab. Ich mache sicher irgendwas ganz grob falsch oder gar nicht, aber ich weiß nicht, was ...