Balkan SA:MP

San Andreas Multiplayer - www.sa-mp.com => Tutorijali u vezi SA-MPa => Temu započeo: Prcko97 poslato Avgust 09, 2020, 21:54:28 POSLE PODNE

Naslov: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 21:54:28 POSLE PODNE
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
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: inquisitiveemmett poslato Avgust 09, 2020, 22:00:02 POSLE PODNE
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š
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 22:01:22 POSLE PODNE
Citat: inquisitiveemmett poslato Avgust 09, 2020, 22:00:02 POSLE PODNE
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š

Ovo je samo primer, sustina je bitna string ne mogao sam staviti i 10000 svako ko ima malo mozga stavlja koliko je potrebno ;)
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: inquisitiveemmett poslato Avgust 09, 2020, 22:02:50 POSLE PODNE
Citat: Prcko97 poslato Avgust 09, 2020, 22:01:22 POSLE PODNE
Ovo je samo primer, sustina je bitna string ne mogao sam staviti i 10000 svako ko ima malo mozga stavlja koliko je potrebno ;)
Dobro, samo kažem jer sam video da si i u onoj filterskripti koristio za svaki query 128
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: MEDO poslato Avgust 09, 2020, 22:10:26 POSLE PODNE
Totalno pogrešno objašnjeno tquery i pquery

Tquery - Query se obavljaju jedan za drugim, uz to da se mora čekati da se prvi query odradi pa tek onda ide sljedeći.
Pquery - Query se obavljaju paralelno, npr pošalješ 2 upita u bazu i oba se vrše od jednom bez čekanja jedan na drugi.

Zamijeni to neko će se osloniti na tut i sjebati se
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 22:13:09 POSLE PODNE
Citat: MEDO poslato Avgust 09, 2020, 22:10:26 POSLE PODNE
Totalno pogrešno objašnjeno tquery i pquery

Tquery - Query se obavljaju jedan za drugim, uz to da se mora čekati da se prvi query odradi pa tek onda ide sljedeći.
Pquery - Query se obavljaju paralelno, npr pošalješ 2 upita u bazu i oba se vrše od jednom bez čekanja jedan na drugi.

Zamijeni to neko će se osloniti na tut i sjebati se

Lapsus verovatno sam ja pogresno naucio ili sam yaboravio jer sam posle 3 godine uzeo da pisem nesto u vezi sampa :D Sad ce biti zamenjeo ty :D
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 22:18:15 POSLE PODNE
 :)
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: __vedran.xyz77 poslato Avgust 09, 2020, 22:57:06 POSLE PODNE
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



Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 23:03:32 POSLE PODNE
Citat: __vedran.xyz77 poslato Avgust 09, 2020, 22:57:06 POSLE PODNE
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

ime jeste string ali u sqlu se za ime koristi tag %e
sto se tice te 0 stavio sam je jer nism radio u modu i nemam varijable koje bi mogao tu iskoristiti, uopsteno loop prolazi kroz npr maksimalan broj kuca (for new i itd..) i onda umesto 0 pises i
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: inquisitiveemmett poslato Avgust 09, 2020, 23:07:04 POSLE PODNE
Citat: Prcko97 poslato Avgust 09, 2020, 23:03:32 POSLE PODNE
ime jeste string ali u sqlu se za ime koristi tag %e
sto se tice te 0 stavio sam je jer nism radio u modu i nemam varijable koje bi mogao tu iskoristiti, uopsteno loop prolazi kroz npr maksimalan broj kuca (for new i itd..) i onda umesto 0 pises i
ime jeste string ali u sqlu se za ime koristi tag %e
wtf?
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: skritpe iz 2007 godine. ( ͡° ͜ʖ ͡°) poslato Avgust 09, 2020, 23:09:44 POSLE PODNE
Lockaj temu, došlo je do toga da ja moram jebeni SQL tutorial otvoriti
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 09, 2020, 23:10:57 POSLE PODNE
Citat: inquisitiveemmett poslato Avgust 09, 2020, 23:07:04 POSLE PODNE
ime jeste string ali u sqlu se za ime koristi tag %e
wtf?
ne vidim sta sam pogresio kada god se trazi igracevo ime ili se upisuje koristi se %e
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: skritpe iz 2007 godine. ( ͡° ͜ʖ ͡°) poslato Avgust 09, 2020, 23:21:03 POSLE PODNE
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
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Ƭ H Σ Ʋ 1 ∏ ∏ Ψ _ poslato Avgust 10, 2020, 00:05:47 PRE PODNE
Neka hvala , ipak cu ja starinski raditi , sto je sigurno sigurno je i ako moze jedna kisela , hvala ;)
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: __vedran.xyz77 poslato Avgust 10, 2020, 00:50:32 PRE PODNE
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
Ne budi tako siguran pls  ::)
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: Prcko97 poslato Avgust 10, 2020, 00:52:48 PRE PODNE
Citat: __vedran.xyz77 poslato Avgust 10, 2020, 00:50:32 PRE PODNE
Ne budi tako siguran pls  ::)
Kako ti kazes gospodaru pawn jezika :D
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: ChampaWasTaken poslato Avgust 10, 2020, 00:53:33 PRE PODNE
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
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: __vedran.xyz77 poslato Avgust 10, 2020, 01:10:43 PRE PODNE
Citat: Prcko97 poslato Avgust 10, 2020, 00:52:48 PRE PODNE
Kako ti kazes gospodaru pawn jezika :D
Boze pawn jezika*


Kad se kurcimo kurcimo se do kraja bebo
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: skritpe iz 2007 godine. ( ͡° ͜ʖ ͡°) poslato Avgust 10, 2020, 01:18:47 PRE PODNE
Citat: __vedran.xyz77 poslato Avgust 10, 2020, 00:50:32 PRE PODNE
Ne budi tako siguran pls  ::)
Krenuo sam da pišem tut, sačuvao sam na 7k karaktera da se odmorim malo haha
Naslov: Odg: MySQL - Osnovne funckije
Poruka od: [][] Foxy 2k19 [][] poslato Avgust 10, 2020, 11:09:14 PRE PODNE
Fino :) Nemoj raditi dupli post, imaš na primer 2 odgvora, otvori odgovor i spoji ta 2 odgovora u 1 odgovoru i odgovori svima :)