[MySQL] Werte landen/speichern [Hilfe gesucht]

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Abend liebe Community,


    Info vorraus: Ich nutze die MySQL Version: R34
    ich habe hier ein Problem:
    Ich habe oben im Script die Staatskasse:

    new StaatsGeld;


    Unter: OnGameModeInit:

    LoadKassen();


    Dann hier der LoadKasse Stock:

    stock LoadKassen()
    {
    new query[128], Query[128];
    format(query, sizeof(query), "SELECT `staatskasse` FROM `kassen`");
    mysql_store_result();
    if(mysql_num_rows() > 0)
    {
    while(mysql_fetch_row(Query))
    {
    sscanf(Query, "p<|>i",StaatsGeld);
    }
    }
    mysql_free_result();
    return 1;
    }


    Unter OnGameModeExit:

    SaveKassen();


    Und auch hier wieder der Stock:

    stock SaveKassen()
    {
    new query[128];
    format(query, sizeof(query), "UPDATE `kassen` SET `staatskasse`=`%i` WHERE 1", StaatsGeld);
    mysql_function_query(DB,query,false,"","");
    return 1;
    }


    Jetzt frage ich mich, warum das denn nicht funktioniert.
    Ich habe zum testen einfach mal in der Staatskasse 8000000 eingetragen, um zu sehen, ob er das denn lädt:


    Dann habe ich hier noch ein Befehl:

    ocmd:staatskasse(playerid, params[])
    {
    new string[128];
    StaatsGeld = StaatsGeld+100000;
    format(string, sizeof(string),"In der Staatskasse sind: %i",StaatsGeld);
    SendClientMessage(playerid, GRAU, string);
    return 1;
    }

    Und daran sehe ich auch, dass der nichts lädt oder speichert.
    Benötige eure Hilfe.
    Danke.


    Mit freundlichen Grüßen,
    Scripter4.0

    Scripter im Ruhestand.

    Einmal editiert, zuletzt von Scripter4.0 ()

  • Hey, erst einmal würde ich dir raten deine Struktur der Tabelle abzuändern.
    Geb doch jedem Eintrag eine ID, einen Namen und einen Geldwert, dann kannst du problemslos weitere Kassen hinzufügen.



    Dazu würde ich dir raten erst einmal die Tabelle zu löschen und dann folgendermaßen aufzubauen:


    ID: 1 Name: Staatskasse Geld: 8000000


    Also führ erst einmal folgendes SQL Statement aus (löscht deine aktuelle Tabelle und erstellt eine neue, nach dem o.g Schema)


    DROP TABLE kassen;
    CREATE TABLE IF NOT EXISTS kassen (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, money INT NOT NULL);



    Jetzt hat jede Kasse die du hinzufügst eine ID, einen Namen und einen aktuellen Geldbetrag.


    Über die ID filtern wir dann die gewünschte Kasse aus allen heraus (ginge auch über den Namen)
    Im o.g. Beispiel hat die Staatskasse also die ID 1


    Also sagen wir:


    UPDATE kassen SET money = 900 WHERE ID = 1
    oder:
    UPDATE kassen SET money = 900 WHERE name LIKE 'Staatskasse'



    Und den aktuellen Betrag kriegen wir dann mit


    SELECT money FROM kassen WHERE ID = 1
    oder:
    SELECT money FROM kassen WHERE name LIKE 'Staatskasse'