R34 DB 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
  • new query[128];
    format(query,128,"SELECT wasduauslesenmöchtest FROM tabellenname WHERE Name='%s'",Name(playerid));
    mysql_tquery(handle,query,"callbacknamen","d",playerid);


    public callbacknamen(playerid)
    {
    new row,field;
    cache_get_data(row,field,handle);
    if(row == 1)/* wasduauslesenmöchtest wurde gefunden */
    else if(row==0)/* wasduauslesenmöchtest wurde nicht gefunden */
    return 1;
    }
    So.
    Ich hoffe du kannst damit was anfangen, wenn nicht, dann schreib es noch einmal ;)

  • new query[128];
    format(query,128,"SELECT wasduauslesenmöchtest FROM tabellenname WHERE Name='%s'",Name(playerid));
    mysql_tquery(handle,query,"callbacknamen","d",playerid);


    public callbacknamen(playerid)
    {
    new row,field,string[128];
    cache_get_data(row,field,handle);
    if(row == 1)cache_get_field_content(0,"wasduauslesenmöchtest",string,handle);
    else if(row==0)/* wasduauslesenmöchtest wurde nicht gefunden */
    return 1;
    }


    So ;)

  • Ja, du kannst ja nicht alles in einen speichern, da das sonst alles überschrieben wird.
    Wenn du Strings vom Account laden möchtest, dann kannst du das auch einfach alles in einem Enum packen ;)
    Zum Beispiel so:
    enum eSpieler{
    Geschlecht[20]
    };
    new Spieler[MAX_PLAYERS][eSpieler];


    new query[128];
    format(query,128,"SELECT wasduauslesenmöchtest FROM tabellenname WHERE Name='%s'",Name(playerid));
    mysql_tquery(handle,query,"callbacknamen","d",playerid);


    public callbacknamen(playerid)
    {
    new row,field,string[128];
    cache_get_data(row,field,handle);
    if(row == 1)cache_get-field_content(0,"Geschlecht",Spieler[playerid][Geschlecht],handle);
    else if(row==0)/* wasduauslesenmöchtest wurde nicht gefunden */
    return 1;
    }


  • So richtig funktioniert es nicht :D
    Also er liest nur den SpielerNamen den Rest nicht..



    public LoadPlayerBan(playerid)
    {
    new row,field,str[264];
    cache_get_data(row,field,mycon);
    if(row == 1)
    {
    cache_get_field_content(0,"Admin",bUser[playerid][bAdmin],mycon);
    cache_get_field_content(0,"Grund",bUser[playerid][bGrund],mycon);
    cache_get_field_content(0,"Datum",bUser[playerid][bDatum],mycon);
    cache_get_field_content(0,"Uhrzeit",bUser[playerid][bUhrzeit],mycon);
    format(str,sizeof(str),"Dieser Account ist gebannt\n\nName: %s\nAdmin: %s\nGrund: %s\nDatun: %s\nUhrzeit: %s\n\n Falls ein Fehler aufliegt, schreibe einen Entbann Antrag im Forum!",User[playerid][Username],bUser[playerid][bAdmin],bUser[playerid][bGrund],bUser[playerid][bDatum],bUser[playerid][bUhrzeit]);
    ShowPlayerDialog(playerid,Dialog_Ban,DIALOG_STYLE_MSGBOX,"Spieler gebannt",str,"Schliessen","");
    Kick(playerid);
    }else if(row == 0)
    {

    }
    return 1;
    }

  • Ist Admin ein Strings (Varchar) oder ein Int? :whistling:


    Integers musst du so auslesen:
    Spieler[playerid][Admin]=cache_get_field_content_int(0,"Admin",handle);
    Als Beispiel

  • Falls das nicht klappt, dann mach das so:
    format(Spieler[playerid][Admin],sizeof(Spieler[playerid][Admin],"%s",cache_get_field_content(0,"Admin",Spieler[playerid][Admin],handle);


    Ist glaub ich nicht so gut, aber vielleicht bringt das ja was.

  • Hier nochmal OnplayerConnect

    public OnPlayerConnect(playerid)
    {
    new query[60 + MAX_PLAYER_NAME],query2[128];
    GetPlayerName(playerid,User[playerid][Username],MAX_PLAYER_NAME);
    mysql_format(mycon, query, sizeof(query), "SELECT COUNT(*) AS `count` FROM `User` WHERE `Name` = '%e'",User[playerid][Username]);
    mysql_function_query(mycon, query, true, "LoadPlayerDataSequence","dd",playerid,1);
    mysql_format(mycon,query2, sizeof(query2), "SELECT * FROM `Bannedplayer` WHERE `Name` = '%e'",User[playerid][Username]);
    mysql_function_query(mycon, query2, true, "LoadPlayerBan","dd",playerid,1);
    return 1;
    }


    Pawn:
    Leider nein nur Errors :D

  • Falls das nicht klappt, dann mach das so:
    format(Spieler[playerid][Admin],sizeof(Spieler[playerid][Admin],"%s",cache_get_field_content(0,"Admin",Spieler[playerid][Admin],handle);


    Ist glaub ich nicht so gut, aber vielleicht bringt das ja was.


    Zeig mal deinen Enum :)


    enum UserBanData
    {
    bAdmin[34],
    bGrund[34],
    bDatum[11],
    bUhrzeit[11]


    new bUser[MAX_PLAYERS][UserBanData];
    }

  • Wie steht es denn in der Datenbank? Also sind da die Werte eingetragen? :huh:

  • So wird das ganze auch nie funktionieren


    cache_get_field_content(0,"Admin",bUser[playerid][bAdmin],mycon);
    cache_get_field_content(0,"Grund",bUser[playerid][bGrund],mycon);
    cache_get_field_content(0,"Datum",bUser[playerid][bDatum],mycon);
    cache_get_field_content(0,"Uhrzeit",bUser[playerid][bUhrzeit],mycon);


    Der Grund ist , die länge der strings ist optional und wird durch sizeof festgelegt, dass ganze funktioniert jedoch nicht so in verbindung bei einem array mit einem enum.
    Deshalb musst du die länge optional angeben, das sieht dann so aus:
    Syntax
    cache_get_field_content(row, const field_name[], destination[], connectionHandle = 1, max_len = sizeof(destination));


    cache_get_field_content(0,"Admin",bUser[playerid][bAdmin],mycon,34);