MySQL Tabellen Abfrage bitte um Hilfe

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 eine Tabelle in meiner MySQL Datenbank erstellt wo die Spieler per /report einen Vorschlag senden bzw einschicken oder wie auch immer können :D das funktioniert einwandfrei, so nun zu meinen Problem ich bin neu im Bereich MySQL und weiß daher nicht ganz so genau wie
    ich das hin bekomme das ich z.B. per /vabrufen die Vorschläge InGame abrufen kann so dass es mir eine Liste im Chat anzeigt mit den Vorschlägen die ein gesendet wurden.
    z.B. im Chat soll es so aussehen ( Max_Musstermann: Der BSN könnte etwas verschönert werden. )
    Ich habe mich da mal ein bisschen rumprobiert und das ist dabei raus gekommen:


    COMMAND:vabrufen(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(!isPlayerAnAdmin(playerid,7))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");
    {
    new text[256];
    new query[128];

    //oder vielleicht so in der art ?format(query,sizeof(query), "SELECT `Writer`, `Text` FROM `db_vorschlaege` WHERE `Writer`,`Text` = '%s', '%s'",Spieler[playerid][pName],text)
    format(query,sizeof(query), "SELECT * FROM `db_vorschlaege` WHERE `Writer`,`Text` = '%s', '%s'", Spieler[playerid][pName],text);
    mysql_query(query);
    mysql_store_result();

    format(query,sizeof(query),"%s: %s",Spieler[playerid][pName],text);
    SendClientMessage(BLAU,Spieler[playerid][pName],text);

    }
    return 1;
    }
    das ist wahrscheinlich völlig verkehrt wenn sich das ein Profi anschaut aber ich habe es versucht :thumbup:


    Hier noch ein Screenshot von der erstellten Tabelle:



    Danke im vorraus für jede Hilfreiche Antwort! ^^

  • Willst du dir nur den Vorschlag von einem Spieler anzeigen lassen?


    Oder alle Vorschläge ?
    Wenn ja dann kannst du eigentlich das WHERE Writer... weglassen

    Ich habe den Befehl jetzt so aber es wird mir InGame immer noch nichts angezeigt finde auch nicht das Problem :huh:


    COMMAND:vabrufen(playerid,params[])


    {




    #pragma unused params




    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");




    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");




    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");




    //if(!isPlayerAnAdmin(playerid,7))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied.");




    new text[256], writerName[MAX_PLAYER_NAME],writerText[128];




    mysql_query(128,"SELECT `Writer`, `Text` FROM db_vorschlaege");


    //mysql_function_query(MySqlConnection,"SELECT `Writer`, `Text` FROM db_vorschlaege",true""playerid);



    mysql_store_result();




    while(mysql_fetch_row(text))


    {


    sscanf(text,"p<|>s[24]s[128]",writerName,writerText);



    format(text,sizeof(text),"%s: %s",writerName,writerText);



    SendClientMessage(playerid,BLAU,text);



    }


    mysql_free_result();


    return 1;


    }


    mysql_log.txt:


    [16:22:27] [ERROR] mysql_tquery - callback parameter count does not match format specifier length
    [16:22:27] [WARNING] cache_get_row_count - no active cache
    [16:22:27] [WARNING] cache_get_field_count - no active cache

  • COMMAND:vabrufen(playerid,params[])
    {
    #pragma unused params
    if(ImTutorial[playerid] != 0)return SendClientMessage(playerid,GRAU,"Du kannst keine Befehle nutzen,da du im Tutorial bist.");
    if(GetPVarInt(playerid,"Eingeloggt") == 0)return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(Spieler[playerid][pAWAYFROMKEYBOARD] == 1)return SendClientMessage(playerid,WRONGCMD,"Du bist im AFK-Modus und kannst somit keine Befehle nutzen."),SendClientMessage(playerid,WRONGCMD,"BENUTZE: /back");
    if(!isPlayerAnAdmin(playerid,7))return SendClientMessage(playerid,GRAU,"Du bist kein "#SERVERTAG" Teammitglied./Du hast nicht den jeweiligen Adminrang.");

    mysql_tquery(handle, "SELECT * FROM `db_vorschlaege`", "OnPlayerGetVorsch_Data", "i", playerid);
    return 1;
    }


    forward OnPlayerGetVorsch_Data(playerid);
    public OnPlayerGetVorsch_Data(playerid)
    {
    new rows = cache_num_rows(), str[145], tmp[MAX_PLAYER_NAME];
    if(!rows) return SendClientMessage(playerid,GRAU,"Es gibt momentan keine Vorschläge.");
    for(new i=0; i<rows; i++)
    {
    cache_get_field_content(i, "Writer", tmp);
    cache_get_field_content(i, "Text", str);
    format(str,sizeof(str),"%s: %s", tmp, str);
    SendClientMessage(playerid, BLAU, str);
    }
    return 1;
    }


    Kommst du damit klar?




    EDIT: (Post unten)
    Scott_Hanson: Gerne! :) Da dein Problem behoben ist, wäre es gut, wenn du den Thread auf erledigt setzt. Danke!

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()