MySQL speichert Daten nicht!

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 Tag, ich versuche mich schon seit ner weile an einem Skin/Sex System, und bin schon ganz enttäuscht...
    Ich versuche mit MySQL das Geschlecht und den Skin zu speichern, welches jedoch nicht recht funktionieren will, denn der Wert inner Tabelle bleibt bei 0 und wechselt nicht zu 1 oder 2 geschweige denn zur modelid. Ich habe bei saveplayer mal alles printen lassen was relevant ist:
    [18:30:19] [join] Klaus_Schmidt has joined the server (0:127.0.0.1)
    [18:30:30] Skin:22,Sex:1,Level:0,Geld:0,Kills:0,Tode:0
    [18:30:30] [part] Klaus_Schmidt has left the server (0:1)
    So speichere ich die Daten:
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    mysql_SetInt("accounts", "Skin", SpielerInfo[playerid][pSkin], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Sex", SpielerInfo[playerid][pSex], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Kills", SpielerInfo[playerid][pKills], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Tode", SpielerInfo[playerid][pTode], "Name", SpielerInfo[playerid][pName]);
    mysql_SetFloat("accounts", "Health", SpielerInfo[playerid][pHealth], "Name", SpielerInfo[playerid][pName]);
    new str[200];
    format(str, 256, "Skin:%i,Sex:%i,Level:%i,Geld:%i,Kills:%i,Tode:%i",SpielerInfo[playerid][pSkin],SpielerInfo[playerid][pSex],SpielerInfo[playerid][pLevel],GetPlayerMoney(playerid),SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode]);
    print(str);
    }
    }
    return 1;
    }
    So erstelle ich den Table, fals er noch nicht vorhanden ist:
    mysql_query("CREATE TABLE `accounts` (`id` INT(11) NOT NULL AUTO_INCREMENT,`Name` VARCHAR(24) NOT NULL,`Passwort` VARCHAR(128) NOT NULL,`Level` INT(11) NOT NULL DEFAULT '1',`Geld` INT(11) NOT NULL DEFAULT '0',`Sex` INT(11) NOT NULL DEFAULT '0',`Skin` INT(11) NOT NULL DEFAULT '0',`Kills` INT(11) NOT NULL DEFAULT '0',`Tode` INT(11) NOT NULL DEFAULT '0',`Health` FLOAT NOT NULL DEFAULT '100',PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=latin1;");
    Und so übergebe ich die Daten vom Dialog an enum:
    SpielerInfo[playerid][pSkin] = modelid;

  • Beitrag von lukas72 ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • modelid kommt von hier:
    public OnPlayerModelSelection(playerid, response, listid, modelid)
    {
    if(listid == skinlist1)
    {
    if(response)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Skin ausgewählt.");
    SetPlayerSkin(playerid, modelid);
    SpielerInfo[playerid][pSkin] = modelid;
    }
    else{ SendClientMessage(playerid, 0xFF0000FF, "Skinauswahl abgebrochen\n du erhälst den Standartskin."); SpielerInfo[playerid][pSkin] = 0;}
    return 1;
    }
    if(listid == skinlist2)
    {
    if(response)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Skin ausgewählt.");
    SetPlayerSkin(playerid, modelid);
    SpielerInfo[playerid][pSkin] = modelid;
    }
    else {SendClientMessage(playerid, 0xFF0000FF, "Skinauswahl abgebrochen\n du erhälst den Standartskin.");SpielerInfo[playerid][pSkin] = 9;}
    return 1;
    }
    return 1;
    }

  • Beitrag von SAB0h ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ja, mach das doch so:


    new query[größe];
    format(query,sizeof(query),"UPDATE `tabelle` SET `Skin`='%d', `Sex`='%d', ... WHERE `Name`='%s'",Werte);
    mysql_query(query);


    Das ist besser als das was du da gerade machst, für jeden Wert einen neuen Query.

  • Ich schreibe es gerade um, wie du gesagt hast.... ich probiere es einfach mal....
    Mal sehen obs dann klappt, denn wenn er die Tneger dann nicht speichert, dann muss es am jeweiligen stock liegen...
    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Skin` = '%d',`Level` = '%d',`Sex` = '%d',`Geld` = '%d',`Kills` = '%d',`Tode` = '%d',`Health` = '%f' WHERE `Name` = '%s'",
    GetPlayerSkin(playerid),SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pSex],GetPlayerMoney(playerid),SpielerInfo[playerid][pKills],SpielerInfo[playerid][pTode],SpielerInfo[playerid][pHealth],GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME));
    mysql_query(query);
    }
    }
    return 1;
    }
    Er speichert immernoch nicht die Integer bzw. Skin und Geschlecht, das Geschlecht wird beim printen noch angezeigt, jedoch wird dort schon der Skin als 0 dargestellt....
    [21:07:18] Skin:0,Sex:0,Level:0,Geld:98,Kills:0,Tode:0 //Der normale Print
    [21:07:18] UPDATE `accounts` SET `Skin` = '0',`Level` = '0',`Sex` = '0',`Geld` = '98',`Kills` = '0',`Tode` = '0',`Health` = '0.000000' WHERE `Name` = '
    b' //Query Print
    Auch die ehemalig 100$ die ich durch kaufen von Drinks auf 98$ gesenkt habe stehen nicht in der Tabelle, es ist alles wie vorher.....

  • also so habe ich es beim speichern....
    saveplayer(playerid)
    {
    if(sInfo[playerid][eingeloggt]==0) return 1;
    //Speichern level,money,(alevel)
    new query[128];
    sInfo[playerid][geld] = GetPlayerMoney(playerid);
    format(query,sizeof(query),"UPDATE Benutzer SET LEVEL='%i', GELD='%i',ALEVEL=%i WHERE DB_ID='%i' ",sInfo[playerid][level],sInfo[playerid][geld],sInfo[playerid][alevel],sInfo[playerid][db_id]);
    mysql_function_query(dbhandle,query,false,"","");

    return 1;
    }


    abgesehen das bei dir andere sachen stehen



    viel Glück

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