Suche Tutorial für Persöhnliche Nachrichten System

Tut sie in meinem Falle auch. Du kannst ja per Query

Code:
SELECT * FROM nachrichen WHERE userFrom = [meineuserid]

Nur Nachrichten anzeigen lassen, die von dir geschickt wurden => vulgo Postausgang.
 
Stimmt

Nur ist dann das Problem wenn der ToUser es löscht ist es in deinem Postausgang auch nicht mehr vorhanden!

Also käme eine Extra Tabelle dafür ganz gut um dies zu vermeiden ;)
 
Oder in der Tabelle einfach erfassen Ob der Empfänger die Nachricht gelöscht hat, und ob der Sender sie gelöscht hat.
Hat einer der beiden sie bei sich gelöscht wird sie ihm nichtmehr angezeigt. Haben beide sie gelöscht, wird sie komplett gelöscht.
 
Oder in der Tabelle einfach erfassen Ob der Empfänger die Nachricht gelöscht hat, und ob der Sender sie gelöscht hat.
Hat einer der beiden sie bei sich gelöscht wird sie ihm nichtmehr angezeigt. Haben beide sie gelöscht, wird sie komplett gelöscht.

Wie willst du das Realisieren?

Wenn es der Empfänger löscht wie willst du dem Absender bitte mitteilen das der Empfänger es gelöscht hat?

Oder anderst herum!

Ich glaub nicht dass das funktionieren würde!

Wie gesagt besser ist es immer noch zwei Tabellen zu haben so kommt es nicht zum Konflikt falls es der Empfänger bzw. der Absender löscht ;)
 
In dem du beim Löschen einfach die Sender bzw. die Receiver ID auf NULL setzt.
Dadurch wird sie bei einem von beiden nicht mehr ausgelesen.

Beim Löschen sollte man dann noch prüfen, ob beide NULL sind und falls ja den gesamten Datensatz löschen.
 
Redundate Daten in Datenbanken sind immer schlecht, es in einer abzuspeichern ist auf jeden Fall der bessere Weg.

Wie Realisieren? Es gibt 2 Spalten "absender_gelöscht" "empfänger_gelöscht"

Beim löschen fragt man ab ob "die andere" auf löschen steht:
wenn ja -> löschen
wenn nein -> nur eigene spalte auf löschen stellen

und beim nachrichtenliste ausgeben halt eben in die WHERE Klausel das "empfänger gelöscht = 0" mit aufnehmen.

Klingt doch ganz einfach...

Edit: die reciverid / senderid würd ich nicht nullen, da sonst der andere nicht mehr weis von wehm sie war...
 
Absolut korrekt @engelb. Dafür haben wir dann folgende Queries, basierend auf den zwei zusäzlichen Spalten:

Post-Eingang (nur neue Nachrichten):

Code:
SELECT * FROM nachrichten WHERE userTo = [me] AND inbox_delete = 0 AND readen = 0;

Post-Eingang (auch alte Nachrichten):

Code:
SELECT * FROM nachrichten WHERE userTo = [me] AND inbox_delete = 0;

Post-Ausgang:

Code:
SELECT * FROM nachrichten WHERE userFrom = [me] AND outbox_delete = 0;

Papier-Korb:

Code:
SELECT * FROM nachrichten WHERE (userFrom = [me] AND outbox_delete = 1) OR (userTo = [me] AND inbox_delete = 1);

Wahlweise kann man für endgültige Löschung noch einen Lösch-Status (2) hinzufügen, dann wird die Nachricht nicht mehr im Papierkorb angezeigt, wenn beide Benutzer endgültig gelöscht haben, kann der Datensatz gelöscht werden.

Vom Prinzip her ist das schon alles.
Müsste nun noch in Scripte eingebaut werden.
 
Hey...

Also ich habe das mal so getestet...... wie ich glaube das es richtig ist...

aber ich scheiter schon an einer anderen sache..
nur wenn ich mit phpMyAdmin eine neue Spalte einfüge ("new") dann kann ich keine Nachrichten mehr schreiben... was ich vorher haber konnte! ich habe New als Char (1) mit Standart 1 gemacht und wollte ohne was umprogrammiert zu haben ne Mail schreiben und es ging nicht... wenn ich die Spalte dann lösche geht wieder alles...
 
Zuletzt bearbeitet:
Hallo Leute,

Ich lese die ganze Zeit userid, ich für meinen teil weis nirgendwo meine userid. Wie funktioniert das ganze, wen ich den Usernamen verwenden will?
 
Code:
<html>
<head>
<title>New Mail</title>
</head>
<body>
<?php include ("checkuser.php"); ?>

<?php
$host = "localhost";
$user = "-";
$password = "-";
$dbname = "-";
$tabelle ="mailbox";
$myid = "$_SESSION["user_nickname"]";
$dbverbindung = mysql_connect ($host, $user, $password);

$dbanfrage = "SELECT * from $tabelle WHERE empf = $myid";
$result = mysql_db_query ($dbname, $dbanfrage, $dbverbindung);

 while ($ausgabe = mysql_fetch_array ($result))
 {
print ("Hallo, neue Nachricht");

 }

mysql_close ($dbverbindung)
?>
</body>
</html>

mhh bei mir funktioniert das irgendwie nicht... sehe ich ein fehler nicht?
 
Zurück