MYSQL Übersichtlicher Speichern!

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
  • Hallo ich bin es nochmal eine frage habe ich nochmal zum Thema Mysql speicherung



    Ich finde das ganze sieht so etwas Unübersichtlich aus



    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new query[3072];
    format(query, sizeof(query), "UPDATE users SET Alter='%i',Personalausweis='%i',Spawnchange='%i',Geld='%i',Admin='%i',Skin='%i',Hunger='%i',Toilette='%i',Fraktionsrang='%i',Leader='%i',Member='%i',Arbeit='%i',Navigation='%i',Premium='%i',Handynummer='%i',Fraktion='%i',Registration='%i',BankKonto='%i',BankGeld='%i',BankRauben='%i',Level='%i',Respektpunkte='%i',MinutesSinceAn='%i',PlayMinutes='%i',Warnungen='%i',Points='%i',Gesamtspielzeit='%i',Tode='%i', WHERE id='%i'",
    pInfo[playerid][pAlter],pInfo[playerid][pPerso],pInfo[playerid],GetPlayerMoney(playerid),pInfo[playerid][pAdmin],pInfo[playerid][pSkin],pInfo[playerid][pHunger],pInfo[playerid][pHarndrang],pInfo[playerid][pRank],pInfo[playerid][pLeader],pInfo[playerid][pMember],pInfo[playerid][pJob],pInfo[playerid][pNavi],pInfo[playerid][pPremium],
    pInfo[playerid][pHandynummer],pInfo[playerid][pFraktion],pInfo[playerid][pReg],pInfo[playerid][pBankKonto],pInfo[playerid][pBankGeld],pInfo[playerid][pBankRauben],pInfo[playerid][pLevel],pInfo[playerid][pExp],pInfo[playerid][pMinutesSinceAn],pInfo[playerid][pPlayMinutes],pInfo[playerid][pWarn],pInfo[playerid][pLoGPoints],pInfo[playerid][pGesamtspielzeit],
    pInfo[playerid][pTode],pInfo[playerid][pGameIntro],pInfo[playerid][pDB]);
    mysql_function_query(dbhandle, query, false, "", "");
    format(query, sizeof(query), "UPDATE users SET Wantedpunkte='%i',carlicense='%i',carlicensepoints='%i',bikelicense='%i',bikelicensepoints='%i',trucklicense='%i',trucklicensepoints='%i',planelicense='%i',planelicensepoints='%i',helilicense='%i',helilicensepoints='%i',bootlicense='%i',bootlicensepoints='%i',jailstate='%i',jailtimemin='%i',jailtimesek='%i',Hotel='%i',CarRepairPacks='%i',HandyGeld='%i',HandyVer='%i',Handymodel='%i',PhoneBook='%i' WHERE id='%i'",
    pInfo[playerid][pWantedpunkte],pInfo[playerid][pcarlicense],pInfo[playerid][pcarlicensepoints],pInfo[playerid][pbikelicense],pInfo[playerid][pbikelicensepoints],pInfo[playerid][ptrucklicense],pInfo[playerid][ptrucklicensepoints],pInfo[playerid][pplanelicense],pInfo[playerid][pplanelicensepoints],pInfo[playerid][phelilicense],pInfo[playerid][phelilicensepoints],pInfo[playerid][pbootlicense],
    pInfo[playerid][pbootlicensepoints],pInfo[playerid][pjailstate],pInfo[playerid][pjailtimemin],pInfo[playerid][pjailtimesek],pInfo[playerid][pHotel],pInfo[playerid][pCarRepairPacks],pInfo[playerid][pHandyGeld],pInfo[playerid][pHandyVer],pInfo[playerid][pHandyID],pInfo[playerid][pHandyID],pInfo[playerid][pDB]);
    mysql_function_query(dbhandle, query, false, "", "");
    }
    return 1;
    }



    Und wollte fragen wie man das ganze Übersichtlicher machen könnte wie zb bei DINI so


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new Spielerdatei[64];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Spielerdatei,sizeof(Spielerdatei),"/SpielerAccount/%s.txt",name);
    dini_IntSet(Spielerdatei,"Alter", pInfo[playerid][pAlter]);
    dini_IntSet(Spielerdatei,"Spawnpunkt", pInfo[playerid][Spawnchange]);
    dini_IntSet(Spielerdatei,"Adminrang", pInfo[playerid][pAdmin]);
    dini_IntSet(Spielerdatei,"Level", pInfo[playerid][pLevel]);
    dini_IntSet(Spielerdatei, "Aussehen", pInfo[playerid][pSkin]);
    }
    return 1;
    }

  • ja geht hier so sieht es z.b bei mir aus



    mysql_SetInt("accounts", "Level", GetPlayerScore(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Geld", GetPlayerMoney(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Skin", GetPlayerSkin(playerid), "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Sex", SpielerInfo[playerid][Sex], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Exp", SpielerInfo[playerid][Exp], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Krank", SpielerInfo[playerid][Krank],"Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "SexM", SpielerInfo[playerid][SexM], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "SexW", SpielerInfo[playerid][SexW], "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Leader", SpielerInfo[playerid][Leader], "Name", SpielerInfo[playerid][pName]);

    Grüße,


    Kaffeepause.

    Wenn das Leben dir eine Zitrone gibt, frag nach Salz und Tequila!

  • mysql_SetInt



    Ja so habe ich es ja auch gemacht da ich mir mal n Tut dazu angeschaut habe problem bekomme immer diesen Fehler



    SQL
    C:\Users\Heike\Desktop\Life of German\gamemodes\LoGMYSQL.pwn(18907) : error 017: undefined symbol "mysql_SetInt"
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    1 Error.
  • Lass es so, sonst musst du es resourcenfressender machen...


    mfg :thumbup:



    Ja Problem ist Das er eben nix Speichert :o


    Ich habe getestet Wenn ich mich in der Datenbank zb als leader mache mich einlogge bin ich Leader der Fraktion


    Wenn ich mich in Game Leader mache mich auslogge und nachschaue ist alles auf 0 das einzige was er speichert ist das Admin level Darum wollte ich das anders machen
    da der fehler wohl warscheinlich an den Speichern liegt!

  • Probier mal mein System aus, das sollte einfacher und übersichtlicher sein :)


    Es ist zwar ressourcenfressender logischerweise, allerdings macht es bei 10.000 Aufrufen nur ca 50ms Unterschied :)


    //Edit: Bei 100 aufrufen, liegt der unterschied nur bei 1ms :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

    Einmal editiert, zuletzt von Kaliber ()

  • Und wollte fragen wie man das ganze Übersichtlicher machen könnte wie zb bei DINI so


    Dein Query an sich wird nicht funktionieren, da du "Alter" im Query hast (was ein SQL Befehl ist), es aber ohne Anfürungszeichen geschrieben hast.

    SQL
    Alter


    zu:

    SQL
    `Alter`


    Ebenso fehlt hier etwas:
    pInfo[playerid][pAlter],pInfo[playerid][pPerso],pInfo[playerid],GetPlayerMoney(playerid),
    ^^^

    Zu deiner Frage wie man es übersichtlich schreiben kann:


    Ich finde diese Methode sehr übersichtlich. Das liegt wahrscheinlich auch daran, dass ich mich durch meine Arbeit mit SAP daran gewöhnt habe. Die Leerzeichen im Query sind bei PAWN eben etwas unschön im Query drin.
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new query[256];
    format(query, sizeof(query), "UPDATE users SET ");
    format(query, sizeof(query), "%s `Alter` = '%i', ", query, pInfo[playerid][pAlter] );
    format(query, sizeof(query), "%s Personalausweis = '%i', ", query, pInfo[playerid][pPerso] );
    format(query, sizeof(query), "%s Spawnchange = '%i' ", query, pInfo[playerid][pSpawnchange] );
    format(query, sizeof(query), "%s WHERE id = '%i' ", query, pInfo[playerid][pDB] );
    mysql_function_query(dbhandle, query, false, "", "");
    }
    return 1;
    }


    Alternativ bietet sich das hier an:
    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"loggedin")==1)
    {
    new query[256];
    format(query, sizeof(query), "UPDATE users SET ");
    format(query, sizeof(query), "%s`Alter`='%i',", query, pInfo[playerid][pAlter] );
    format(query, sizeof(query), "%sPersonalausweis='%i',", query, pInfo[playerid][pPerso] );
    format(query, sizeof(query), "%sSpawnchange='%i' ", query, pInfo[playerid][pSpawnchange] );
    format(query, sizeof(query), "%sWHERE id='%i'", query, pInfo[playerid][pDB] );
    mysql_function_query(dbhandle, query, false, "", "");
    }
    return 1;
    }