Alter und Geschlecht speichert nicht [MySQL]

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
  • Guten Tag,


    in meiner Tabelle wird Alter sowie das Geschlecht nicht gespeichert woran liegt das?
    Code siehe hier:


    if(dialogid == DIALOG_GESCHLECHT)
    {
    if(response == 1) //Männlich
    {
    SendClientMessage(playerid,COLOR_ROT,"In Ordnung, du bist also Männlich.");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    SpielerInfo[playerid][pGeschlecht] = 1;
    }
    if(response == 0) //Weiblich
    {
    SendClientMessage(playerid,COLOR_ROT,"In Ordnung, du bist also Weiblich.");
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    SpielerInfo[playerid][pGeschlecht] = 2;
    }
    }
    if(dialogid == DIALOG_ALTER)
    {
    getdate(jahr,monat,tag);
    gettime(stunde,minute,sekunde);
    new DateInfo[3][20],string[200];
    split(inputtext,DateInfo,'.');
    if(response == 0)return Kick(playerid);
    else
    {
    if(strlen(inputtext) > 10)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(!IsValidDate(strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2])))
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(jahr - strval(DateInfo[2]) > 100 || strval(DateInfo[2]) < 1 || strval(DateInfo[2]) >= jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    new check = jahr - strval(DateInfo[2]);
    if(check == jahr)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    if(strval(DateInfo[1]) > monat)
    {
    check -= 1;
    }
    else if(strval(DateInfo[1]) == monat && strval(DateInfo[0]) > tag)
    {
    check -= 1;
    }
    SpielerInfo[playerid][pAlter] = mktime(stunde,minute,sekunde,strval(DateInfo[0]),strval(DateInfo[1]),strval(DateInfo[2]));
    if(AgeOfPlayer(playerid) < 10 && AgeOfPlayer(playerid) > 80)
    {
    ShowPlayerDialog(playerid,DIALOG_ALTER,DIALOG_STYLE_INPUT,"{00AFFF}"#SERVERNAME" {FFFFFF}- Information","Wir brauchen nun noch eine letzte persönliche Information von dir.\nWir möchten gerne wissen wie alt du bist, Angaben in TT.MM.JJJJ.","Weiter","Abbrechen");
    return 1;
    }
    format(string,sizeof(string),"In Ordnung, du bist also %i Jahre alt.",AgeOfPlayer(playerid));
    SendClientMessage(playerid,COLOR_ROT,string);
    return 1;
    }
    }


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))//Wir fragen ab ob der angegebene Spieler auch Online ist, und kein NPC ist (nur zur sicherhheit)
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    new query[400], data[50]; //50 zeichen bei data reichen völlig aus.
    format(query, sizeof(query), "SELECT * FROM `accounts` WHERE `Name`='%s'",SpielerInfo[playerid][pName]);//Lese `Alles` Von Accounts aus, wo der Name sich befindet
    mysql_query(query);//abschicken des queries
    mysql_store_result();//Auflisten aller ergebnisse
    if(mysql_num_rows())//Abfragen ob datensatz existiert
    {
    if(mysql_retrieve_row())//Weiß ich nicht genau was das bewirkt.
    {
    mysql_fetch_field_row(data,"Level");//Söllte eigendlich selbsterklärend sein
    SpielerInfo[playerid][pLevel]=strval(data);
    mysql_fetch_field_row(data,"Adminlevel");
    SpielerInfo[playerid][pAdminlevel]=strval(data);
    mysql_fetch_field_row(data,"Online");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pOnline]=strval(data);
    mysql_fetch_field_row(data,"Datum");//Ich sehe auch keinen sinn, nen LEEREN Wert zu laden aber naja.
    SpielerInfo[playerid][pDatum]=strval(data);
    mysql_fetch_field_row(data,"Geschlecht");
    SpielerInfo[playerid][pGeschlecht]=strval(data);
    mysql_fetch_field_row(data,"Alter");
    SpielerInfo[playerid][pAlter]=strval(data);


    }
    }
    mysql_free_result();//NIEMALS VERGESSEN!!!! gibt den benutzten speicher wieder frei
    }
    return 1;
    }


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[400];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d',`Alter` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pAlter],SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    }
    return 1;
    }


    //Edit:Text


    Einmal editiert, zuletzt von SA:MP-Designs () aus folgendem Grund: //Edit:Text

  • Hier mal der Code wo die Tabelle erstellt wird.



  • Wie ich sehe lässt du keine Tabelle für Age erstellen ?


    Joa, am besten soll er für jede Variable eine Tabelle erstellen, bitte schreibt nicht son schrott hier in die Scripting Base.


    B2T:
    Wird noch etwas gespeichert? Falls nicht, printe am besten mal den Query, bei den du speicherst.


    //e: Du ladest dein Datum als Int, anstatt als String.

  • Habs geprintet, der SavePlayer Stock wird nicht ausgeführt.


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[200];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pName]);
    mysql_query(query);
    }
    }
    return 1;
    }

  • Ich habe mal was ausprobiert, sobald der Spieler sich registriert arbeitet der SpeicherStock beim verlassen des Servers nicht mit, sobald man ein 2tes mal den Server betritt arbeitet er.


    //edit
    Doch nicht, die Speicherung funktioniert nun weil ich in dem Punkt wo der Account registriert wird den Stock SpielerSpeichern aufrufe, lediglich bleibt das Geschlecht auf keinen ermittelbaren Wert, sprich 0.
    @John_Hunter:

  • Account wird hier erstellt, hat meiner Meinung rein gar nichts damit zu tun aber ok..
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`) VALUES ('%s', '%s')", Name, pass);
    mysql_query(query);
    return true;
    }

  • Trotzdem wird der Stock hier ausgeführt, nur das Geschlecht nicht gespeichert.


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    printf("Test");
    new query[600];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf("Test erf");
    }
    }
    return 1;
    }


    Die Prints weren in der Log doch auch angezeigt.


  • stock SavePlayer(playerid)
    {/*
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {*/
    printf("Test");
    new query[600];
    printf("Test1");
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%d' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pName]);
    printf("Test 3");
    mysql_query(query);
    printf("Test erf");
    //}
    //}
    return 1;
    }


    Code
    21:25:17] [join] GTARP has joined the server (0:79.195.144.188)
    [21:25:18] Test
    [21:25:18] Test1
    [21:25:18] Test 3
    [21:25:18] Test erf
    [21:25:21] [part] GTARP has left the server (0:1)
  • Versuch es mal so. Habe dort den Geschlecht mit einem Int gemacht. (Dies benutze ich auch so immer in meinen Skripts)


    stock SavePlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new query[600];
    format(query, sizeof(query), "UPDATE `accounts` SET `Level` = '%d',`Adminlevel` = '%d',`Online` = '%d',`Datum` = '%s',`Geschlecht` = '%i' WHERE `Name` = '%s'",
    SpielerInfo[playerid][pLevel],SpielerInfo[playerid][pAdminlevel],SpielerInfo[playerid][pOnline],SpielerInfo[playerid][pDatum],SpielerInfo[playerid][pGeschlecht],SpielerInfo[playerid][pName]);
    mysql_query(query);
    printf("Account wurde gespeichert.");
    }
    }
    return 1;
    }