Fehler in Abfrage

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
  • Moin!


    Hier nochmal meine Frage, diesmal etwas besser zusamegefasst.


    Ich hab einen Dialog in dem manbei der Registrierug das Geburtsdatum des Ingame Charakters eingeben muss wie zb 20.10.1995. Wenn man dann auf weiter geht steht im nächsten Dialog "Du bist also %d Jahre alt". Da komt 23 raus, so wie es sein soll. Dieses Alter speichere ich in MySQL ab, jedoch steht in MySQL nicht 23 sondern 101 oder manchmal auch 97. Ich benutze die MySQL Version 41-4. Beim Abspeichern in MySQL benutze ich auch %d.

    Code
    if(dialogid == DIALOG_REGISTER2) { if(!response) return ShowPlayerDialog(playerid, DIALOG_REGISTER1, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registration [1/4]", "{FFFFFF}Um fortzufahren wähle bitte ein Passwort", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen"); if(strlen(inputtext) != 10)return ShowPlayerDialog(playerid, DIALOG_REGISTER2, DIALOG_STYLE_INPUT, "{FFFFFF}Registration [2/4]", "{FFFFFF}Um fortzufahren gebe bitte dein Geburtsdatum ein (Charakter)\n(dd.mm.yyyy)", "{FFFFFF}Weiter", "{FFFFFF}Zurück"); if(strfind(inputtext, ".",false)!=-1) { new Date[3][265]; split(inputtext, Date, '.'); if(!IsValidDate(strval(Date[0]),strval(Date[1]),strval(Date[2]))) { ShowPlayerDialog(playerid, DIALOG_REGISTER2, DIALOG_STYLE_INPUT, "{FFFFFF}Registration [2/4]", "{FFFFFF}Um fortzufahren gebe bitte dein Geburtsdatum ein (Charakter)\n(dd.mm.yyyy)", "{FFFFFF}Weiter", "{FFFFFF}Zurück"); SendErrorMessage(playerid,"Dieses Datum ist ungültig"); return 1; } RegisterInfo[playerid][register_Alter] = GetAlter(strval(Date[0]),strval(Date[1]),strval(Date[2])); format(RegisterInfo[playerid][register_Geburtsdatum], 225, "%s", inputtext); new string[256]; format(string, sizeof(string), "{FFFFFF}Du bist also %d Jahre alt", RegisterInfo[playerid][register_Alter]); ShowPlayerDialog(playerid, DIALOG_REGISTER3, DIALOG_STYLE_MSGBOX, "{FFFFFF}Registration [2/4]", string, "{FFFFFF}Weiter", "{FFFFFF}Zurück"); } else { return ShowPlayerDialog(playerid, DIALOG_REGISTER2, DIALOG_STYLE_INPUT, "{FFFFFF}Registration [2/4]", "{FFFFFF}Um fortzufahren gebe bitte dein Geburtsdatum ein (Charakter)\n(dd.mm.yyyy)", "{FFFFFF}Weiter", "{FFFFFF}Zurück"); } return 1;






    Hier wird bei Abschlusss der Registration das das Alter in MySQL gespeichert


    Code
    if(dialogid == DIALOG_REGISTER5) { if(!response)return ShowPlayerDialog(playerid, DIALOG_REGISTER5, DIALOG_STYLE_INPUT, "{FFFFFF}Registration [4/4]", "{FFFFFF}Um fortzufahren wähle bitte einen gültigen Roleplay Namen\n(z.B: Mark_Mayr)", "{FFFFFF}Weiter", "{FFFFFF}Zurück"); if(strfind(inputtext, "_",false)!=-1) { printf("%d",RegisterInfo[playerid][register_Alter]); format(RegisterInfo[playerid][register_Name],64,"%s",inputtext); new query[300]; mysql_format(handle, query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`RPName`,`Geburtsdatum`,`Geschlecht`,`Alter`) VALUES ('%e', MD5('%e'),'%e','%e','%d','%d')", SpielerDaten[playerid][player_Name], RegisterInfo[playerid][register_Passwort], RegisterInfo[playerid][register_Name],RegisterInfo[playerid][register_Geburtsdatum],RegisterInfo[playerid][register_Geschlecht],RegisterInfo[playerid][register_Alter]); mysql_pquery(handle, query, "OnUserRegister", "d", playerid); print(query); } }


    Das sind die Stock die it der Alter Berechnung zu tun haben.

    Code
    stock split(const strsrc[], strdest[][], delimiter){ new i,li,aNum,len; while(i <= strlen(strsrc)){ if(strsrc[i]==delimiter || i==strlen(strsrc)){ len = strmid(strdest[aNum], strsrc, li, i, 128); strdest[aNum][len] = 0; li = i+1; aNum++; } i++; } return 1;}stock IsValidDate(day, month, year){ new maxDays,maxYear,Date[3]; getdate(Date[2], Date[1], Date[0]); if(Date[2] == 2019) { maxYear = 2005; } else if(Date[2] == 2020) { maxYear = 2006; }else if(Date[2] == 2021) { maxYear = 2007; }else if(Date[2] == 2022) { maxYear = 2008; } if(year < 1930 || year > maxYear) return 0; switch (month){ case 1,3,5,7,8,10,12: maxDays = 31; case 4,6,9,11: maxDays = 30; case 2:{ if(IsLeapYear(year)){ maxDays = 29; } else{ maxDays = 28; } } default: return 0; } if(day < 1 || day > maxDays) return 0; return 1;}stock IsLeapYear(year){ return ( year % 4 == 0 && (year % 100 != 0 || year % 400 == 0) );}stock GetAlter(aDay,aMonth,aYear){ new nyear,nmonth,nday; getdate(nyear,nmonth,nday); new alter = nyear - aYear; if(aMonth > nmonth) { alter -= 1; } if(aMonth == nmonth && (nday >= aDay)) { alter -= 1; } return alter;}


    Die Enums

    Code
    enum RegisterDatenEnum { register_Passwort[225], register_Geburtsdatum[225], register_Geschlecht, register_Name, register_Alter}


    Es gibt noch ein Enum wo zb steht player_Alter, player,_Geburtsdatum, usw. Kann es sein, dass sich da etwas überschneidet. Soweit ich seh, wird hier aus dem player Enum nichts genutzt .


    Hier noch meine MySQL 'accounts' Tabelle
    alter.PNG




    Ich würde mich freuen, wenn jemand mein Problem lösen könnte.
    Danke im Voraus


    MfG


    Allrounder18

  • Bitte nicht den [pwn] Tag nutzen, der verschiebt sich nämlich wie du siehst, sobald du den Beitrag bearbeitest oder sonst was machst.


    Immer nur den Code Tag verwenden, ansonsten ist das wirklich nur schwer möglich dir zu helfen ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • so besser?

    1. Nein nicht den Code aus dem pwn Tag jetzt da einfach rein kopieren, da jegliche Formatierung zuvor zerstört wurde.


    2. Wähle bei dem Code Tag die Sprache mit aus (C) oder wenn du es als Tag direkt schreiben magst: [code=c]


    3. Du musst den Code jetzt noch einmal aus deinem Skript kopieren und da einfügen, damit die Formatierung beibehalten wird :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von .rVx ()

    Dieser Beitrag wurde von Eddy gelöscht ().
  • Beitrag von Allrounder18 ()

    Dieser Beitrag wurde von Eddy aus folgendem Grund gelöscht: bezug entfernt ().