[MySQL] VIELE Daten Auslesen und Einschreiben

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
  • Hey Ich Bin im Thema MySQL noch recht neu und hab da ma paar Fragen:


    1. Ich habe ca 140 PlayerVariablen (Poition,Scheine, etc.) und da der compiler nach einer bestimmten länge ja mäckert hatte ich es anders Versucht:



    new query1[32], query2[32], query3[32],...........


    format(query1, sizeof(query1), "UPDATE nsar_main SET Alter=%d WHERE Name='%s'", PlayerInfo[playerid][pAlter],pname);
    mysql_query(query1);


    format(query2, sizeof(query2), "UPDATE nsar_main SET Geschlecht=%d WHERE Name='%s'", PlayerInfo[playerid][pGeschlecht],pname);
    mysql_query(query2);


    format(query3, sizeof(query3), "UPDATE nsar_main SET Skin=%d WHERE Name='%s'", PlayerInfo[playerid][pSkin],pname);
    mysql_query(query3);


    format(query4, sizeof(query4), "UPDATE nsar_main SET Level=%d WHERE Name='%s'", PlayerInfo[playerid][pLevel],pname);
    mysql_query(query4);


    Das ist nu nur ein kleiner Ausschnitt
    Jedoch weiß ich nicht ganz wie die bessere Lösung ist Vernünftig die Sachen zu Speichern.
    Falls jemand da was einfacheres weiß kann er mir gerne bescheid geben :D
    Jedoch bitte nicht einfach nur alter=%d, Geschlecht=%d
    Weil ich ja wie gesagt sehr viele Varbiablen habe...
    Es sei denn derjenige kann mir ordentlich sagen wie ich einen einfachen Zeilenumbruch dort einbaue.




    2. die gleiche Geschichte muss ja auch Ausgelesen werden...


    new query[300], pname[24], savingstring[20];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "SELECT scoretedtimes, jailedtimes, frozentimes, banned, bannedby, logins, posx, posy, posz, posa FROM playerdata WHERE user = '%s'", pname);
    mysql_query(query);
    mysql_store_result();
    while(mysql_fetch_row_format(query,"|"))
    {
    mysql_fetch_field_row(savingstring, "score"); SetPlayerScore(playerid, strval(savingstring));
    mysql_fetch_field_row(savingstring, "money"); MoneyGiven[playerid] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "level"); PlayerInfo[playerid][pLevel] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "vip"); PlayerInfo[playerid][pVIP] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "Tutorial"); PlayerInfo[playerid][pTutorial] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "rank"); PlayerInfo[playerid][pRank] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "kills"); PlayerInfo[playerid][pKills] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "deaths"); PlayerInfo[playerid][pDeaths] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "muted"); PlayerInfo[playerid][pMuted] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "jailed"); PlayerInfo[playerid][pJailed] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "frozen"); PlayerInfo[playerid][pFrozen] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "mutedtimes"); PlayerInfo[playerid][pMutedTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "jailedtimes"); PlayerInfo[playerid][pJailedTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "frozentimes"); PlayerInfo[playerid][pFrozenTimes] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "banned"); PlayerInfo[playerid][pBanned] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "bannedby"); PlayerInfo[playerid][pBannedBy] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "logins"); PlayerInfo[playerid][pLogins] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posx"); PlayerInfo[playerid][pPosX] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posy"); PlayerInfo[playerid][pPosY] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posz"); PlayerInfo[playerid][pPosZ] = strval(savingstring);
    mysql_fetch_field_row(savingstring, "posa"); PlayerInfo[playerid][pPosA] = strval(savingstring);
    }


    So war es als ich nur ein Paar variablen hatte.. Jedoch ist hier ja das gleiche thema das ich oben das SELECT nicht mit 140 variablen in die länge ziehen kann
    Auser jemand hat auch für hier einen Zeilen umbruch


    3. mysql_query("ALTER TABLE `"#NSAR"_Main` ADD `Ehepartner` var(24) DEFAULT NULL");
    Muss Var hier String heißen damit dort Text gespeichert wird?


    Das war es erstmal :D ich danke schonmal im vorraus

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • Könntest du mir ein Beispiel damit machen ich Verstehe das Beispiel von wiki nicht


    Tabelle nsar_main
    Kannst du das zusammen fügen für 2 von den strcat der eine für level und skin der andere alter und geschlecht?
    Also brauche es halt 1. als Save und einmal zum laden

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • Du könntest dir auch ne Funktion basteln die jeweils eine Variable ausliest.
    Dann damit halt jenachdem Namen ändern und laden lassen.
    Ich hoffe du weißt was ich mein.


    Meinst du damit nicht genau das hier:


    new query1[32]


    format(query1, sizeof(query1), "UPDATE nsar_main SET Alter=%d WHERE Name='%s'", PlayerInfo[playerid][pAlter],pname);
    mysql_query(query1);



    und dann halt mit query2 die nächste variable..
    aber gibt es das nicht auch noch kürzer? weil wenn man knapp 140 variablen hat
    ist das ne ganze menge ^^

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • @VeryNice
    ich würde es bsp bei disconnect mit save machen
    saveplayer(playerid);
    und dann als stock saveplayer(playerid)


    aber das problem ist halt das alles im stock zu schreiben


    könnte mir iwer nen beispiel mit meinen sachen geben?
    glaube brauche sowas vor mir xD


    halt 1. im stock für load
    2. im stock für save


    123marvin123
    Habe ehrlich gesagt keine ahnung wie ich das strcat einbaue bzw benutze


    new string[40] = "Level=%d,Alter=%d";
    strcat(string, " Level=%d,Alter=%d!");


    format(query1, sizeof(query1), "UPDATE nsar_main SET string, string2'", string3,pname);
    mysql_query(query1);



    soll ich das dannn so zusammen fügen oder was

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • Es gibt Zwei arten einmal mit strcat und einmal so:


    format(query3, sizeof(query3), "UPDATE nsar_main SET Skin=%d, Level=%d, Geschlecht=%d, Alter=%d WHERE Name='%s'",PlayerInfo[playerid][pLevel], PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pGeschlecht], PlayerInfo[playerid][pAlter], pname);
    mysql_query(query3);

    Bei strcat musst du aber vorher format benutzen da du mit strcat nur Texte zusammenführen kannst.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich hätte es so gemacht, dass du in dem "stock" noch einen aufrufst, der Universal ist.
    Also so wie ich es oben geschrieben habe, nur mit jeweils anderen Daten.
    Bin leider am handy on sonst würde ichs dir zeigen.

  • Also du meinst wenn ich das so mache



    new query[32], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "UPDATE nsar_main SET Tutorial=%d, WHERE Name='%s'", PlayerInfo[playerid][pTutorial],pname);
    mysql_query(query);


    und wir uns vorstellen der wäre voll



    new query[32], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "UPDATE nsar_main SET eintrag1=%d,eintrag2=%d,eintrag3=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag1]PlayerInfo[playerid][peintrag2]PlayerInfo[playerid][peintrag3],pname);
    mysql_query(query);


    format(query, sizeof(query), "UPDATE nsar_main SET eintrag4=%d,eintrag5=%d,eintrag6=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag4]PlayerInfo[playerid][peintrag5]PlayerInfo[playerid][peintrag6],pname);
    mysql_query(query);


    das ich den einfach so fortsetze?

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

  • Hat keiner ne lösung fürs laden?
    brauche eig nur info wie ich das am besten mache das es möglichst wenig zu schrieben ist und keine 1000 zeilen.
    Will endlich das Script weitermachen nur hacke an dem kack xD
    Bitte um schnelle hilfe :|



    //edit
    Bluescreen
    Ich will ja gar nicht mal den gleichen string benutzen ich brauche ja scheinbar noch einen oders so?
    halt ich kann meine 100 variablen nicht einfach in die zeile hauen
    also muss ich ja bsp. 20 zeilen in sting1 20 in string2 und so weiter aber wie sieht das vom code her aus

    Entspurt!!!
    Ihr dürft euch noch für die Closed Beta eintragen!!!
    Es wird der Hamma, einige User freuen sich bereits!!!


    http://www.another-day.de

    Einmal editiert, zuletzt von Evil_Eye ()

  • Dein Beispiel war richtig den wenn du den ersten String benutzt hast kannst du ja den gleichen neu Formatieren das ist kein Problem da Pawn alles nacheinander abarbeitet und nicht gleichzeitig. Bloß solltest du den String größer machen.


    new query[240], pname[24];
    GetPlayerName(playerid, pname, 24);
    format(query, sizeof(query), "UPDATE nsar_main SET eintrag1=%d,eintrag2=%d,eintrag3=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag1]PlayerInfo[playerid][peintrag2]PlayerInfo[playerid][peintrag3],pname);
    mysql_query(query);


    format(query, sizeof(query), "UPDATE nsar_main SET eintrag4=%d,eintrag5=%d,eintrag6=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag4]PlayerInfo[playerid][peintrag5]PlayerInfo[playerid][peintrag6],pname);
    mysql_query(query);


    format(query, sizeof(query), "UPDATE nsar_main SET eintrag7=%d,eintrag8=%d,eintrag9=%d, WHERE Name='%s'", PlayerInfo[playerid][peintrag4]PlayerInfo[playerid][peintrag5]PlayerInfo[playerid][peintrag6],pname);
    mysql_query(query);
    Sonst ist alles richtig und es müsste funktionieren so wie du es in deinem Beispiel gezeigt hast.
    Einfach fortsetzen wie ich es gemacht habe falls es Probleme gibt melde dich einfach nochmal.