Galvojau, ir niekaip nesugalvojau apie ką pamoką surašyti, maze bendruomenėje niekur neradau pamokos susijusios su MySQL (sa:mp skiltyje), todėl pabandysiu kuo plačiau papasakoti apie mysql duomenų krovimą, saugojimą, ši pamoka bus naudinga turbūt tik žmonėms, nemėgstantiems naujovių, ar norintiems įžengti į mysql naudojimą samp'e nuo paprastų dalykų. Ką gi, pradėkime.
MySQL duomenų krovimas
Ką gi, įsivaizduokime kad turime maždaug tokią mysql lentelę:
| Name | Money | Xp |
| Vardas1 | 12000 | 100 |
| Vardas2 | 14000 | 420 |
Įsivaizduokime jog mūsų nick'as yra "Vardas2" ir mums reikia išgauti mūsų XP. Kad pamoka ir liktų pamoka o ne skripto gabalas, prie kiekvienos eilutės prirašysiu ką ji atlieka(tiek kiek leis žinios :D).
new
masyvas[128], // Sukuriame masyvą, kuriame formatuosime MySQL užklausą.
name[MAX_PLAYER_NAME+1], // Sukuriame masyvą, į kurį išgausime mūsų nick'ą.
masyvas2[32], // Sukuriame masyvą kuriame laikysime gautą XP, kadangi mysql_fetch_field_row rezultatą gauną "string" a.k.a masyvo pavidalu, todėl rezultatą privalome saugoti į masyvą.
XP // Sukuriame INT(integer) kintamajį kuriame laikysime gautą "Xp" paverstą iš masyvo į int(integer) tipo rezultatą.
;
GetPlayerName(playerid, name, sizeof(name)); // Išgauname savo nick'ą ir įstatome jį į "name" masyvą.
format(masyvas, sizeof(masyvas), "SELECT Xp FROM zaidejai WHERE Name = '%s'", name); // Suformatuojame parašytą užklausą, jog mums reikės stulpelio Xp iš eilutės kurios stulpelyje Name yra "Vardas2".
mysql_query(masyvas); // Siunčiame užklausą
mysql_store_result(); // Pluginui liepiame išlaikyti duomenis kuriuos gavome atlikę užklausą.
mysql_fetch_field_row(masyvas2, "Xp"); // Liepiame pluginui perkelti "Xp" į sukurtą masyvą, kurį naudosime tolimesniems tikslams.
XP = strval(masyvas2); // Paverčiame masyvą į int(integer) ir įstatome į XP kintamajį.
mysql_free_result(); // Kadangi mums daugiau iš šios užklausos nieko nebereikia, todėl pašaliname rezultatą[-us] iš plugino, jog jis galėtų atlikti kitas užklausas. Būtent tai ir yra pagrindinis MySQL R5 versijos trūkumas, vykdant vieną užklausą, plugins negali vykdyti kitos kol iš jo atminties nebus pašalinta sena užklausa, t.y vienu metu pluginas gali vykdyti ne daugiau nei 1 užklausą, vien dėl to siūlyčiau pereiti prie MySQL R39+.
Baigėme pirmają pamokos dalį, dabar galime pereiti prie duomenų saugojimo (atnaujinimo).
Duomenų saugojimas(tiksliau įvardijus - esamų duomenų atnaujinimas).
Antrą kartą kintamūjų nebekursiu, naudosiu jau sukurtus aukštesnėje šios pamokos dalyje, ir įsivaizduosiu jog turiu sukūręs tą pačią MySQL lentelę naudotą pirmoje pamokos dalyje..
format(masyvas, sizeof(masyvas), "UPDATE zaidejai SET Xp = '%d' WHERE Name = '%s'", XP, name); // Sukuriame užklausą kurią įšvertus į žmogišką kalbą gautume tokį rezultatą "Plugine, prašau atnaujink lentelę 'zaidejai', pakeisk Xp į mano duotą rezultatą ten kur 'Name' yra Vardas2".
mysql_query(masyvas); // Vykdom užklausą.
Na ir štai! Pamoka baigta, kaip pastebėjote duomenų krovimas atrodo kiek didokas palyginus su saugojimu, bet laikui bėgant labai lengva viską atsiminti, mano manymu R5 yra papraščiausia MySQL versija.
Kilus klausimams - prašau rašykite šioje temoje, pasistengsiu į visus juos atsakyti, jei turite kažkokių pasiūlymų ar radote klaidų, darykit tą patį :D
Good luck ;)
Šita tema neturi atsakymų! Būk pirmas!