Beiträge von John_McClain

    Hallo,


    ich habe einen Fehler in einem MySQL Query, aber ich bin zu blöd ihn zu finden....

    Code
    $nabfrage = "SELECT * FROM stg WHERE group = '$grid'";


    mysql_error() gibt folgendes aus

    Code
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group='19'' at line 1


    Könnte mir jemand helfen den Fehler zu suchen?

    Also ich ich blicke gerade nicht ganz durch. Könnte aber auch an mit liegen hab viel zu tun im Moment...
    Eagl also woher weiß den sizeof bei deiner schleife wie groß hInfo ist? Wenn du die Variable erweitern willst musst statt sizeof die Anzahl der maximalen Häuser im Spiel erstellen. Du brauchst dafür ja eine Freie ID und die ist immer 1 Größer als die anzahl der aktuellen Häuser. Ich hoffe du hast mich verstanden... Wenn nicht frag.


    Zu deinem Fehler oben: Poste mal die Zeile, wo du die Verbindung mit der Datenbank herstellst.

    Also wenn das so da steht dann fehlt da ja einiges.... bis jetzt hast du nur das level und das adminlevel eingefügt und das dritte array hast du nichtmal richtig zuende geschrieben. Und format erwartet jetzt von dir 6 Zahlen....
    Also müsste das zum beispiel so aussehen:
    format(query,sizeof(query),"UPDATE user SET scorelevel='%i',alevel='%i',pBanned='%i',premium='%i',money='%i' WHERE ID='%i'",sInfo[playerid][scorelevel],sInfo[playerid][alevel],sInfo[playerid][banned],sInfo[playerid][premium],sInfo[playerid][money],sInfo[playerid][db_id])
    Also setzte die Variablen richtig ein und versuche es nochmal.

    Naja wenn du das ganze mit ocmd machst ist es recht einfach:

    • Prüfe ob der Spieler der den Befehl eingibt in den richtigen Fraktionen ist
    • Prüfe mit sscanf, ob die Parameter richtig sind
    • Bestimme die Ränge der Person, die schreibt
    • nimm eine for Schleife und schicke die Nachricht allen mit der richtigen Fraktion

    Ich habe das ganze mit Dynamischen Rangsystem gemacht, sodass man die Ränge über ein Control Panel ändern kann.
    ocmd:d(playerid,params[])
    {
    if(SpielerInfo[playerid][pMember] >=1 && SpielerInfo[playerid][pMember] <= 4 || SpielerInfo[playerid][pLeader] >= 1 && SpielerInfo[playerid][pLeader] <= 4 || SpielerInfo[playerid][pMember] == 12 || SpielerInfo[playerid][pLeader] == 12)
    {
    new text[256];
    if(sscanf(params,"s",text))return SendClientMessage(playerid,COLOR_LIGHTBLUE,"INFO: Verwende /d [Text]");
    if(SpielerInfo[playerid][pMember] >= 1)
    {
    new query[128], frak, rang;
    frak = SpielerInfo[playerid][pMember];
    rang = SpielerInfo[playerid][pRang];
    format(query,sizeof(query),"SELECT Rangname FROM rangs WHERE fraktion = '%i' AND rang = '%i'",frak,rang);
    mysql_function_query(dbhandle,query,true,"DChatRang","is",playerid,text);
    return 1;
    }
    else if(SpielerInfo[playerid][pLeader] >= 1)
    {
    new query[128], frak, rang;
    frak = SpielerInfo[playerid][pLeader];
    rang = 7;
    format(query,sizeof(query),"SELECT Rangname FROM rangs WHERE fraktion = '%i' AND rang = '%i'",frak,rang);
    mysql_function_query(dbhandle,query,true,"DChatRang","is",playerid,text);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Es ist ein Fehler aufgetreten. Bitte wende dich an einen Supporter.");
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_RED,"Das können nur Staatsbeamte!");
    }
    return 1;
    }
    public DChatRang(playerid,text[256])
    {
    new Rang[64],Name[64],CText[256];
    cache_get_field_content(0,"Rangname",Rang,dbhandle,sizeof(Rang));
    GetPlayerName(playerid,Name,sizeof(Name));
    format(CText,sizeof(CText),"%s %s: %s",Rang,Name,text);
    for(new i=0;0<GetMaxPlayers();i++)
    {
    if(SpielerInfo[i][pMember] >=1 && SpielerInfo[i][pMember] <= 4 || SpielerInfo[i][pLeader] >= 1 && SpielerInfo[i][pLeader] <= 4 || SpielerInfo[i][pMember] == 12 || SpielerInfo[i][pLeader] == 12)
    {
    SendClientMessage(i,0xFF7800FF,CText);
    }
    }
    return 1;
    }
    Ist allerdings mit MySQL