Per Mysql Sachen speichern und auslesen

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
  • Hi, ich habe jetzt sehr lange danach gesucht aber nichts gefunden. Und zwar habe ich auf meinem Server einen Job mit dem man Sachen liefern kann. Wenn ich diese Sachen nun ablade, dann wird eine andere Variable "gefüllt", diese Variable ist lokal. Ich weiß einfach nicht wie man es hinkriegt, dass diese Sachen gespeichert und ausgelesen werden.
    Mein Problem ist, dass die Variablen dann alle -1 sind, also nicht aus der Datenbank gelesen werden, dasselbe mit dem speichern, die Dinge werden auch nicht gespeichert.


    Meine Tabelle heißt Lager und dort sind zwei weitere Sachen, Name und Anzahl. Beim Namen stehen dann LS SF und LV. Bei der Anzahl die Anzahl von dem jeweiligen Namen.


    Ich hoffe ich habe es verständlich erklärt und hoffe mir kann es jemand anhand eines kleinen Beispiels zeigen.


    PS: Das Speichern von Spielervariablen funktioniert bei mir einwandfrei.

  • Push
    Der Beitrag ist zu kurz. Der Beitrag muss mindestens 10 Zeichen lang sein und 3 Wörter enthalten.

  • Das Plugin MySQL Plugin R5 von G-sTyLeZzZ, aus nem Thread, wie man nen Login/Registersystem macht.
    Soll ich nächstes mal ein neues Thema eröffnen?
    edit: Btw Selfmade script

    Einmal editiert, zuletzt von TheGodfather1337 ()

  • Die Variablen sollen bei Ongamemodeinit geladen werden, also LS, SF, LV.
    Und speichern sollen sie dann bei Ongamemodeexit.
    Die Anzahl an kg die man ablädt, also für alle Spieler, nicht für einen bestimmten.

  • Also das Laden wäre so:
    new lIDX = 1, DeineVariable1[500][20], DeineVariable2[500];
    @OnGameModeInit() {
    new tmp[32];
    mysql_query("SELECT * FROM `Lager`");
    while(mysql_retrieve_row()) {
    mysql_get_field("Name",DeineVariable1[lIDX]);
    mysql_get_field("Anzahl",tmp);
    DeineVariable2[lIDX] = strval(tmp);
    }
    lIDX++;
    }

    Und Speichern wäre so:
    @OnGameModeExit() {
    new lQuery[128];
    for(new l; l < lIDX; l++) {
    format(lQuery,sizeof(lQuery),"UPDATE `Lager` SET `Name`='%s', `Anzahl`='%d' WHERE `ID`='%d'",DeineVariable1[l],DeineVariable2[l],l);
    mysql_query(lQuery);
    }
    }

    Du musst nur noch in deine Tabelle die Spalte "ID" einfügen, diese auf auto increment stellen (also dass sie sich immer selbst erhöht) und ihr den Primärschlüssel geben.

  • Was hat das oben mit der [20] auf sich? Bei DeineVariable1, die ist dann bei der zweiten nicht mehr vorhanden?
    Dort steht dann, Aray must be indexed, was muss ich da dann reinschreiben?
    Und schon mal ein großes Dankeschön für deine Mühe :>

  • An deinem Script liegt es nicht, aber ich verstehe das leider nicht so ganz, ich möchte nun die Variable durch einen String dem Spieler schicken, wenn er einen Befehl eintippt.
    Aber was muss denn da jetzt rein? Das mit Variable1 und Variable2 verstehe ich nicht. Soll ich dort dann LS und SF reinschreiben?
    Wie würdest du das machen, dass die Variable durch den String geschickt wird.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich kriegs einfach nicht gebacken...
    Aber eine Frage, die erste Variable liest also den Namen aus, oder? Denn da kommt ein Text aus den man nicht entziffern kann, und die Zahl ist immer 0 ._.


  • new tmp[32];
    mysql_query("SELECT * FROM `Lager`");
    while(mysql_retrieve_row()) {
    mysql_get_field("Name",LSFlughafenFracht[lIDX]);
    mysql_get_field("Anzahl",tmp);
    LSAnzahlFracht[lIDX] = strval(tmp);
    }
    lIDX++;
    new string[256];
    format(string, sizeof string,"%s ls fracht %d",LSFlughafenFracht,LSAnzahlFracht);
    print(string);
    return 1;
    }


    Edit: Ich hab da jetzt schon die ganzen Sachen ewig umgeändert und ausprobiert q.q

  • Okay das hab ich dann, aber da kommt trotzdem noch eine 0 raus, woran liegt das?
    ID ist in der Datenbank so wie du es gesagt hast eingestellt.
    Name ist varchar.
    Anzahl ist ein Integer.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen