Hi, Turiu klausima, Kaip padaryti kai išgauna data ir ja išsaugo kad rodytų duomenų bazėje tą išsaugotą laiką? PVZ aš susikuriu kintamąjį - PaskutinisLog ir noriu kad jį išsaugotų į duom bazę rašau orm_addvar_int(pInfo[playerid][ORMID], pInfo[playerid][PaskutinisLog], "PaskutinisLog"); Tačiau kažkodėl man atrodo kad turėtų būti ne int tipo kintamasis gal galite pasakyti kame blogai darau, nes man viska kaip ir išsaugo tiesiog duom bazeje rodo 0000-00-00 po atsijungimo, nors viskas išsaugoma. P.S. dar kiek žinau duom bazeje kai sukuri nauja eilute ten eina pasirinkti int varchar ir pan bandžiau pasirinkti int bandžiau date ir tt. Jei galit paaiškinkit ką ne taip darau. :)
Bebras prieš 9 metus
Matau tris kelius:
- Stulpelio tipas
INT
Įrašymo užklausa:
mysql_format(connection, query, sizeof(query), "UPDATE lentele SET stulpelis = %d", gettime());
Datos gavimas suprantamu formatu:
mysql_format(connection, query, sizeof(query), "SELECT FROM_UNIXTIME(stulpelis) FROM lentele");
- Stulpelio tipas
DateTime
arbaDate
Datos įrašymo užklausa:
mysql_format(connection, query, sizeof(query), "UPDATE lentele SET stulpelis = FROM_UNIXTIME(%d)", gettime());
Datos gavimas nesikeičia, tai būtų paprastas string.
- Stulpelio tipas
VARCHAR
(arba kitas tekstinis tipas): Datos įrašymas:
new date[ 32 ], year, month, day, hour, minute, second;
getdate(year, month, day);
gettime(hour, minute, second);
format(date, sizeof(date),"%d.%d.%d %d:%d:%d", year, month, day, hour, second, minute);
mysql_format(connection, query, sizeof(query), "UPDATE lentele SET stulpelis = '%s'", date);
Datos išgavimas nieko neišsiskiria.
Kaip matai, pirmiems dviems variantais bus būtina rašyti užklausas, nors jie ir yra labiau priimtini... Tačiau jei nori toliau naudoti pilnai ORM, teks tenkintis trečiuoju būdu ir datą formatuoti pačiam.
Tukas14 prieš 9 metus
Na man papraščiau yra orm , tačiau vistiek tas 3 variantas dar man nelabai suprantamas ką ten daryt turėčiau :D jei nesunku gal detaliau pavyktų išaiškinti kad atsiminčiau visam laikui? :D
Bebras prieš 9 metus
....Datos išsaugojimo pvz.:
public OnPlayerDisconnect(playerid, reason)
{
new year, month, day, hour, minute, second;
getdate(year, month, day);
gettime(hour, minute, second);
format(pInfo[ playerid ][ PaskutinisLog ], 32,"%d.%d.%d %d:%d:%d", year, month, day, hour, second, minute);
orm_update(pInfo[ playerid ][ ORMID ]);
}
Datos pakrovimo pvz:
public OnPlayeSpawn(playerid)
{
// Tarkim kad orm_select jau buvo panaudota
new string[];
format(string, sizeof(string), "Paskutinio prisijungimo data: %s", pInfo[ playerid ][ PaskutinisLog ]);
SendClientMessage(playerid, -1, string);
}
Tukas14 prieš 9 metus
orm_addvar_int(pInfo[playerid][ORMID], pInfo[playerid][PaskutinisLog], "PaskutinisLog"); o šita man pakeisti į orm_addvar_string(pInfo[playerid][ORMID], pInfo[playerid][PaskutinisLog], "PaskutinisLog"); ar palikti int tipo?
Tukas14 prieš 9 metus
Ok, jau matau tvarkoje viskas, ačiū labai padėjai kaip visada :) EDIT: dar tokia bėda aš noriu tą datą atvaizduoti textdrawe ir man to textdraw išvis nerodo nesuprantu kodėl viskas kaip pasakei padaryta, tik manau gali būti tame problema, kad išgaunu format(pInfo[ playerid ][ PaskutinisLog ], 32,"%d.%d.%d %d:%d:%d", year, month, day, hour, minute, second); bet visur padaryta kad string tipo saugotų tai nežinau ar šiame kode problema ar kur dar gali būti :/ any ideas?
Bebras prieš 9 metus
Na pradžiai pakrovęs pabandyk išprintinti datą su printf()
funkcija, jeigu ji gera, tada rodyk kaip tu nustatai textdraw tekstą.
Jeigu išvis nerodo TD, galbūt pamiršai TextDrawShowForPlayer
?
Tukas14 prieš 9 metus
Ten išsaugo gražiai viska rodo, bet kai pvz naudoju %d tada man meta ten skaicius betkokius ta6kos vienu =od=iu nesamones, bet jei panaudoju %s tada i6vis textdrawo nerodo
Tukas14 prieš 9 metus
Man viskas su kodu gerai jokiu erroru nieko bet tik kad textdraw nerodo va kodai kuriais naudoju tam td
orm_addvar_string(pInfo[playerid][ORMID], pInfo[playerid][PaskutinisLog], 32, "PaskutinisLog");
new string[32]; format(string,sizeof(string), "%s", pInfo[playerid][PaskutinisLog]); PlayerTextDrawSetString(playerid, Reg_LogTD[playerid][36], string); PlayerTextDrawShow(playerid, Reg_LogTD[playerid][36]);
new year, month, day, hour, minute, second; getdate(year, month, day); gettime(hour, minute, second); format(pInfo[ playerid ][ PaskutinisLog ], 32,"%d.%d.%d %d:%d:%d", year, month, day, hour, minute, second); orm_update(pInfo[playerid][ORMID]);