Fehler im Query?

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,


    Habe ich hier etwa einen Fehler im Query, denn jedes mal wenn jemand dem Server beitritt, wird der Nutzer gelöscht.
    else
    {
    new query[256];
    mysql_format(handle,query,sizeof(query),"SELECT Registrierung FROM Accounts WHERE Name = '%e'",pInfo[playerid][pName]);
    mysql_pquery(handle,query);
    pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);
    if(pInfo[playerid][pRegStep] == 4)
    {
    format(string,sizeof(string),"Willkommen zurück, {0174DF}%s\n{FFFFFF}Dieser Nutzername ist bereits vergeben. Bitte gebe dein Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG"{FFFFFF} Login",string,"Login","");
    }
    else
    {
    mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername);
    mysql_pquery(handle,query);
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }

  • Kannst du bitte alles posten, was da dazu gehört, vor dem else etc.

    public InitPlayer(playerid)
    {
    new query[256];
    mysql_format(handle,query,sizeof(query),"UPDATE Accounts SET Geschlecht='%d',Registrierung='%d' WHERE id= '%d'",
    pInfo[playerid][pSex],pInfo[playerid][pRegStep],pInfo[playerid][pID]);
    mysql_pquery(handle,query);
    /*mysql_format(handle,query,sizeof(query),"UPDATE Accounts SET Geschlecht='%d',Registrierung='%d',Alter='%d' WHERE id = '%d'",
    pInfo[playerid][pSex],pInfo[playerid][pRegStep],pInfo[playerid][pAge],pInfo[playerid][pID]);
    mysql_pquery(handle, query);*/
    // GELD
    // SKIN
    pInfo[playerid][pLevel] = 0;
    SendClientMessage(playerid,0xFFFFFF,"Willkommen auf dem Server!");
    return 1;
    }


    public OnUserCheck(playerid)
    {
    new string[265];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    if(cache_get_row_count() == 0)
    {
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    else
    {
    new query[256];
    mysql_format(handle,query,sizeof(query),"SELECT Registrierung FROM Accounts WHERE Name = '%e'",pInfo[playerid][pName]);
    mysql_pquery(handle,query);
    pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);
    if(pInfo[playerid][pRegStep] == 4)
    {
    format(string,sizeof(string),"Willkommen zurück, {0174DF}%s\n{FFFFFF}Dieser Nutzername ist bereits vergeben. Bitte gebe dein Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG"{FFFFFF} Login",string,"Login","");
    }
    else
    {
    mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername);
    mysql_pquery(handle,query);
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    }
    return 1;
    }



    case DIALOG_AGE:
    {
    if(strlen(inputtext) < 2 || !IsNumeric(inputtext))
    {
    ShowPlayerDialog(playerid,DIALOG_AGE,DIALOG_STYLE_INPUT,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Alter (3/3)","{B40431}ERROR:{FFFFFF}Bitte gebe dein richtiges Alter ein!\nBitte gebe nun unten dein Alter an:","Fertig","");
    return 1;
    }
    pInfo[playerid][pAge] = strval(inputtext);
    pInfo[playerid][pRegStep] = 4;
    InitPlayer(playerid);
    }
    }
    return 1;

    mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername);mysql_pquery(handle,query);
    entfernen. Dann gehts.

    Nein, er soll ihn ja löschen, falls der User während der Registrierung disconnected.

  • Mache es so:
    public OnUserCheck(playerid)
    {
    new string[265];
    new playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,playername,sizeof(playername));
    if(cache_get_row_count() == 0)
    {
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    else
    {
    new query[256];
    mysql_format(handle,query,sizeof(query),"SELECT Registrierung FROM Accounts WHERE Name = '%e'",playername);
    mysql_pquery(handle,query,"OnUserCheck2", "d", playerid);
    }
    return 1;
    }


    forward OnUserCheck2(playerid);
    public OnUserCheck2(playerid)
    {
    if(cache_get_row_count() == 0) pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);
    else pInfo[playerid][pRegStep] = 0;
    if(pInfo[playerid][pRegStep] == 4)
    {
    format(string,sizeof(string),"Willkommen zurück, {0174DF}%s\n{FFFFFF}Dieser Nutzername ist bereits vergeben. Bitte gebe dein Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG"{FFFFFF} Login",string,"Login","");
    }
    else
    {
    mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername);
    mysql_pquery(handle,query);
    format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername);
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden","");
    }
    return 1;
    }

  • Mache es so:
    public OnUserCheck(playerid){ new string[265]; new playername[MAX_PLAYER_NAME]; GetPlayerName(playerid,playername,sizeof(playername)); if(cache_get_row_count() == 0) { format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername); ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden",""); } else { new query[256]; mysql_format(handle,query,sizeof(query),"SELECT Registrierung FROM Accounts WHERE Name = '%e'",playername); mysql_pquery(handle,query,"OnUserCheck2", "d", playerid); } return 1;}forward OnUserCheck2(playerid);public OnUserCheck2(playerid){ if(cache_get_row_count() == 0) pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle); else pInfo[playerid][pRegStep] = 0; if(pInfo[playerid][pRegStep] == 4) { format(string,sizeof(string),"Willkommen zurück, {0174DF}%s\n{FFFFFF}Dieser Nutzername ist bereits vergeben. Bitte gebe dein Passwort in die Box unten ein:",playername); ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG"{FFFFFF} Login",string,"Login",""); } else { mysql_format(handle,query,sizeof(query),"DELETE FROM Accounts WHERE Name='%e'",playername); mysql_pquery(handle,query); format(string,sizeof(string),"Herzlich Willkommen {0174DF}%s!\n{FFFFFF}Dein gewählter Benutzername ist: {40FF00}noch frei\n{FFFFFF}Bitte gebe ein gewünschtes Passwort in die Box unten ein:",playername); ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,"{33cc33}"S-TAG" {FFFFFF}Registrierung - Passwort (1/3)",string,"Anmelden",""); } return 1;}

    Kann ich die Cache Funktion nur in einem anderen Callback benutzen?
    Gibt es eine andere Möglichkeit, das ganze ohne ein weiteres Callback zu nutzen aus der Datenbank auszulesen?



    Liebe Grüße :)

  • Ja, da der Server nicht solange wartet, bis er vom MySQL Server eine Antwort bekommt, sondern es in einen separaten Thread auslagert.

    Alles klar Danke ! :)


    P.S: Du hast einen kleinen Fehler gemacht:
    if(cache_get_row_count() == 0) pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);[*] else pInfo[playerid][pRegStep] = 0;


    Sollte eigentlich so sein:


    if(cache_get_row_count() == 0){pInfo[playerid][pRegStep] = 0;}else{pInfo[playerid][pRegStep] = cache_get_field_content_int(0, "Registrierung", handle);}


    Du hast es umgedreht :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen