PHP in echo?

Hallo!
Ich störe ja nur ungern, aber ich habe im moment ein echtes Problem:

[code]

Posteingang


<?php session_start();

$connectionid = mysql_connect (“localhost”, “", "”);
if (!mysql_select_db ("*", $connectionid))
{
die (“Keine Verbindung zur Datenbank”);
}

$user = $_SESSION[“user”];

$abfrage = “SELECT ID, Nachricht, Absender, Empfänger, Betreff, Datum, Uhrzeit, Timestamp, Lesen FROM Nachrichten_In WHERE Empfänger = ‘$user’ ORDER BY Timestamp DESC”;
$ergebnis = mysql_query ($abfrage);

while ($row = mysql_fetch_object($ergebnis)) {
$user = $row->Username;
$id = $row->ID;
$nachricht = $row->Nachricht;
$absender = $row->Absender;
$empfaenger = $row->Empfänger;
$betreff = $row->Betreff;
$datum = $row->Datum;
$uhrzeit = $row->Uhrzeit;
$timestamp = $row->Timestamp;
$lesen = $row->Lesen;
echo "

"; } ?>
Absender
Betreff
Datum
$absender $betreff $uhrzeit $datum
$nachricht
[/code] Soweit läuft ja alles gut, aber nun möchte ich, das wenn man die Nachricht öffnet, dann soll die Nachricht als gelesen in die Datenbank eingetragen werden. Dazu hatte ich mir folgendes in der Theorie überlegt: [code]<?php if($lesen == 1) {
$aendern = "UPDATE Nachrichten_In SET Lesen = '0' WHERE ID = '$id' AND Timestamp = '$timestamp'";
$update = mysql_query($aendern);

}
else
{

}
}
?>[/code]
Aber wie bekomme ich das nun, dass das ausgeführt wird, wenn man eine Nachricht öffnet. Ich dachte schon mit Javascript aber ich habe keine Ahnung wie das geht.

Vielen Dank schon mal im Vorraus und ein schönes und gesegnetes Weihnachtsfest und einen guten Rutsch ins neue Jahr!

Gruß, Zoola

Hallo

Deine Idee ist gar nicht so schlecht.

Du musst nun deinen Code:

$aendern = "UPDATE Nachrichten_In SET Lesen = '0' WHERE ID = '$id' AND Timestamp = '$timestamp'"; $update = mysql_query($aendern);Nur noch dort positionieren, wo der Code hin gehört, sprich in die Datei, welche die Nachrichten anzeigt.

Freundliche Grüsse und ein schönes Fest
Joey

[code]

Posteingang


<?php session_start();

$connectionid = mysql_connect (“localhost”, “", "”);
if (!mysql_select_db ("*", $connectionid))
{
die (“Keine Verbindung zur Datenbank”);
}

$user = $_SESSION[“user”];

$abfrage = “SELECT ID, Nachricht, Absender, Empfänger, Betreff, Datum, Uhrzeit, Timestamp, Lesen FROM Nachrichten_In WHERE Empfänger = ‘$user’ ORDER BY Timestamp DESC”;
$ergebnis = mysql_query ($abfrage);

while ($row = mysql_fetch_object($ergebnis)) {
$user = $row->Username;
$id = $row->ID;
$nachricht = $row->Nachricht;
$absender = $row->Absender;
$empfaenger = $row->Empfänger;
$betreff = $row->Betreff;
$datum = $row->Datum;
$uhrzeit = $row->Uhrzeit;
$timestamp = $row->Timestamp;
$lesen = $row->Lesen;
echo "

"; } ?>
Absender
Betreff
Datum
$absender $betreff $uhrzeit $datum
$nachricht <?php if($lesen == 1) {
$aendern = \"UPDATE Nachrichten_In SET Lesen = '0' WHERE ID = '$id' AND Timestamp = '$timestamp'\";
$update = mysql_query($aendern);

}
else
{

}
}
?>

[/code] So?

Du hast dir glaub ich, noch kein richtiges Konzept für den Skript überlegt. Du liest einfach alle Datensätze aus und gibst sie dann aus.

Ein sinnvolleres System wäre zB. nur den Titel, den Sender und die Zeit abzufragen und ein Link zu einem anderen Skript zu setzen, der dann den Rest der Nachricht anzeigt und den Status auf “gelesen” setzt.

Und PS: Lass bloß den Javascript-Quatsch, du kommst ohne ihn besser aus. Und komme niemals auf die Idee eine solche Verarbeitung teilweise über Javascript laufen zu lassen :wink:

Nette Grüße, xcube

Wie xcube schon sagte, verwende eine Datei zum Auflisten, eine zum Anzeigen, eine zum Erstellen, und eine zum Speichern… zumindest ist das die übliche Vorgehensweise für Anfänger.
Später kannst du das auch alles in eine Datei packen und zB per switch() wählen.

In deinem Fall empfehle ich dir 2 includes für Header und Footer (der HTML-Teil vor und nach dem veränderlichen Inhalt). Eine Datei zum Listen und eine zum Anzeigen.

Außerdem solltest du dir angewöhnen den ausführenden PHP-Teil vor der Ausgabe zu positionieren.

Hier ein Beispiel (für deinen Fall, zum Anzeigen):

ist so nur ein Beispiel (auch ungetestet), sollte dir nur eine Idee von der sauberen Umsetzung geben :wink: