hlmod.hu
https://hlmod.hu/

Sql Tábla
https://hlmod.hu/viewtopic.php?f=9&t=29545
Oldal: 1 / 1

Szerző:  sZmolka [ 2018.11.20. 20:56 ]
Hozzászólás témája:  Sql Tábla

Sziasztok

Valaki írna ennek a modnak egy táblát

Előre is köszönöm

Csatolmányok:
aa.sma [3.85 KiB]
Letöltve 148 alkalommal.

Szerző:  BeepBeep [ 2018.11.20. 22:11 ]
Hozzászólás témája:  Re: Sql Tábla

sZmolka írta:
Sziasztok

Valaki írna ennek a modnak egy táblát

Előre is köszönöm


Tábla.

Minden információt tudsz a kódból: a tábla nevét, sorok nevét, adatok típusait.

Itt van például ez a függvény:

  1. public sql_update_account(id)
  2. {  
  3.     new szQuery[2508]
  4.     new len = 0
  5.    
  6.     new c[191]
  7.     new client_name[33]
  8.     get_user_name(id, client_name, 32)
  9.    
  10.     format(c, 190, "%s", client_name)
  11.    
  12.     replace_all(c, 190, "\", "\\")
  13.     replace_all(c, 190, "'", "\'")
  14.  
  15.     len += format(szQuery[len], 2508, "UPDATE tsoh_save_system SET ")
  16.     len += format(szQuery[len], 2508-len,"Aktivitas = '%d', ", g_Aktivitas[id])
  17.     len += format(szQuery[len], 2508-len,"Soul = '%d', ", soul[id])
  18.     len += format(szQuery[len], 2508-len,"Kaszt = '%d', ", kasztokszama[id])
  19.     len += format(szQuery[len], 2508-len,"Xp = '%d', ", xp[id])
  20.     len += format(szQuery[len], 2508-len,"Level = '%d', ", level[id])
  21.     len += format(szQuery[len], 2508-len,"Kepesseg = '%d', ", kepessegszama[id])
  22.     len += format(szQuery[len], 2508-len,"Skes = '%d', ", selectedknife[id])
  23.     len += format(szQuery[len], 2508-len,"Sgyuru = '%d', ", selectedrings[id])
  24.     len += format(szQuery[len], 2508-len,"Spancel = '%d', ", selectedpants[id])
  25.    
  26.     for(new i=0; i <= 4; i++)
  27.     {
  28.         len += format(szQuery[len], 2508-len,"SkillP%d = '%d', ", i, skillpont[i][id])
  29.     }
  30.     for(new i=0; i <= 9; i++)
  31.     {
  32.         len += format(szQuery[len], 2508-len,"Ring%d = '%d', ", i, ringsnum[i][id])
  33.     }
  34.     for(new i=0; i <= 33; i++)
  35.     {
  36.         len += format(szQuery[len], 2508-len,"Pant%d = '%d', ", i, pantsnum[i][id])
  37.     }
  38.     for(new i=0; i <= 34; i++)
  39.     {
  40.         len += format(szQuery[len], 2508-len,"Knife%d = '%d', ", i, knifes[i][id])
  41.     }
  42.     len += format(szQuery[len], 2508-len,"Jatekosnev = '%s'", c)
  43.     len += format(szQuery[len], 2508-len,"WHERE Id = '%d'", g_Id[id])
  44.    
  45.     SQL_ThreadQuery(g_SqlTuple,"sql_update_account_thread", szQuery)
  46. }


Az utasításokkal fogunk most foglalkozni. SQL-ben az UPDATE a következőket várja:
Kód:
UPDATE Table SET Column1 = Param1, Column2 = Param2 WHERE Column3 = Param3 // Azaz
UPDATE - Utasítás, mit csináljon: frissítse a
Table - Table nevű SQL táblában szereplő (és itt felsorolást indíthatunk, vesszővel elválasztva)
Column1 = Param1 - Column1 nevű mezőt Param1 értékkel, majd
Column2 = Param2 - Column2 nevű mezőt Param2 értékkel,
WHERE - ott, ahol
Column3 = Param3 - Column3 mező értéke megegyezik Param3-mal


Tehát, mi mit tudunk a fenti függvényből:

  1. len += format(szQuery[len], 2508, "UPDATE tsoh_save_system SET ") // Utasítás, azaz frissítse a táblában szereplő mezőket. Tudjuk a tábla nevét. :)
  2.     len += format(szQuery[len], 2508-len,"Aktivitas = '%d', ", g_Aktivitas[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  3.     len += format(szQuery[len], 2508-len,"Soul = '%d', ", soul[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  4.     len += format(szQuery[len], 2508-len,"Kaszt = '%d', ", kasztokszama[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  5.     len += format(szQuery[len], 2508-len,"Xp = '%d', ", xp[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  6.     len += format(szQuery[len], 2508-len,"Level = '%d', ", level[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  7.     len += format(szQuery[len], 2508-len,"Kepesseg = '%d', ", kepessegszama[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  8.     len += format(szQuery[len], 2508-len,"Skes = '%d', ", selectedknife[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  9.     len += format(szQuery[len], 2508-len,"Sgyuru = '%d', ", selectedrings[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  10.     len += format(szQuery[len], 2508-len,"Spancel = '%d', ", selectedpants[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  11.    
  12.     for(new i=0; i <= 4; i++)
  13.     {
  14.         len += format(szQuery[len], 2508-len,"SkillP%d = '%d', ", i, skillpont[i][id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  15. // Mivel a mező nevébe egy INT változó van iktatva, emiatt annyi mezőt kell létrehoznod, ahány indexet kap a mező. Jelen esetben 0,1,2,3,4
  16.     }
  17.     for(new i=0; i <= 9; i++)
  18.     {
  19.         len += format(szQuery[len], 2508-len,"Ring%d = '%d', ", i, ringsnum[i][id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  20. // Mivel a mező nevébe egy INT változó van iktatva, emiatt annyi mezőt kell létrehoznod, ahány indexet kap a mező. Jelen esetben 0,1,2,3,4,5,6,7,8,9
  21.     }
  22.     for(new i=0; i <= 33; i++)
  23.     {
  24.         len += format(szQuery[len], 2508-len,"Pant%d = '%d', ", i, pantsnum[i][id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  25. // Mivel a mező nevébe egy változó van iktatva, emiatt annyi mezőt kell létrehoznod, ahány indexet kap a mező. Jelen esetben 0-33
  26.     }
  27.     for(new i=0; i <= 34; i++)
  28.     {
  29.         len += format(szQuery[len], 2508-len,"Knife%d = '%d', ", i, knifes[i][id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT, hossza ismeretlen
  30. // Mivel a mező nevébe egy változó van iktatva, emiatt annyi mezőt kell létrehoznod, ahány indexet kap a mező. Jelen esetben 0-34
  31.     }
  32.     len += format(szQuery[len], 2508-len,"Jatekosnev = '%s'", c) // Mező neve, ami %s, azaz string értéket kap, emiatt az SQL mező típusa Varchar, hossza az AMXMODX-ben felvehető maximum játékosnév hossza, [64]
  33.     len += format(szQuery[len], 2508-len,"WHERE Id = '%d'", g_Id[id]) // Mező neve, ami %d, azaz integer értéket kap, emiatt az SQL mező típusa INT. Mivel Id, azonosító, ezért ez AUTO_INCREMENT és elsődleges
  34. }


Menjünk tovább a kódban, ugyan így:

  1. len += format(szQuery[len], 2048, "SELECT * FROM tsoh_save_system_s ") // Utasítás, kiválasztja a mező értékét a táblából, tehát tudjuk a tábla nevét ismét
  2.     len += format(szQuery[len], 2048-len,"WHERE Server = '%d'", SERVER_ID) // Ahol a mező értéke %d. Azaz, tudjuk a mező értékét és hogy integer értéket kap, azaz az SQL mező típusa INT, hossza ismeretlen
  3. }


UGORJUNK TOVÁBB:
  1. len += format(szQuery[len], 2548, "UPDATE tsoh_save_system_s SET ") // Ismét UPDATE utasítás, tudjuk a tábla nevét
  2.     len += format(szQuery[len], 2548-len,"Bolt = '%d'", ShopPost) // Tudjuk a mező nevét és hogy milyen értéket kap (%d >> INT)
  3.     len += format(szQuery[len], 2548-len,"WHERE Server = '%d'", SERVER_ID) // Ahol ismét tudjuk a tábla nevét és hogy milyen értéket kap (%d >> INT)
  4. }


Összegezve, mit tudunk:

Tábla:
tsoh_save_system:
Id(INT)
Aktivitas(INT
Soul(INT)
Kaszt(INT)
Xp(INT)
Level(INT)
Kepesseg(INT)
Skes(INT)
Sgyuru(INT)
Spancel(INT)
SkillP0(INT)
[...]
SkillP4(INT)
Ring0(INT)
[...]
Ring9(INT)
[...]
Ring33(INT)
Knife0(INT)
[...]
Knife34(INT)
Jatekosnev(Varchar, 64)

tsoh_save_system_s:
Server(INT)
Bolt(INT)


A létrehozáshoz használhatod a PHPMyAdmin felületet is, vagy írsz egy olyan függvényt, ami regisztrálja a táblákat. Ne felejtsd el ciklusba foglalni létrehozáskor az alábbi mezőket:
Kód:
SkillP%d(INT)
  Ring%d(INT)
  Pant%d(INT)
  Knife%d(INT)

Szerző:  regener [ 2018.11.20. 22:21 ]
Hozzászólás témája:  Re: Sql Tábla

Csak mert volt kedvem hozzá, többet nem lesz:
  1. public plugin_cfg()
  2. {  
  3.     new szQuery[2508] // nem lesz ez kevés?
  4.     new lenMax = charsmax(szQuery)
  5.     new len = 0
  6.    
  7.  
  8.     len += formatex(szQuery[len], lenMax, "CREATE TABLE IF NOT EXISTS `tsoh_save_system`")
  9.     len += formatex(szQuery[len], lenMax-len,"(`Aktivitas` int(11) NOT NULL, ")
  10.     len += formatex(szQuery[len], lenMax-len,"`Soul` int(11) NOT NULL, ")
  11.     len += formatex(szQuery[len], lenMax-len,"`Kaszt` int(11) NOT NULL, ")
  12.     len += formatex(szQuery[len], lenMax-len,"`Xp` int(11) NOT NULL, ")
  13.     len += formatex(szQuery[len], lenMax-len,"`Level` int(11) NOT NULL, ")
  14.     len += formatex(szQuery[len], lenMax-len,"`Kepesseg` int(11) NOT NULL, ")
  15.     len += formatex(szQuery[len], lenMax-len,"`Skes` int(11) NOT NULL, ")
  16.     len += formatex(szQuery[len], lenMax-len,"`Sgyuru` int(11) NOT NULL, ")
  17.     len += formatex(szQuery[len], lenMax-len,"`Spancel` int(11) NOT NULL, ")
  18.    
  19.     for(new i=0; i <= 4; i++)
  20.     {
  21.         len += formatex(szQuery[len], lenMax-len,"`SkillP%d` int(11) NOT NULL, ", i)
  22.     }
  23.     for(new i=0; i <= 9; i++)
  24.     {
  25.         len += formatex(szQuery[len], lenMax-len,"`Ring%d` int(11) NOT NULL, ", i)
  26.     }
  27.     for(new i=0; i <= 33; i++)
  28.     {
  29.         len += formatex(szQuery[len], lenMax-len,"`Pant%d` int(11) NOT NULL, ", i)
  30.     }
  31.     for(new i=0; i <= 34; i++)
  32.     {
  33.         len += formatex(szQuery[len], lenMax-len,"`Knife%d` int(11) NOT NULL, ", i)
  34.     }
  35.     len += formatex(szQuery[len], lenMax-len,"`Jatekosnev` varchar(32) NOT NULL,")
  36.     len += formatex(szQuery[len], lenMax-len,"`Id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  37.    
  38.     SQL_ThreadQuery(g_SqlTuple,"sql_update_account_thread", szQuery)
  39. }

Szerző:  BeepBeep [ 2018.11.20. 22:31 ]
Hozzászólás témája:  Re: Sql Tábla

regener írta:
Csak mert volt kedvem hozzá, többet nem lesz:
  1. public plugin_cfg()
  2. {  
  3.     new szQuery[2508] // nem lesz ez kevés?
  4.     new lenMax = charsmax(szQuery)
  5.     new len = 0
  6.    
  7.  
  8.     len += formatex(szQuery[len], lenMax, "CREATE TABLE IF NOT EXISTS `tsoh_save_system`")
  9.     len += formatex(szQuery[len], lenMax-len,"(`Aktivitas` int(11) NOT NULL, ")
  10.     len += formatex(szQuery[len], lenMax-len,"`Soul` int(11) NOT NULL, ")
  11.     len += formatex(szQuery[len], lenMax-len,"`Kaszt` int(11) NOT NULL, ")
  12.     len += formatex(szQuery[len], lenMax-len,"`Xp` int(11) NOT NULL, ")
  13.     len += formatex(szQuery[len], lenMax-len,"`Level` int(11) NOT NULL, ")
  14.     len += formatex(szQuery[len], lenMax-len,"`Kepesseg` int(11) NOT NULL, ")
  15.     len += formatex(szQuery[len], lenMax-len,"`Skes` int(11) NOT NULL, ")
  16.     len += formatex(szQuery[len], lenMax-len,"`Sgyuru` int(11) NOT NULL, ")
  17.     len += formatex(szQuery[len], lenMax-len,"`Spancel` int(11) NOT NULL, ")
  18.    
  19.     for(new i=0; i <= 4; i++)
  20.     {
  21.         len += formatex(szQuery[len], lenMax-len,"`SkillP%d` int(11) NOT NULL, ", i)
  22.     }
  23.     for(new i=0; i <= 9; i++)
  24.     {
  25.         len += formatex(szQuery[len], lenMax-len,"`Ring%d` int(11) NOT NULL, ", i)
  26.     }
  27.     for(new i=0; i <= 33; i++)
  28.     {
  29.         len += formatex(szQuery[len], lenMax-len,"`Pant%d` int(11) NOT NULL, ", i)
  30.     }
  31.     for(new i=0; i <= 34; i++)
  32.     {
  33.         len += formatex(szQuery[len], lenMax-len,"`Knife%d` int(11) NOT NULL, ", i)
  34.     }
  35.     len += formatex(szQuery[len], lenMax-len,"`Jatekosnev` varchar(32) NOT NULL,")
  36.     len += formatex(szQuery[len], lenMax-len,"`Id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY)")
  37.    
  38.     SQL_ThreadQuery(g_SqlTuple,"sql_update_account_thread", szQuery)
  39. }


Megelőztél, csak azért írtam le neki, hogy megtanulja.
De kihagytad a következő táblát és az elsődleges kulcsot, főleg ha azonosítóról van szó tessék mindig a tábla elejére írni a jövőben az átláthatóság miatt. ;)
Nem teszteltem. Nem is fogom. :)

  1. public plugin_cfg()
  2. {  
  3.     new szQuery[2048];
  4.     new lenMax = charsmax(szQuery);
  5.     new len = 0;
  6.    
  7.  
  8.     len += formatex(szQuery[len], lenMax, "CREATE TABLE IF NOT EXISTS `tsoh_save_system_s`");
  9.     len += formatex(szQuery[len], lenMax-len,"(`Server` int(11) NOT NULL, ");
  10.     len += formatex(szQuery[len], lenMax-len,"`Bolt` int(11) NOT NULL)");
  11.    
  12.     SQL_ThreadQuery(g_SqlTuple,"sql_update_account_thread", szQuery)
  13. }

Oldal: 1 / 1 Minden időpont UTC+02:00 időzóna szerinti
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/