das habe ich mir schon gedacht, denn die Art wie du deine Frage formuliert hast…
Ich versuche das Ganze mal sehr einfach zu schreiben.
Ich habe eine Chat mit PHPmyAdmin Datenbank.
PHPmyAdmin ist ein Administrationswerkzeug für MySQL, also keine Datenbank ansich.
In diesem Chat
kann ich auch die Funtkion " away"
(kurzeitiges Abmelden, aber dennoch im Chatraum verbleiben)
benutzen. In diesem Moment steht der Username auf der
Webseite, wo die Chaträume angezeigt werden in Klammern. Mache
ich „away“ wieder rückgängig, verschwinden die Klammern um den
Usernamen herum, wieder. Das ist auch richtig so.
Ich kenne jetzt nicht die Datenbankstruktur, aber ich versuche es mal mit einen Schuss ins Blaue.
Du hast eine Tabelle „comm_cannel“, dann hast du eine „Zwischen-Tabelle“ für das aufschlüsseln einer *-to-* Beziehung.
In dieser Zwischen Tabelle gibt es eine Spalte mit der User-ID (ist Primärschlüssel von der Tabelle „user“ oder wie sie auch immer sich nennt) und eine Spalte mit der Cannel_ID (ist Primärschlüssel von der Tabelle „comm_cannel“) und die Tabelle „User“.
du musst jetzt nur noch die „Zwischen-Tabelle“ um eine Spalte „away“ (oder wie auch immer du sie nennst) erweitern.
An der Stelle wo das Chat-Programm die User im Chat ausliest, braucht du nur mittels WHERE-Klausel/JOIN-Anweisung die SELECT-Anweisung um die Zwischen-Tabelle erweitern. Durch dieses Konstrukt kannst du Aussagen machen, wie: „zeige alle User im Chat X welche Aktiv(Inaktiv) sind“, oder „zeige mir alle chatraume vom User X in der er als Aktiv(Inaktiv) angemeldet ist“ usw.
Wie man solche Select Anweisungen definiert
http://aktuell.de.selfhtml.org/artikel/datenbanken/j…
Die dortigen Beispiele sind sehr einfach und für Anfänger gut nachvollziehbar, damit sie sich in das Thema JOIN herrantasten können.
Jetzt mal was zu dem dir merkwürdig vorkommenden Zeug, das ich im vorigen Post geschrieben habe.
=> Datenabank-Layer:
Du siehst das in der DB nur die Daten gespeichert(INSERT, UPDATE) bzw. ausgelesen (SELECT) werden, weiterhin gibt es eine einfache Validierung, denn der User X kann in keinen bzw. in mehren Chats sein (die exakte Definition dieser Valdierung regelt das JOIN bzw. Ceck Constrains auf Tabellen Ebene)
=> Webanwendung (Chart)
1)z.B.: die Userinformationen in einem Array gespeichert, ist das O/R-Mapping zwischen Tabelle User und der Webanwendung.
2) ein Benutzer kann nur in einen Chat sein, wenn er sich authentifiziert hat, ist eine komplexe Validierung => Business/Logik-Layer
3) im PHP-Script
print("Der User ".$username." ist im Chat ".$cannelName." ".$userStatusImCannel.");
wäre der Präsentations-Layer
sicherlich ecken diese Beispiele an, denn das Problem von PHP ist wie gesagt das diese Sprache nicht 100% nativ Objekt orientiert ist. Das hat zur Folge, das sehr viele Programme nicht das OO-Konzept um gesetzt haben. Aber mit ein paar Tricks könnte man selbst unter PHP reine und saubere OO-Konzepte umsetzen, nur das es extrem umständlich wäre im vergleich zu anderen Programmmiersprachen.