[MySql] Datum beim Registrieren in der Datenbank speichern und beim login wieder auslesen

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 möchte gern das meine Admins einsehen können wann sich jemand registriert hatt, und das möchte ich in den Stats ausgeben...
    Am wichtigsten ist mir jedoch das dass Datum beim Registrieren eines Users in seinem Account gespeichert wird und das es unter LoadPlayer geladen wird...
    Ich habe von MySql leider keine oder nicht viel ahnung. Ich arbeite mit Enum's .


    So funktionierts sicher nicht oder?
    SpielerInfo[playerid][pDatum] = mysql_GetDate("accounts", "Datum", "Name", SpielerInfo[playerid][pName]);
    mysql_SetInt("accounts", "Datum", SpielerInfo[playerid][pDatum], "Name", SpielerInfo[playerid][pName]);


    Die Stats:
    if(strcmp(cmdtext,"/stats",true)==0)
    {
    new string[500],string1[128];
    format(string1,sizeof(string1),"Stats von %s",NAMEN(playerid));
    format(string,sizeof(string),"Registriert am:%i",[pDatum]));
    ShowPlayerDialog(playerid, DIALOG_STATS,DIALOG_STYLE_MSGBOX, string1, string, "Schließen", "");
    return 1;
    }
    Vielen Dank!


    //Edit PawnCode beigefügt.

  • So müsste das dann also ausschauen?
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    new Year, Month, Day,string[10];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    getdate(Year, Month, Day);
    format(string,sizeof(string),"%i:%i:%i",Year,Month,Day);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`Datum`) VALUES ('%s', '%s','string')", Name, pass);
    mysql_query(query);
    return true;
    }


    Wenn ja, wie lese ich dann aus?

  • Das ist auch so noch falsch


    probier es so
    stock CreateAccount(playerid, pass[])
    {
    new query[256],Name[MAX_PLAYER_NAME];
    new Year, Month, Day,string[10];
    GetPlayerName(playerid, Name, MAX_PLAYER_NAME);
    mysql_real_escape_string(Name,Name);
    mysql_real_escape_string(pass,pass);
    getdate(Year, Month, Day);
    format(string,sizeof(string),"%i:%i:%i",Year,Month,Day);
    format(query, sizeof(query), "INSERT INTO `accounts` (`Name`, `Passwort`,`Datum`) VALUES ('%s', '%s','%s')", Name, pass,string);
    mysql_query(query);
    return true;
    }


    Auslesen dann ganz normal mit mysql_get_field


    oder eben (wenn du maddins tut genutzt hast) mit mysql_GetString


    Gruß

    ik bin der vito c:

  • So ists jetzt:


    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(636) : error 006: must be assigned to an array
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(637) : error 006: must be assigned to an array
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraklevel] = mysql_GetInt("accounts", "FrakLevel", "Name", SpielerInfo[playerid][pName]);
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Money", "Name", SpielerInfo[playerid][pName]));
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pDatum] = mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pUhrzeit] = mysql_GetString("accounts", "Uhrzeit", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }

  • Wenn ich den Code von .: xGreekz7x :.verwende erhalte ich 4 Errors: das sind in dem falle diese mit dem Code:
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(630) : error 001: expected token: "]", but found "-identifier-"
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(630) : warning 215: expression has no effect
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(630) : error 001: expected token: ";", but found "]"
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(630) : error 029: invalid expression, assumed zero
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(630) : fatal error 107: too many error messages on one line


    Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    4 Errors.

    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    format(SpielerInfo[playerid][pDatum],sizeof SpielerInfo[playerid][pDatum],"%s",mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraklevel] = mysql_GetInt("accounts", "FrakLevel", "Name", SpielerInfo[playerid][pName]);
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Money", "Name", SpielerInfo[playerid][pName]));
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pDatum] = mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pUhrzeit] = mysql_GetString("accounts", "Uhrzeit", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }
    Wenn ich die 2 abfragen mit GetString entferne kommt das gleiche raus, wenn ich die Abfrage von .: xGreekz7x :. entferne habe ich folgendes:
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(637) : error 006: must be assigned to an array
    C:\Users\Sven Meyer\Desktop\SAMP-SERVER\gamemodes\negwen.pwn(638) : error 006: must be assigned to an array
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    2 Errors.


    stock LoadPlayer(playerid)
    {
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
    {
    GetPlayerName(playerid, SpielerInfo[playerid][pName], MAX_PLAYER_NAME);
    //format(SpielerInfo[playerid][pDatum],sizeof SpielerInfo[playerid][pDatum],"%s",mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pAdmin] = mysql_GetInt("accounts", "Admin", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraktion] = mysql_GetInt("accounts", "Fraktion", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pFraklevel] = mysql_GetInt("accounts", "FrakLevel", "Name", SpielerInfo[playerid][pName]);
    GivePlayerMoney(playerid,mysql_GetInt("accounts", "Money", "Name", SpielerInfo[playerid][pName]));
    SetPlayerScore(playerid,mysql_GetInt("accounts", "Level", "Name", SpielerInfo[playerid][pName]));
    SetPlayerSkin(playerid,mysql_GetInt("accounts", "Skin", "Name", SpielerInfo[playerid][pName]));
    SpielerInfo[playerid][pDatum] = mysql_GetString("accounts", "Datum", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][pUhrzeit] = mysql_GetString("accounts", "Uhrzeit", "Name", SpielerInfo[playerid][pName]);
    }
    return 1;
    }

  • Das ganze ist auch per SQL-Befehl ganz einfach zu lösen einfach die jeweilige Tabelle auf timestamp dazu noch das format einstellen/umstellen.
    Nun kannst du das Registrierungsdatum per NOW() in Verbindung beim neu erstellen des Accounts als wo du den Befehl INSERT ausführst hinzufügen. Nun steht auch das aktuelle Datum in der Tabelle. Dann kannst es bequem auch wieder auslesen (SELECT) und in einem Array (String) speichern und weiter verwenden .


    //edit Rechtschreibung verbessert

  • Ahhh! So langsam hab ich geschnallt , vielen Dank ich denke ich habe in etwa verstanden was du meinst!


    Hier siehst du nochmal ein beispiel ist jedoch auf dem neuen Plugin von BlueG bassierend jedoch brauchst du dich davon nicht entmütigen lassen es kommt ja nur auf die
    SQL-Befehle an ^^.


    MySQL Plugin ???


    Jedoch hast du hier nicht viel auswahl möglichkeit im format der Zeit dazu siehe hier mehr http://dev.mysql.com/doc/refman/5.1/de/datetime.html
    Grunsätzlich YYYYMMDD wenn du das umgedreht haben willst geht das auch per SQL Befehl DATE_FORMAT
    hier nochmal nachzulesen


    http://www.electrictoolbox.com…l/format-date-time-mysql/


    Jedoch bin ich mir nicht sicher du kannst glaub ich per
    DATE_FORMAT(NOW(),'%d-%m-%Y')
    im INSERT query das auch als string speichern ich bin mir jedoch nicht sicher.