Guthabenwerte aller User auf einen gewissen Wert setzen?

  • Hi Toby,

    kann ich irgendwie alle bisherigen Guthaben der User auf einen von mir gewählten Wert setzen? Bei über 4000 Usern wäre ein manuelles Editieren nicht machbar - brauche daher eine Massenverarbeitung. :)

    Gruß

  • Über PHPMyAdmin z.B. - Hab aber leider kein Zugriff auf nen WCF mit Guthaben-Plugin.
    Kann aber gerne heute abend mal schauen und der dann nochmal hier posten sollte keiner schneller sein ;)

  • Das ist eine ganz normale UserOption. Also in der Datenbank das richtige Feld heraussuchen und das dann updaten.
    Mit dem Query bekommt man die Nummer des Feldes heraus

    SQL
    SELECT optionID
    FROM `wcf1_user_option`
    WHERE `optionName` LIKE 'guthaben'


    Aus dieser Nummer wird dann der eigentliche Feldname in wcf1_user_option_value generiert, der lautet dann z.B. userOption22, das ist bei jeder Installation anders.

  • Mit der Abfrage bekommst du die userOptionID raus.
    Toby hat das doch schon schön erklärt.

    Zitat

    Aus dieser Nummer wird dann der eigentliche Feldname in wcf1_user_option_value generiert, der lautet dann z.B. userOption22, das ist bei jeder Installation anders.

    Wenn du das Feld hast kann man dort das Guthaben der Benutzer ändern.

    Hart - Härter - Gärtner
    Pflanzeninteressiert? Lust und Laune etwas ganz neues ins Leben zu rufen?
    Dann melde dich :)

  • Aber meine Frage bezog sich darauf, ob es eine Möglichkeit gibt, ALLE User gleichzeitig zu editieren, da ich tasuende von User habe. Bei einer einzelnen, manuellen Editierung würde ich ja Wochen dran sitzen. :)

  • Eine Möglichkeit gibt es immer ;)

    SQL
    UPDATE wcfXX_user_option_value SET userOptionYY = "ZZZ"

    XX durch deine Installationsnummer ersetzen
    YY durch die UserOptionID ersetzen
    ZZZ durch deinen Betrag ersetzen

    Alle Angaben ohne Gewähr, Haftung ausgeschlossen :P

    Hart - Härter - Gärtner
    Pflanzeninteressiert? Lust und Laune etwas ganz neues ins Leben zu rufen?
    Dann melde dich :)

  • Also anhand von Tobys Beispiel.

    Zuerst das hier in z.B. PHPMyAdmin als SQL-Query ausführen:

    SQL
    SELECT optionID FROM `wcf1_user_option` WHERE `optionName` LIKE 'guthaben'

    Ergebniss: userOption22
    Dann dieses hier für ein Guthaben von 1500:

    SQL
    UPDATE wcf1_user_option_value SET userOption22 = '1500'

    Bitte beachten dass userOption22 nur ein Beispiel ist kann auch userOption12 sein oder so.

    Edit:
    Ich liebe diesen Surfstick.. *grr* Da war wohl wer schneller. :rolleyes:

    Einmal editiert, zuletzt von DennisM (27. Dezember 2010 um 15:11)

  • Eine Möglichkeit gibt es immer ;)

    SQL
    UPDATE wcfXX_user_option_value SET userOptionYY = "ZZZ"

    XX durch deine Installationsnummer ersetzen
    YY durch die UserOptionID ersetzen
    ZZZ durch deinen Betrag ersetzen

    Alle Angaben ohne Gewähr, Haftung ausgeschlossen :P


    Ohje, sollte ich vorher ein Datenbankbackup machen?

  • Es ist immer sinnvoll ein Backup zu machen bevor man etwas rumbastelt ;)
    Vor allem wenn man direkt an der Datenbank rumbastelt kann mal schnell etwas passieren :D

    Hart - Härter - Gärtner
    Pflanzeninteressiert? Lust und Laune etwas ganz neues ins Leben zu rufen?
    Dann melde dich :)

  • Vorsicht, die Angaben in diesem Beitrag sind falsch. Bitte die Korrekturen im nachfolgenden Beitrag beachten! - Toby

    Achtung ! Backup der DB machen !

    Anmerkung : mit dem vorher genannten sql statement werden aber nur benutzer verarbeitet bei denen diese option schon auber existiert

    Ursache : Eine Installation des Guthabensystems weit nach dem Forum bringt einige Fehler

    Erklärung : Je nachdem wie das installieren abläuft kann es passieren das User einen Betrag von genau 0 besitzen,
    klickt man dann auf den Usder aus der Forbesliste ist der Link defekt, da die Userid fehlt.
    Das ganze auch nachdem man genannten SQl abgesetzt hat.

    Um es kurz zu sagen:

    DB Backuppen

    Im acp eine komplette neuberechnung über das system-wartung-anzeigen aktualisieren-guthaben neu berechnen tätigen
    Dies dient dazu die Useroption sauber zu generieren

    danach kann man dann folgende statements absetzen :

    TRUNCATE TABLE `wcfXX_guthaben_log`;
    # dient zum leeren sämtliche kontoaktivitäten

    UPDATE `wcfXX_user_option_value` SET `userOptionYY`= 'ZZZ' ;

    # dient zum neuvergeben eines grundwertes


    optional kann jetzt nochmal im acp eine neuberechnung gemacht werden dann stimmen alle beträge plus das vorher geschenkte basisguthaben


    Alle angaben ohne peng peng ehm gewähr

    Einmal editiert, zuletzt von Toby (5. Januar 2011 um 19:07) aus folgendem Grund: Diese Angaben sind falsch...

  • Ursache : Eine Installation des Guthabensystems weit nach dem Forum bringt einige Fehler

    Erklärung : Je nachdem wie das installieren abläuft kann es passieren das User einen Betrag von genau 0 besitzen,
    klickt man dann auf den Usder aus der Forbesliste ist der Link defekt, da die Userid fehlt.
    Das ganze auch nachdem man genannten SQl abgesetzt hat.


    Das halte ich für ein Gerücht. Auch hier im Forum gibt es User mit Guthaben 0 und da kann man ohne Probleme draufklicken. Vor allem gibt es auch keinen Zusammenhang zwischen User und Guthaben, warum sollte die UserID fehlen wenn jemand kein Guthaben hat?!

    Im acp eine komplette neuberechnung über das system-wartung-anzeigen aktualisieren-guthaben neu berechnen tätigen
    Dies dient dazu die Useroption sauber zu generieren


    Unfug. Die UserOption wird bei der Installation des Plugins angelegt, die Aktualisierung hat damit nichts zu tun, die berechnet nur das Guthaben neu.

    optional kann jetzt nochmal im acp eine neuberechnung gemacht werden dann stimmen alle beträge plus das vorher geschenkte basisguthaben


    Nein. Die Neuberechnung setzt das Guthaben auf null und berechnet es dann anhand der vorhandenen Beiträge, Themen und PNs neu. Da wird kein Basisguthaben berücksichtigt.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!