Möchte mein BG mit meinem Joomla Portal verbinden, will heißen, die Benutzerdaten sollen Synchron sein.
Wenn ein Benutzer in Joomla sein Passwort ändert soll dies auch im game geändert werden und wenn sich ein Benutzer in Joomla registriert, soll er auch gleichzeitig im Game angelegt werden.
Die Registrierung im Game selbst wird dann komplett deaktiviert, es reicht wenn er sich auf dem Portal anmeldet, genauso soll es dann auch mit dem login passieren, wobei das shcon wieder eine andere Aufgabenstellung ist, die ich selbst hinbekomme (hoffe ich
Was mir halt wichtig währe, ist das der Benutzer von Joomla auch im BG angelegt wird.
Kennt da jemand einen lösungsweg ohne das ich Joomla selbst umschreiben muß? Über eine Komponente oder so ähnlich?
Benutzerdaten sync
gepostet vor 17 Jahre, 3 Monate von mcules
gepostet vor 17 Jahre, 3 Monate von DrakeL
Greif doch einfach von deinem Game auf die DB von Joomla zu um die Logindaten zu vergleichen. Dann musst die Daten nicht redundant speichern (also nicht doppelt) und musst Sie vor allem auch nicht synchronisieren.
gepostet vor 17 Jahre, 3 Monate von mcules
Das währe ein rießiger Aufwand, da das Spiel demnächst Final geht und die komplette DB deshalb auch schon fertig ist.
Die Benutzer-DB sieht komplett anders aus als in Joomla, die möglichkeit fällt somit schon flach.
Könnte höchstens Datenbank-intern so eine art symlink erstellen, wenn jemand weiß, wie das geht?
D.h. benutzername und Passwort in eine DB eintragen und dann vom game über einen link innerhalb der DB auf die felder von joomla zugreifen, dann währe es nurnoch das mit der regi, da dabei noch ein paar sachen in andere Datenbanken eingetragen werden, was ich aber direkt über ein script machen könnte, sollte also nicht das prob sein.
Weiß jemand ob es sowas wie symlinks innerhalb der datenbank gibt?
Die Benutzer-DB sieht komplett anders aus als in Joomla, die möglichkeit fällt somit schon flach.
Könnte höchstens Datenbank-intern so eine art symlink erstellen, wenn jemand weiß, wie das geht?
D.h. benutzername und Passwort in eine DB eintragen und dann vom game über einen link innerhalb der DB auf die felder von joomla zugreifen, dann währe es nurnoch das mit der regi, da dabei noch ein paar sachen in andere Datenbanken eingetragen werden, was ich aber direkt über ein script machen könnte, sollte also nicht das prob sein.
Weiß jemand ob es sowas wie symlinks innerhalb der datenbank gibt?
gepostet vor 17 Jahre, 3 Monate von Todi42
Guck doch mal unter dem Begriff "Trigger" ob Du da was findest.
gepostet vor 17 Jahre, 3 Monate von mcules
Hab ich schonmal, bin daran verzweifelt.
Meinte aber eher einen direkten link, wenn das irgendwie möglich ist.
Meinte aber eher einen direkten link, wenn das irgendwie möglich ist.
gepostet vor 17 Jahre, 3 Monate von DrakeL
Also ich wüsste nicht ob es sowas wie direkte Links geben soll. Aber Trigger kommen dem am nächsten, ein Trigger der beim Inserten in die Joomla DB nen Insert in deine DB macht, dann Trigger für Update und Delete.
gepostet vor 17 Jahre, 3 Monate von mcules
Hast du vielleicht mal ein funktionierendes Beispiel für mich?
gepostet vor 17 Jahre, 3 Monate von DrakeL
Leider nein, ich kenne/benutze Trigger nur unter DB2. Und selbst da tu ich mir immer nur andere Befehle kopieren und ändern . Eventuell kann ich dir morgen ein Beispiel aus der DB2 Datenbank geben.
Ob dies aber für MySQL auf die gleiche Art und Weise gilt weiß ich jedoch nicht. Hast du schon in der MySQL Dokumentation geschaut?
Vielleicht hilft dir das weiter: MySQL Dokumentation - Trigger
Kurz, falls Trigger noch nicht kennst:
Du kannst einen Trigger auf eine beliebige Tabelle setzen mit einem Zeitpunkt wann er aktiviert wird (zum Beispiel bei einem Insert). Des weiteren besitzt er ein Statement, welches bei seiner Aktivierung ausgeführt wird (zum Beispiel dass der Datensatz vom Insert in deine DB mit eingetragen wird). Allerdings bezweifle ich, dass es über mehrere Datenbanken geht (korrigiert mich, wenn ich falsch liege), aber geht auf jedenfall, wenn die Tabellen sich in der selben Datenbank befinden.
EDIT: Dokumentiere die Trigger, die du anlegst irgendwo. Wir hatten schon öfters Probleme mit unvorhersehbaren Datenbankprobleme, weil irgendwelche vergessene Trigger zwischen den Statements ausgeführt wurden. Daher solltest du genau wissen, welche Trigger du hast und was Sie machen.
Ob dies aber für MySQL auf die gleiche Art und Weise gilt weiß ich jedoch nicht. Hast du schon in der MySQL Dokumentation geschaut?
Vielleicht hilft dir das weiter: MySQL Dokumentation - Trigger
Kurz, falls Trigger noch nicht kennst:
Du kannst einen Trigger auf eine beliebige Tabelle setzen mit einem Zeitpunkt wann er aktiviert wird (zum Beispiel bei einem Insert). Des weiteren besitzt er ein Statement, welches bei seiner Aktivierung ausgeführt wird (zum Beispiel dass der Datensatz vom Insert in deine DB mit eingetragen wird). Allerdings bezweifle ich, dass es über mehrere Datenbanken geht (korrigiert mich, wenn ich falsch liege), aber geht auf jedenfall, wenn die Tabellen sich in der selben Datenbank befinden.
EDIT: Dokumentiere die Trigger, die du anlegst irgendwo. Wir hatten schon öfters Probleme mit unvorhersehbaren Datenbankprobleme, weil irgendwelche vergessene Trigger zwischen den Statements ausgeführt wurden. Daher solltest du genau wissen, welche Trigger du hast und was Sie machen.
gepostet vor 17 Jahre, 3 Monate von mcules
Ja, wie gesagt ich habe mich schonmal mit Triggern rumgeschlagen und bin zu dem schluß gekommen, das sich zwei Trigger zu tode getriggert haben, weil in beide Tabellen daten eingetragen wurden und bei jeden insert der andere trigger ebenfalls mit einem insert geantwortet hat ^^
Die MySQL Doku dazu habe ich damals auch schon gelesen, das beste währe wirklich so ein Link.
Die MySQL Doku dazu habe ich damals auch schon gelesen, das beste währe wirklich so ein Link.
gepostet vor 17 Jahre, 3 Monate von mail-me
Du brauchst ja für dein Spiel nur ne andere Ansicht der Joomla-User-Tabelle, oder? Vielleicht hilft dir eine "View" weiter. Doppelt speichern würd ich allerdings vermeiden...
gepostet vor 17 Jahre, 3 Monate von mcules
Okay, damit habe ich noch nie etwas gemacht und mich auch noch nicht damit beschäftigt.
Kann ich die Views genauso wie eine Tabelle abrufen?
Kann ich die Views genauso wie eine Tabelle abrufen?
gepostet vor 17 Jahre, 3 Monate von DrakeL
Bei Selects ist es egal, ob du auf eine Tabelle gehst oder auf einem View, ist beides das selbe.
Nur Insert und Updates kannst du entweder gar nicht, oder nur Beschränkt durchführen (in DB2 gehen Sie glaub Beschränkt noch, wie es in MySQL aussieht weiß ich nicht).
Aber gute Idee, daran hab ich noch gar nicht gedacht
Nur Insert und Updates kannst du entweder gar nicht, oder nur Beschränkt durchführen (in DB2 gehen Sie glaub Beschränkt noch, wie es in MySQL aussieht weiß ich nicht).
Aber gute Idee, daran hab ich noch gar nicht gedacht
gepostet vor 17 Jahre, 3 Monate von mcules
Und wie spreche ich in meinem Quellcode (PHP) einen View an?
Dann währe das doch in der Theorie mein Link!
Dann währe das doch in der Theorie mein Link!
gepostet vor 17 Jahre, 3 Monate von TheUndeadable
Genauso wie eine Tabelle.
gepostet vor 17 Jahre, 3 Monate von mcules
Hmm, das werde ich dann gleich mal ausprobieren...
EDIT:
Frage ist jetzt nur, wie mache ich das Datenbank übergreifend?
Joomla liegt in einer anderen Datenbank als das BG aber auf dem selben Server.
EDIT:
Frage ist jetzt nur, wie mache ich das Datenbank übergreifend?
Joomla liegt in einer anderen Datenbank als das BG aber auf dem selben Server.
gepostet vor 17 Jahre, 3 Monate von mail-me
Du kannst die Tabellen mit datenbank.tabelle identifizieren wenn alle Datenbanken in einem Datenbanksystem sind.
z.B. Select ... FROM datenbank1.tabelle1, dantenbank2.tabelle2 WHERE ...
z.B. Select ... FROM datenbank1.tabelle1, dantenbank2.tabelle2 WHERE ...
gepostet vor 17 Jahre, 3 Monate von mcules
Habe es jetzt so versucht, der macht das aber nicht über mehrere Datenbanken, wo liegt mein Fehler?
SELECT entw FROM uniwar_de_b6.users WHERE id=1
SELECT username FROM uniwar_portal.rdc_users WHERE id=1 AND
SELECT entw FROM uniwar_de_b6.users WHERE id=1
gepostet vor 17 Jahre, 3 Monate von Drezil
SELECT port.username, game.entw FROM uniwar_portal.rdc_users port join uniwar_de_b6.users game on (game.id = port.id) WHERE port.id=1
so sollte es gehen
ist nicht fein, aber das datenbank-design ansich ist hässlich. da bin ich froh, dass ich mehrere schemen in einer datenbank habe. aber soweit ist es mit mysql ja noch nicht
aber besser wäre imho ein view:
CREATE OR REPLACE VIEW view_account AS
SELECT uniwar_portal.rdc_users.*, uniwar_de_b6.users.*
FROM uniwar_portal.rdc_users join uniwar_de_b6.users on (uniwar_portal.rdc_users.id = uniwar_de_b6.users.id);
ka, ob mysql sowas kann.
gepostet vor 17 Jahre, 3 Monate von mcules
Der erste Query funktioniert, liefert mir aber ein leeres Ergebnis zurück.
Der zweite Query bringt mir nur Fehler.
Der zweite Query bringt mir nur Fehler.
gepostet vor 17 Jahre, 3 Monate von DrakeL
Die erste Zeile des zweiten Query mit der Syntax des Views stimmt. Dann muss ein Fehler im Statement sein. Mach dir erstmal ein Statement, welches die Daten selektiert die du haben willst.
CREATE OR REPLACE VIEW as
gepostet vor 17 Jahre, 3 Monate von Todi42
Original von mcules
Der zweite Query bringt mir nur Fehler.
Damit Dir jemand helfen kann, ist es immer sinnvoll, die Fehlermeldungen, die Du erhalten hast, mit anzugeben.
gepostet vor 17 Jahre, 3 Monate von mcules
So funktioniert es:
FROM uniwar_portal.rdc_users join uniwar_de_b6.users on
(uniwar_portal.rdc_users.id = uniwar_de_b6.users.id);
Jetzt muß ich nur mal schauen, wie ich den view anlege.
SELECT uniwar_portal.rdc_users.*, uniwar_de_b6.users.*
FROM uniwar_portal.rdc_users join uniwar_de_b6.users on
(uniwar_portal.rdc_users.id = uniwar_de_b6.users.id);
Jetzt muß ich nur mal schauen, wie ich den view anlege.
gepostet vor 17 Jahre, 3 Monate von DrakeL
CREATE OR REPLACE VIEW AS
SELECT uniwar_portal.rdc_users.*, uniwar_de_b6.users.*
FROM uniwar_portal.rdc_users join uniwar_de_b6.users on
(uniwar_portal.rdc_users.id = uniwar_de_b6.users.id);