[MYSQL/SSCANF] Splittproblem

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 habe ein Problem, ich bin nachdem ich es nun Splitte kein Admin/Leader oder so mehr, Nichtmal das Passwort wird richtig Geprintet Da steht nichts,habe
    2-4 Testpersonen Bei denen Es auch so Ist:



    forward LoadAccount(playerid);
    public LoadAccount(playerid)
    {
    new Query[812];
    mysql_query("SELECT * FROM `accounts` WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);//Läd alles aus der Zeile des Spielers (in dem fall ich) aus der Tabelle 'Accounts'
    mysql_store_result();
    while(mysql_fetch_row(Query))
    {
    sscanf(Query,"e<p<|>{i}s[32]s[24]iiiiiiis[34]iiiiiiiiiiiiiiiiii>",PlayerInfo[playerid]);
    }
    mysql_free_result();
    printf("Spieler %s Ist Connectet MYSQL Tabellen Name | %s |",SpielerName(playerid),PlayerInfo[playerid][pName]);
    printf("Passwort Des Spielers: %s",PlayerInfo[playerid][pPasswort]);

    }


    Das Enum:



    enum playerdaten
    {
    pName[MAX_PLAYER_NAME],
    pPasswort[24],
    pGeld,
    pNummer,
    pAdmin,
    pMember,
    pRank,
    pLeader,
    pBan,
    pBanInfo[34],
    pHaus,
    pJob,
    pPerso,
    pPayDay,
    pRespekt,
    pLevel,
    pWanted,
    pAutoschein,
    pMotorradschein,
    pLKWSchein,
    pFlugschein,
    pWaffenschein,
    pSpawn,
    pSkin,
    pTimeBan,
    pHandy,
    pHandVertrag,
    pHandyGuthaben
    }
    new PlayerInfo[MAX_PLAYERS][playerdaten];


    Geprintete Version/Log:


    Das ist jetzt vom Server-Owner:

    Code
    [10:37:37] Incoming connection: ******************
    [10:37:38] [join] GameMaster has joined the server (**************)
    [10:37:45] Spieler GameMaster Ist Connectet  MYSQL Tabellen Name | GameMaster |
    [10:37:45] Passwort Des Spielers:


    z.B Passwort wird garnichts Geprintet nur der Name wird richtig Geprintet...


    Hoffe jemand mit mehr Mysql Erfahrung kann mir Helfen


    MFG Arendium


    Bei Fragen Könnt ihr Hier im Thread schreiben


    Notfall Kontakt:


    Spoiler anzeigen
    PN an das Profil GameMaster hier im Forum



    Ich bedanke mich schonmal für Alle Hilfen !!!

  • Ich teste es momentan auf dem Linux Server des Projektleiters Bei meinen eigenen Fraktion autohaus mit enums klappt es auch...


    //Goldkiller: Ich hab den rest meines Posts nicht aus Spaß geschrieben,ließ ihn


    //edit werde es gleich machen ;) wir wechseln gerade zu samp4you keine ahnung warum aber muss erst mal das machen ;)



    //edit 2 Goldkiller: wenn ich es printen lasse zeigt es nichts an in den logs

    76ul4ppd4lmb.png

    3 Mal editiert, zuletzt von Mr.Soap ()

  • Was sagt dir das denn ?
    Genau,das hier ist nicht wahr.
    while(mysql_fetch_row(Query))
    {
    sscanf(Query,"e<p<|>{i}s[32]s[24]iiiiiiis[34]iiiiiiiiiiiiiiiiii>",PlayerInfo[playerid]);
    }
    Wieso es nicht wahr ist,musst du zurück verfolgen.


    Zitat

    mysql_query("SELECT * FROM `accounts` WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);//Läd alles aus der Zeile des Spielers (in dem fall ich) aus der Tabelle 'Accounts'


    Du musst auch das Query vorher formatieren.mysql_query kann nicht das,was format kann.

  • Ca. so ?



    new Query[812];
    format(Query,sizeof(Query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);//Läd alles aus der Zeile des Spielers (in dem fall ich) aus der Tabelle 'Accounts'
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row(Query))
    {
    sscanf(Query,"e<p<|>{i}s[32]s[24]iiiiiiis[34]iiiiiiiiiiiiiiiiii>",PlayerInfo[playerid]);
    printf("Query: %s",Query);
    }
    mysql_free_result();
    printf("Spieler %s Ist Connectet MYSQL Tabellen Name | %s |",SpielerName(playerid),PlayerInfo[playerid][pName]);
    printf("Passwort Des Spielers: %s",PlayerInfo[playerid][pPasswort]);

  • Du hast dein sscanf code falsch gestellt
    goldkiller hat es ja schon geschrieben


    p<|>e< >


    sscanf ist segen und fluch zu gleich wenn du ein kleinen fehler machst gibt er dir entweder nix aus oder alles Falsch.


    Soweit ich weiß benutzt du doch das Plugin von strickenkid daher solltest du wei oben genannt dies ändern
    while(mysql_fetch_row(Query),"|")
    damit bestimmst du die trennsymbole , jedoch weiß ich leider nicht was er nimmt wenn man das weg lässt also was er als voreinstellung nimmt
    Beispiel:
    10|10 wenn es ein , wäre war es laut der beschreibung dann so 10,10
    http://wiki.sa-mp.com/wiki/MySQL_Plugin#mysql_fetch_row

  • Habe es nun so

    new Query[812];
    format(Query,sizeof(Query),"SELECT * FROM `accounts` WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);//Läd alles aus der Zeile des Spielers (in dem fall ich) aus der Tabelle 'Accounts'
    mysql_query(Query);
    mysql_store_result();
    while(mysql_fetch_row_format(Query))
    {
    sscanf(Query,"p<|>e<{i}s[32]s[24]iiiiiiis[34]iiiiiiiiiiiiiiiiii>",PlayerInfo[playerid]);
    printf("Query: %s",Query);
    }
    mysql_free_result();
    printf("Spieler %s Ist Connectet MYSQL Tabellen Name | %s |",SpielerName(playerid),PlayerInfo[playerid][pName]);
    printf("Passwort Des Spielers: %s",PlayerInfo[playerid][pPasswort]);


    //Edit Klappt! Danke was ist an _format dan noch anders ? klappt mit und ohne bei mir habe R6

    76ul4ppd4lmb.png

    Einmal editiert, zuletzt von Mr.Soap ()

  • Mal eine ganz andere Frage wieso benutzt du eine variabel in der kein wert gespeichert wird . Hat oder besitzt deine Datenbank eine Auto_increment Spalte die am Anfang kommt oder wie ?


    und zu deiner Frage was meinst du mit dem format ?

  • Wenn man sich den wiki eintrag ansieht vllt hääte ich auch besser lesen sollen also grundsätzlich ist


    der Syntax anders.


    http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_row_format


    mysql_fetch_row_format (string[], const delimiter[], connectionHandle)



    mysql_fetch_row(string[])


    du hast die möglichkeit die voreinstellung zu ändern also das Trennzeichen ( const delimiter ) in zum beispiel , oder . etc...
    und ich hab den Text überlesen


    Zitat

    This function has a macro: mysql_fetch_row(string[]); default delimeter is used for macro.