Pozdrav svim clanovima foruma, naime posto zivimo na balkanu jel kasnimo za strancima u svemu pa i u sampu. Htedoh reci i danas mnogo 'skriptera' koristi yini pored mysqla jer im se cini tezak ili im nije dovljno jasan. Potrudicu se da u ovom tutorialu objasnim sve sto je potrebno da neki vas sistem ili ceo mod prebacite u sql ili uradite iz nova, znam da postoji dosta amaterskih tutova kao kako napraviti reg log i tako slicno sto je totalno NEOBJASNJENO, ili za konektovanje baze sto u ovom tutorialu necu pokazivati jer je objasnjeno i svakom normalnom je to jasno :)
DA KRENEMO
Osnovne MySQL Funkcije
Osnovne 3 funkcije sa kojima ce te susretati u sql-u jesu:
mysql_format
mysql_tquery
mysql_pquery
Objasnjenje
mysql_format funckija se upotrebljava da bi formatirali upit koji saljete u bazu, primer:
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "upit");[/pawn]
mysql_tquery funckija se upotrebljava da bi upit poslali u bazu, primer:
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "upit"); mysql_tquery(handle, q);[/pawn]
mysql_pquery funckija se upotrebljava da bi upit posali u bazu, ali za razliku od tquery pquery sluzi za velike querye jer je brzi, primer nije potreban objasnjeno je za t query i skoro pa je slicno.
Vrste Upita i njihovo Upotrebljavanje
Naprimer zelite da unesete podatke u vasu tablicu - kolonu koristite INSERT INTO
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "INSERT INTO `tablica` SET `kolona`= '%d' WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "kolona" ime kolone, var - vredonst varijable koju unosite u kolonu, "id" jedinstveni id kolone
Naprimer zelite da uzmete podatke iz vase tablice - kolonu koristite SELECT * FROM
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "SELECT * FROM `tablica`", "callback"); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "callback" - callback u kome se uzimaju vrednosti iz tablice (objasni cu kada budem objasnjavao cache funkcije.
Naprimer zelite da apdejtujete kolone u tablici koristite UPDATE
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "UPDATE `tablica` SET `kolona`= '%d' WHERE`id`='d' ", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "kolona" - ime kolone "var", - vrednost varijable koju apdejtujete, "id" jedinstveni id kolone.
Naprimer zelite da brisete kolone iz tablice koristite DELETE * FROM
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "DELETE * FROM `tablica` WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "id" - jedinstveni id kolone, brisete igraca,kucu itd - id iz tablice.
Znaci to su neke osnovne funkcije, imam da dodam jos da "%d" sluzi samo int varijablu za float koristite %f, za string %s, za ime %e.
CACHE
Sada ide objasnjenje za funkciju SELECT * FROM koju sam rekao da cu objasniti, naime da bi se uzeo bilo koji podatak iz tablice morate u qveriju pozvati callback i u njemu koristite cache funkcije na sledeci nacin:
[pawn]
forward public callback(); //gore sam upisao da ce se callback zvati callback
public callback()
{
static var1, var2[128], Float:var3;
if(cache_num_rows()) //ukoliko kolone postoje
{
cache_get_value_name_int(0, "var1", var1); // cache funkcija uzima int "var1" iz table i upisuje ga u "var1" varijablu
cache_get_value_name(0, "var2", var2, 128); // cache funkcija uzima string "var2" iz table i upisuje ga u "var2" varijablu
cache_get_value_name_float(0, "var3", var3); // cache funkcija uzima float "var3" iz table i upisuje ga u "var3" varijablu
}
return 1;
}
[/pawn]
To bi bilo to za ovaj tutorial svaka primedba savet i dodatak su dobrodosli, pucajte :D
Ne moraš za svaki query i string koristiti 128 ;), ako koristiš normalan IDE kao npr Sublime Text 3, Visual Studio Code, etc. selektuješ reč, bilo koji tekst i vidiš koliko ima karaktera, toliki string staviš
Uhhh dosta toga je neobjasnjeno mislim da bi bilo pozeljno da si prvo objasnio kako se pise query pa tek onda upotreba u samp skriptanju
"za string %s, za ime %e." ???
Zar ime nije string ?
[pawn]
cache_get_value_name_int(0, "var1", var1);
[/pawn]
Nisi rekao zasto 0 ovde a veoma je vazno, mislim lepo je to sto si napisao tutorijal da pomognes nekome, mozda ces nekome i pomoci ne kazem, ali daj prvo procitaj neku dokumentaciju nmj ove gluposti da lupas sa pquery i tquery, jer neko ce mozda pogresno nauciti
Citat: Prcko97 poslato Avgust 09, 2020, 23:10:57 POSLE PODNE
ne vidim sta sam pogresio kada god se trazi igracevo ime ili se upisuje koristi se %e
%e se koristi kao zaštita od SQL Injectiona, %e automatski escape-a string i samim tim neko ne može da izmanipuliše upit koji se šalje serveru
Isuse bože, objašnjavaš nešto što ne znaš
%e se uvek koristi kod onoga što sam igrač upisuje, bespotrebno je ako recimo hashuješ password da staviš %e kao većina
Neka hvala , ipak cu ja starinski raditi , sto je sigurno sigurno je i ako moze jedna kisela , hvala ;)
Citat: Prcko97 poslato Avgust 09, 2020, 21:54:28 POSLE PODNE
Vrste Upita i njihovo Upotrebljavanje
Naprimer zelite da unesete podatke u vasu tablicu - kolonu koristite INSERT INTO
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "INSERT INTO `tablica` SET `kolona`= '%d' WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "kolona" ime kolone, var - vredonst varijable koju unosite u kolonu, "id" jedinstveni id kolone
Naprimer zelite da brisete kolone iz tablice koristite DELETE * FROM
[pawn]new q[128]; mysql_format(handle, q, sizeof(q), "DELETE * FROM `tablica` WHERE `id`= '%d'", var, id); mysql_tquery(handle, q);[/pawn]
Objasnjenje: "tablica" - ime vase tablice, "id" - jedinstveni id kolone, brisete igraca,kucu itd - id iz tablice.
Paša moj, mislim da si se ovdje malo zajebunio :-[ :-X
Fino :) Nemoj raditi dupli post, imaš na primer 2 odgvora, otvori odgovor i spoji ta 2 odgovora u 1 odgovoru i odgovori svima :)