Private Message System PHP
Hejsa.Jeg er i gang med et PM system. Jeg er dog stødt ind i et problem jeg ikke lige umiddelbart ved hvordan jeg skal løse. Jeg har lavet det hele i 3 filer: Post, se besked, send besked. I "post" får du vist dine beskeder ligesom du gør her på exp.dk. Altså - både hvad jeg har sendt og hvad jeg har modtaget.
Så kan man trykke på et link for, at komme ind og se beskeden + de yderligere beskeder der er sendt til denne besked.
Fuldstændig ligesom her på Eksperten.dk
Jeg har 2 tabeller i min MySQL: post og post_answer.
Hvoraf "post" er "hoved beskeden" der bliver sendt. Og post_answer er de yderligere beskeder sendt til den "hoved besked". Svar og hovedbesked har fælles id, så de kan "parres".
I min POST, med hovedbeskeder, har jeg en row der hedder: "opened". Her er Default "0" og, hvis beskeden så er læst, bliver den "1".
Mit problem er følgende:
.. Jeg vil godt kunne give brugerne besked om, hvornår der er ny post til dem. Det kan jeg gøre ved, at konstatere om Opened er 0 eller 1. Problemet er bare, at:
- Når der er sendt "yderligere beskeder" til en "hoved besked", så fortæller den at der er ny post. MEN hvis så den ene bruger åbner beskeden så ændre Opened status sig til 0, og den anden bruger når ikke at se at der er ny post.
- Kan man ikke skelne mellem, om det er mig der sender en besked til en anden (så skal jeg ikke have nogen notifikation). Eller om det er den anden der sender en besked til mig (så skal den give en notifikation KUN hos mig)..
Her er noget kode:
Post (vis hoved beskeder):
<?php
$vis = $_GET[vis];
$user = $_SESSION['username'];
if(isset($vis)){
$laest = mysql_query("UPDATE post SET opened = '1' WHERE id='$vis' AND to_user = '$user'")or die(mysql_error());
}
$sql = mysql_query("SELECT * FROM post WHERE id='$vis'")or die(mysql_error());
while($row = mysql_fetch_array($sql)){
$to_user_svar = $row['to_user'];
$from_user_svar = $row['from_user'];
$date = $row['timestamp'];
$date_post_added = date('d F Y \k\l\.\ H:i:s', strtotime($date));
?>
Yderligere beskeder vises:
<?php
$id = $_GET[vis];
$sql_vis_svar = mysql_query("SELECT * FROM post_answer WHERE answer_id='$id'")or die(mysql_error());
while($rows = mysql_fetch_array($sql_vis_svar)){
$date2 = $row['timestamp'];
$date_svar_added = date('d F Y \k\l\.\ H:i:s', strtotime($date));
?>
Send en yderligere besked:
<?php
$answer_header = $_POST['answer_header'];
$answer_content = $_POST['answer_content'];
$answer_id = $_POST['answer_id'];
$from_user = $_POST['from_user'];
$to_user_answer = $_POST['to_user_answer'];
if(isset($_POST['answer_content'])){
if($answer_content === ''){
$errMsg = "Du skal udfylde feltet.";
} else {
mysql_query("UPDATE post SET new_answer='1' WHERE id='$id'")or die(mysql_error());
$sql2 = mysql_query("INSERT INTO post_answer (from_user, to_user_answer, answer_header, answer_content, answer_id)
VALUES('$from_user', '$to_user_answer', '$answer_header', '$answer_content', '$answer_id')")
or die(mysql_error());
$successMsg = "Dit svar er sendt!";
}
}
?>
<form action="/post/indbakke/vis/<?=$id?>" method="post">
<textarea maxlength="300" cols="50" rows="10" name="answer_content"></textarea><br>
<input name="submit" type="submit" value="Send svar">
<?php if(isset($errMsg)) echo $errMsg;?>
<?php if(isset($successMsg)) echo $successMsg?>
<input type="hidden" value="<?=$id?>" name="answer_id">
<input name="from_user" type="hidden" value="<?=$user?>">
</form>
P.S Jeg ved godt, at jeg ikke har nogen form for validering eller noget. Men det kommer ;-)