Tippspielgruppen: Mehrfachzuordnung eines Users

Ich habe einen Blog Artikel verfasst - Wie benutze ich die Suche richtig - Bitte diesen beachten und auch umsetzen bevor Ihr ein Neues Thema eröffnet!

  • Hallo Tippspielfreunde,


    erst einmal ein riesen großes Lob an all die Entwickler, die dieses super Tippspiel auf die Beine gestellt haben. Habe es heute bei mir auf dem Server installiert und es läuft soweit alles bestens.
    Leider habe ich festgestellt, dass man jedem Teilnehmer nur EINE Tippspielgruppe zuweisen kann.
    Daher meine Fragen:

    • Gib es eine Möglichkeit, wenn ein und derselbe Benutzer (in diesem Fall der Admin des Tippspiels) an mehreren Tippgruppen teilnimmt, eine Mehrfachzuornung zu integrieren?


    • Oder zumindest (möglichweise schneller umzusetzen) die abgegebenen Tipps auf mehrere Benutzernamen in unterschiedlichen Tippgruppen zu übertragen/ zu synchroniesieren?

    Ich habe nämlich das Problem, dass ich mindestens in 3 Gruppen mitspielen werde und somit meine Tipps für jedes Spiel immer 3fach eintragen müsste!


    Vielen Dank für jede Hilfe.


    Gruß
    jojo

    Einmal editiert, zuletzt von jojo1411 () aus folgendem Grund: Workaround hinzugefügt.

  • Nachdem es die gewünschte Funktion aktuell im Tippspiel nicht gibt, habe ich mich eigenständig daran versucht und dies für meine Bedürnisse umgesetzt.


    Ziel war es eine Lösung zu finden um mit möglichst wenig Aufwand und geringen Modifikationen am aktuellen code und der Datenbank gleichzeitig in mehreren Tippspielgruppen teilnehmen zu können. Um nicht die Datenbankstruktur komplett umbauen zu müssen (n:1 -> n:m relation) wird hierzu eine Kopie des Spielers (Clone User) angelegt und den zusätzlichen Tippgruppen zugeordnet. Um jetzt nicht für jeden Clone die Tipps des tatsächlichen Spielers (Reference User) manuell nachziehen zu müssen, habe ich das in einer eigenständigen Funktion automatisiert.


    Ich möchte meinen Workaround hier kurz mit Euch teilen:

    • Zum globalen aktivieren/deaktivieren der Sync-Funktion wurde in der Config-Datei "inc.config.php" die Variable $CONFIG['REFRESH']['CLONES'] angelegt.
    • Neue Tabelle "emtipp_users_clones" in der SQL-Datenbank angelegt. Diese Tabelle weist jeder UserID der Clones eine UserID des Referenz-Users zu (siehe Beispiel)
    • Die Funktion admin_CopyBets() wurde in die Datei inc.functions.admin.php eingefügt. Diese Funktion synchronisiert alle Tipps des Referenz-Users zu seinen Clones (one-way).
    • Auslagerung der mysql-Anweisungen zum Speichern der Bonus-Tipps von der Seite "tippen.bonuswetten.php" (normale und mobilen Version ./m/.. ) in eine seperate Funktion saveBonusTipps() in die Datei inc.functions.php
    • Die Funktionen saveTipps() und saveBonusTipps() um den Aufruf der Funktion admin_CopyBets() am Ende erweitert.
    • OPTIONAL: Die Seiten /content/admin.refresh.php, /m/content/admin.refresh.php und /extern/cron/admin.php sowie der Funktion autoRefresh() in der datei inc.functions.php um die Abfrage der oben erstellten globalen Variable und den Aufruf der Funktion admin_CopyBets() erweitern. Dadurch wird ein Sync der Tipps vor jedem DB-Refresh ausgeführt.

    Beispiel-Tabelle "emtipp_users_clones":

    usrid usrid_ref
    14
    15
    13
    11
    11
    12



    Bei mir läuft die synchronisation zwischen den Spielern und derer Clones in den verschiedenen Tippgruppen wie erwartet. Ich hoffe nichts vergessen und alles beachtet zu haben um nicht eine böse Überraschung nach dem Start der EM zu erleben ;)
    Vielleicht fällt euch noch etwas ein... Ich bin gespannt auf Eure Kommentare, Anregungen, Ideen und Fragen.


    PS: Ich würde mich freuen wenn diese oder eine verbesserte Umsetzung dieser Funktion den Weg in zukünftige Versionen Eures Tippspiels finden würde.


    Gruß JOJO

  • Nötige Änderungen an den Scripten:


    Die neu erstellte Funktion admin_CopyBets() in die Datei inc.functions.admin.php:

  • Die neu erstellte Funktion saveBonusTipps() in der Datei inc.functions.admin.php.
    Sie enthält die ausgelagerten mysql-Anweisungen der Seite "tippen.bonuswetten.php" (normale und mobilen Version ./m/.. ) zum Speichern der Bonus-Tipps. Zusätzlich wurde auch hier der Aufruf der Funktion admin_CopyBets() am Ende eingefügt:

  • Der bestehenden Funktion saveTipps() innerhalb der Datei inc.functions.php wurde der Aufruf der Funktion admin_CopyBets() am Ende hinzugefügt:

  • Nachdem es die gewünschte Funktion aktuell im Tippspiel nicht gibt, habe ich mich eigenständig daran versucht und dies für meine Bedürnisse umgesetzt.


    Ziel war es eine Lösung zu finden um mit möglichst wenig Aufwand und geringen Modifikationen am aktuellen code und der Datenbank gleichzeitig in mehreren Tippspielgruppen teilnehmen zu können. Um nicht die Datenbankstruktur komplett umbauen zu müssen (n:1 -> n:m relation) wird hierzu eine Kopie des Spielers (Clone User) angelegt und den zusätzlichen Tippgruppen zugeordnet. Um jetzt nicht für jeden Clone die Tipps des tatsächlichen Spielers (Reference User) manuell nachziehen zu müssen, habe ich das in einer eigenständigen Funktion automatisiert.


    Ich möchte meinen Workaround hier kurz mit Euch teilen:

    • Zum globalen aktivieren/deaktivieren der Sync-Funktion wurde in der Config-Datei "inc.config.php" die Variable $CONFIG['REFRESH']['CLONES'] angelegt.
    • Neue Tabelle "emtipp_users_clones" in der SQL-Datenbank angelegt. Diese Tabelle weist jeder UserID der Clones eine UserID des Referenz-Users zu (siehe Beispiel)


    Ich scheitere schon daran, in der SQL-DB eine neue Tabelle anzulegen!
    Ich gehe in meine DB mit phpMyAdmin. Erstelle ich da einen SQL-Befehl: CREATE TABLE emtipp_users_clones() Oder was muss ich machen confused-squared

  • wie ich das verstehe willst du die Tabelle users 2 mal haben also als con


    dann erstellst du die Tabelle so in phpmyadmin bei sql dieses eingeben dann hast du schon einmal die Tabelle

    Code
    1. CREATE TABLE IF NOT EXISTS `emtipp_users_clones` ( `id` int(11) NOT NULL AUTO_INCREMENT, `usr` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `status` int(1) NOT NULL DEFAULT '1', `email` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `pwd` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `name` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `department` varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'ohne Gruppe', `regDate` int(14) NOT NULL DEFAULT '0', `lastLogin` int(14) NOT NULL DEFAULT '0', `fav` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'quest', `gfav` varchar(5) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'quest', `color` int(11) NOT NULL DEFAULT '0', `currentPage` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `pwdHash` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `reminder` int(1) NOT NULL DEFAULT '1', `customRangliste` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT 'games', `tippsOverview` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `isUnlocked` tinyint(1) NOT NULL DEFAULT '0', `lastaction` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `remarks` varchar(250) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '', `showflash` tinyint(1) NOT NULL DEFAULT '1', `bezahlt` int(1) NOT NULL, `userpic` varchar(50) NOT NULL DEFAULT 'empty.jpg', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=11 ;



    ich nehme an da sollten nun alle user noch einmal rein warum auch immer


    dazu gehst du auf exportieren und wählst die tabelle users dann wählst du nur daten aus und ohne zip aus die mit ok irgendwo speichern
    jetzt habst du so einen dump in dem dieses steht

    SQL
    1. INSERT INTO `emtipp_users` (`id`, `usr`, `status`, `email`, `pwd`, `name`, `department`, `regDate`, `lastLogin`, `fav`, `gfav`, `color`, `currentPage`, `pwdHash`, `reminder`, `customRangliste`, `tippsOverview`, `isUnlocked`, `lastaction`, `remarks`, `showflash`, `bezahlt`, `userpic`) VALUES

    darunter sind deine user aufgeführt


    nun nenst du diesen insert so um und kopierst ihn dann wieder bei sql ein mit ok wird der dann gespeichert
    wobei ich immer noch nicht verstehe für was das gut sein soll da du ja auch keine abfrage für diese tabelle in einem script hast

    SQL
    1. INSERT INTO `emtipp_users_clones` (`id`, `usr`, `status`, `email`, `pwd`, `name`, `department`, `regDate`, `lastLogin`, `fav`, `gfav`, `color`, `currentPage`, `pwdHash`, `reminder`, `customRangliste`, `tippsOverview`, `isUnlocked`, `lastaction`, `remarks`, `showflash`, `bezahlt`, `userpic`) VALUES

    Zufrieden mit dem Script und dem Support?
    Möchtest du uns unterstützen?
    Dann könntest du etwas

              Spenden


  • @oldie: Vielen Dank für die tolle Beschreibung. Ich wollte das wissen, um das Vorgehen von @jojo1411 (siehe weiter oben Thema Implementierung...) umzusetzen. Und er schreibt unter Punkt 2 "Neue Tabelle "emtipp_users_clones" in der SQL-Datenbank angelegt. Diese Tabelle weist jeder UserID der Clones eine UserID des Referenz-Users zu )

  • Es muss hier keine Kopie der Users-Table erstellt werden.
    Ihr benötigt nur eine zusätzliche Table um zu definieren, welcher bestehende Benutzer in der Users-Table als Klon eines zugehörigen Referenzuser genutzt wird. Der Klon, vermutlich in einer anderen Tippgruppe, übernimmt anschließend alle Tipps des Referenzusers.

  • Es muss hier keine Kopie der Users-Table erstellt werden.
    Ihr benötigt nur eine zusätzliche Table um zu definieren, welcher bestehende Benutzer in der Users-Table als Klon eines zugehörigen Referenzuser genutzt wird. Der Klon, vermutlich in einer anderen Tippgruppe, übernimmt anschließend alle Tipps des Referenzusers.


    Gibt es dazu vielleicht eine Anleitung? :/
    :sbitte:

  • Gibt es dazu vielleicht eine Anleitung? :/
    :sbitte:

    Koinonia, wenn du Hilfe beim Anlegen der Tabelle "emtipp_users_clones" in deiner SQL-Datenbank benötigst, kann dir ggf. folgender dump helfen. Einfach über phpmyadmin importieren oder die Tabelle manuell per CREATE TABLE Befehl anlegen. UserIds müssen natürlich auf deine Umgebung angepasst werden.

  • Zum globalen aktivieren/deaktivieren der Sync-Funktion wurde in der Config-Datei "inc.config.php" die Variable $CONFIG['REFRESH']['CLONES'] angelegt.

    Ich habe die Variable (und zwar nur so wie angegeben) zwar in die Config-Datei eingetragen, aber mein Script bringt mir eine Fehlermeldung. Muss da noch irgendwas "dahinter"

  • Ich habe die Variable (und zwar nur so wie angegeben) zwar in die Config-Datei eingetragen, aber mein Script bringt mir eine Fehlermeldung. Muss da noch irgendwas "dahinter"

    Entweder einfach so:
    $CONFIG['REFRESH']['CLONES'] = 1;


    Oder zusätzliche Spalte "cloneTipps" in der DB-Table "emtipp_config" mit dem Wert 1 anlegen und so abrufen:
    $CONFIG['REFRESH']['CLONES'] = $row["cloneTipps"];