Ez a szekció lehetővé teszi a felhasználó által írt összes hozzászólás megtekintését. Vedd figyelembe, hogy csak azokba a fórumokba írt hozzászólásokat látod, amelyekhez hozzáférésed van.
Oldalak: [1]
2
Kérdések, Segítség / Külső merevlemez vásárlása« Dátum: 2016. július 27. - 14:55:21 »
Sziasztok!
A segítségeteket vagyis a véleményeiteket szeretném kérni az alábbiban: Jelenleg van egy linux alapú szerver-gépem amit igen intenzíven használatban van a nap 24 órájában, nem kis adatforgalommal. A belső tárolói lassan meg telnek, és már hely sincs hogy újat vegyek vele, pénzem meg hogy nagyobbat a régiek helyett. Arra gondoltam, hogy úgy is van rajta 3-4db USB 3.0-s port és vehetnék külső meghajtókat is, ebben szeretném hogy segítsetek. Nos eddig Western Digital és ADATA meghajtókkal még nem volt problémám és most ezek üzemelnek belső tárolóként, ezért már ki is néztem 3 külső meghajtót csak nem tudok közülük választani. (Ha esetleg tudtok jobbat kérlek írjátok le azt is hogy miért (úgy értem akár márkán belül vagy más márka)) Árukereső összehasonlított termékeim ami közül választani szeretnék Valami olyasmit keresek ami: -bírja a terhelést!!!!!!! (-(átviteli sebessége nagyobb mint 30-40MB/s)) -max 30.000ft/db -500-1000GB (vagy több) Köszönöm, hogy elolvastál! Ha esetleg lenne tapasztalatod/ötleted/véleményed szívesen várom! (Ui.: Csakis kizárólag külső meghajtókban gondolkozom jelenleg) 3
Kérdések, Segítség / Matematikai feladvány« Dátum: 2016. január 14. - 19:15:17 »
Sziasztok!
Minap ezzel a problémával szembesültem: Egy tört számlálójához hozzáadok 3-at így az érték 1 lesz majd a számlálóból kivonok hetet és a nevezőhöz hozzáadok 2-t, így 1/5-t kapok. Melyik ez a szám? Nos akárhogy akartam ezt megoldani sehogy se sikerült. Gondolom nincs megoldása, de akkor miből jött ki neki az 1/5???! (Azt szeretném, hogy megerősítenétek-e benne, hogy nincs megoldása, vagy ha van mi.) Dupla hozzászólás automatikusan összefûzve. ( 2016. január 14. - 21:30:50 ) Ben: 5/8 számlálójához +3 = 8/8 (az érték 1) számlálóból kivonok 6-ot = 2/8, majd nevezőhöz hozzáadok 2-t = 2/10 = 1/5[/quote] 4
SA-MP: Szerverfejlesztés / Játszott idő mentése« Dátum: 2016. január 10. - 01:03:23 »
A scriptről:
-Menti a játszott időt (másodpercekben) dini segítségével. -A scriptfiles mappában hozz létre egy users nevű mappát, és már nincs más dolgod, mint betölteni ezt. -Egyszerű, rövid, hasznos, és még nem nagyon találkoztam ilyennel. Gondolom ez majd jól jöhet valakinek ezért megosztom veletek. Szerintem hasznosabb mint szórakozni egy timerrel. (Bár ha bírja a vasad...) +Le tudod kérni a játszott idődet. Parancsa: /jatszott_idom Letöltés (<a href=\"http://pastebin.com/uF240VMz\">Pastebin</a>) Letöltés (<a href=\"http://www.mediafire.com/download/gfohuk9o3e1687x/time.pwn\">.pwn</a>) Letöltés (<a href=\"http://www.mediafire.com/download/3e6q5q969m1lda6/time.amx\">.amx</a>) Forrás kódja:
5
Segítségkérés / String mint változó?« Dátum: 2015. december 22. - 20:18:34 »
Sziasztok! Azzal a problémámmal szeretnék a fórum közössége felé fordulni, hogy, bárhogy is szeretném nem tudom megoldani a következő kivitelezését:
Ugyanis a következő hibát kapom: error 033: array must be indexed (variable \"-unknown-\") a strval(condition); meg tudná-e oldani a problémám? (azért kérdezem, mert sajnos tesztelni nem tudok egy hosszú ideig ->(Köszönöm a megértést!)) 6
Leírások/Útmutatók / Adatbázis kezelés SQL nyelven« Dátum: 2015. október 30. - 17:21:20 »Adatbázis kezelés SQL nyelven Bevezető Az SQL (Structured Query Language - Strukturált Lekérdező Nyelv) relációs adatbázisok kezelésére alkalmas, szabványos lekérdező nyelv, amelynek fejlesztése az 1970-es években kezdődött az IBM keretein belül, igaz ekkor még SEQUEL-nek nevezték. (Structured English QUEry Language) Tehát az SQL nyelv adatbázisok kezelésére szolgál. Egy relációs adatbázisban az adattárolás alapjait a táblák jelentik. Egy adatbázis általában több táblából áll. A táblák a logikailag összetartozó adatok sorokból és oszlopokból álló elrendezése. A táblák sorait adatrekordoknak, oszlopait rekordmezőknek nevezzük. SQL-en belül vannak olyan műveletek melyek nem túl fontosak számunkra, amikkel táblákat tudunk létrehozni vagy törölni, mivel ezeket nem „kódokon” keresztül szoktuk csinálni, hanem a phpMyAdmin-ban vagy valamilyen hasonló grafikus felületű programban. A gyakran elvégzett műveletek túlnyomó részt az alábbi négy alapműveletre korlátozódnak: - SELECT: tábla sorainak beolvasása - INSERT: sorok beillesztése a táblába - UPDATE: tábla sorainak módosítása - DELETE: tábla sorainak törlése Pár nyelvtani szabály: A nyelvben az utasításokat mindig pontosvessző választja el egymástól. Az olvashatóság és az eligazgatóság érdekében a kulcsszavakat általában nagybetűvel szokás írni, bár az utasítások értelmezésénél nem tesz különbséget. (kulcsszavak = pl: a fent említett select, insert, update, delete) A táblák és oszlopok neveit a biztonság érdekében rakjuk tick-ek közé (pl. `username`)! Hogy miért? Mert ha esetleg véletlenül egy kulcsszavat használunk oszlop vagy tábla névnek, akkor a tick-ek nélkül hibás lesz a kód. (` = tick = ALT GR + 7) A karakterláncokat aposztrófok közé kell írni. Ha egy karakterláncban aposztróf szerepel, azt ( \\ ) escape karakterrel (ALT GR + Q) írhatjuk bele. Pl: \\’ A számokat természetesen nem muszáj aposztróf közé írni. Táblázatok kezelése Mint említettem egy adatbázisban több táblát is létrehozhatunk pl: felhasználók, adminok, lányok, fiúk, diákok, osztályok, állatok, növények stb… Vegyünk is alapul egy egyszerű példát! Mondjuk az alábbi tábla neve „versenyzok”
A SELECT utasítás A SELECT utasítással a táblázatból válogathatunk ki adatokat pl: SELECT nev FROM versenyzok; Eredményül egy ún. eredménytáblát kapunk. Lásd:
Használata: SELECT oszlop_nevek FROM tábla_neve; Miért írtam, hogy oszlop nevek? Mert nem csak egy oszlopot kérdezhetünk le egyszerre, hanem többet is, amit vesszővel kell elválasztani pl: SELECT nev, szuletesi_ev FROM versenyzok; Az eredmény:
SELECT * FROM versenyzok; Ezzel a lekérdezéssel az összes „rekord” (6) tartalmát megtudtuk. Az eredménytáblánk most azonos az „alap” tábláéval. Lekérdezés eredményének szűkítése(WHERE) A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan. Az eredménytáblába csak azok a sorok fognak bekerülni, amelyek teljesítik a feltételeket. Ha például azt akarjuk, hogy akik 1998 után születtek azok kerülhessenek be eme szent táblázatba, akkor a feltétel: `szuletesi_ev` > 1998. Ahhoz, hogy összetettebb feltételeket tudjunk írni, nemsokára megismerkedünk a fontosabb operátorokkal. Használata: SELECT oszlop_nevek FROM tábla_neve WHERE oszlopra vonatkozó feltétel; Jelen esetben a példánk: SELECT nev FROM versenyzok WHERE szuletesi_ev > 1998; Eredményül csak Kiss Virág és Bajuk Petra fog szerepelni Példa(2): SELECT nev FROM versenyzok WHERE szuletesi_ev = 1999; Eredményül, most szintén csak Kiss Virág és Bajuk Petra neve fog szerepelni. Példa(3): SELECT nev FROM versenyzok WHERE neme = ’nő’; Eredményül, most értelem szerűen csak azoknak a nevét fogja ki listázni akinek a neme nő. !!FIGYELEM!!! Ha szöveg alapján szeretnéd szűkíteni a keresésedet akkor használj aposztrófot! Mint a hármas példánál tettem. Műveleti jelek/Operátorok a WHERE feltételben A WHERE kulcsszó után feltételeket adhatunk meg a sorokra vonatkozóan.
A WHERE feltételek összekapcsolása Emlékezzünk, hogy a WHERE kulcsszó után megadhattunk egy feltételt, amely alapján szűrtük az eredményhalmazt. Lásd: SELECT nev FROM versenyzok WHERE szuletesi_ev = 1994; Azonban e feltételeket össze is tudjuk kapcsolni különböző ún. logikai műveletekkel. Például AND (és), illetve OR (vagy). Az OR (vagy) és AND (és) műveletek Használatuk: OR SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték OR oszlop_neve műveleti_jel érték; AND SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve műveleti_jel érték AND oszlop_neve műveleti_jel érték; Példa (OR művelet) SELECT * FROM versenyzok WHERE szuletesi_ev=1994 OR szuletesi_ev=1999; Eredményül most megkaptuk azoknak a versenyzoknek az adatait akik 1994ben vagy 1999ben születtek. Lásd:
SELECT * FROM versenyzok WHERE nev LIKE \'Kiss%\' AND szuletesi_ev >= 1990; Eredményül most megkaptuk azoknak a versenyzoknek az adatait, akiknek a vezetéknevük (fogalmazzunk most így) Kiss-sel kezdődik és a születési évük 1990 vagy nagyobb. Ugye e szerint a táblázatunk most így nézne ki a gyakorlatban:
Első kérdésem: Ha szerepelne a táblázatomban egy Kis Márk nevű versenyző, aki 1991ben született, akkor az szerepelhet-e az eredménytáblázatomban? NEM. Miért? Mivel a LIKE ’Kiss%’ kifejezés azt jelenti, hogy a Kiss kifejezés után bármi állhat, de csak azután! A mi esetünkben a Kis Márk nevű versenyző egy s-sel írja a nevét, ami után egy szóköz áll, már itt buktuk a feltétel teljesülését, hiába teljesül az a feltételünk hogy a születési éve 1990 vagy nagyobb. Második kérdésem: Ha szerepelne a táblázatomban egy Kissert József nevű versenyző, aki 1989ben született, akkor az szerepelhet-e az eredménytáblázatomban? NEM. Miért? Nézzük csak a lájkos feltételünk teljesült, mert azt adtuk meg, hogy a Kiss után bármi lehet. Értelem szerűen akkor most a második feltételünk nem teljesült. Miért? Mert akárhogy számolom a 1989 nem nagyobb, mint 1990… Harmadik kérdésem: Ha szerepelne a táblázatomban egy Kiss Ferenc nevű versenyző, aki 2005ben született, akkor az szerepelhet-e az eredménytáblázatomban? IGEN. Miért? A \"lájkolós\" és a második feltételünk is teljesült. Negyedik kérdésem: Ha a harmadik kérdésem teljesült akkor kinek vagy kiknek az adatait kaptuk meg? Kiss Virág és Kiss Ferenc Példa (AND művelet 2) SELECT * FROM versenyzok WHERE azonositoja <> 69069 AND szuletesi_ev > 1994; Eredményül most megkaptuk azoknak a versenyzőknek az adatait, akiknek az azonosítójuk nem egyenlő 69069-cel és születési évük nagyobb, mint 1994. Lásd:
BETWEEN ... AND művelet Ez ismerős már nem? „Műveleti jelek/Operátorok a WHERE feltételben” című résznél már találkozhattunk vele. A BETWEEN … AND műveletet akkor használjuk, ha egy intervallum alapján akarjuk szűkíteni a feltételt. Használata: SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve BETWEEN érték1 AND érték2; Példa (1) SELECT * FROM versenyzok WHERE szuletesi_ev BETWEEN 1996 AND 1999; Eredményünk:
Ez a művelet azonban nem csak számok esetén működik, akár kilistázhatjuk azon versenyzők nevét is, akik ábécésorrendben Bajuk Petra és Kiss Virág között helyezkednek el, a következő módon: SELECT * FROM diakok WHERE nev BETWEEN \'Bajuk Petra\' AND \'Kiss Virág\'; Eredményünk:
Bár nem hiszem, hogy ez a probléma bárkit is veszélyeztetne, ugyanis mi mind értelmes lények vagyunk, és előbb gondolkodunk, aztán cselekszünk. Vagyis előbb tesztelünk, és csak utána nyomjuk élesbe, ha minden jó. Az IN művelet Az IN műveletet akkor használjuk, ha az alapján szeretnénk szűkíteni a keresésünket, hogy a mező értéke egy adott felsoroláshalmazba tartozik-e. Használata SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve IN (érték1,érték2,érték3, ...) *Az érték lehet egy szöveg is illetve szám is. !Ne felejtsd el, hogy a szöveget aposztrófok közé kell rakni! Nem tudom, hogy észrevetted a hasonlóságot, de majdnem olyan mint az OR művelet, csak itt több értéket is megadhatunk. Példa SELECT * FROM versenyzok WHERE szuletesi_ev IN (1996,1999); Eredményül most megkaptuk azoknak a versenyzőknek az adatait akik 1996ban illetve 1999ben születtek. Lásd:
A NOT feltétel A NOT feltételt akkor használjuk, ha arra az eredménytáblára vagy halmazra van szükségünk, amelyt a feltétel tagadásával kapnánk. Használata SELECT oszlop_nevek FROM tábla_neve WHERE oszlop_neve NOT művelet; Példa SELECT * FROM versenyzok WHERE szuletesi_ev NOT BETWEEN 1996 AND 2000; Eredményül most megkaptuk azoknak a versenyzőnek az adatait akiknek a születési évük nem tehető 1996 és 2000 közé. Lásd:
Először is, mint említettem a rendszer amivel dolgozunk MySQL alapú, ezért a BETWEEN ... AND művelete intervalluma zárt. (matematikai jele: [x;y] ) Ez azt jelenti, hogy az első érték és az utolsó érték is még beletartozik az intervallumunkba. Tehát azok a versenyzők adatai nem szerepelhetnek az eredménytáblázatba akik 1996, 1997, 1998, 1999, 2000-ben születtek. Az INSERT INTO utasítás Az INSERT INTO utasítást akkor használjuk, ha egy meglévő táblához szeretnénk adatokat hozzáadni. Használata INSERT INTO tábla_neve (oszlop_neve1,oszlop_neve2,oszlop_neve3, ...) VALUES (érték1, érték2, ...); Megjegyés: Ha mindenen mezőbe szeretnénk értékeket megadni, akkor nem szükséges felsorolni az összes oszlop nevét. INSERT INTO tábla_neve VALUES (érték1, érték2, érték3, érték4, ...); Példa (1) Elvileg van nekünk egy \'versenyzok\' nevű táblánk, és mondjuk még csatlakozni szeretne 2 ember. Adataik a következők: Név: Molnár Zoltán Neme: férfi Születési év: 1999 Azonosítója: 81721 Név: Tóth Edina Neme: nő Születési év: 1997 Azonosítója: 92853 Rendben most ezeket az adatokat szépen felvisszük az adatbázisunkba és a megfelelő táblázatunkba. INSERT INTO versenyzok (nev,neme,szuletesi_ev,azonositoja) VALUES (\'Molnár Zoltán\',\'férfi\',1999,81721); A következő versenyző adatait vagy az előzőt is feltölthetjük a következő példa alapján, mivel az összes mező értékét megadtuk. INSERT INTO versenyzok VALUES (\'Tóth Edina\',\'nő\',1997,92853); Példa (2) Mi van akkor, ha hiányzik egy adat? Nem kell pánikba esni, hiszen ettől még feltölthetjük az adatbázisba amit szeretnénk. Lásd: Név: Nagy Judit Neme: nő Azonosítója: 99921 Kódunk: INSERT INTO versenyzok (nev,neme,azonositoja) VALUES (\'Nagy Judit\',\'nő\',99921); Most a táblázatunk valalhogy így nézne ki:
Az UPDATE utasítás Az UPDATE utasítást akkor használjuk, ha szeretnénk módosítani a táblázatunk egyes rekordjainak a tartalmát. Használata UPDATE tábla_neve SET oszlop_neve1=új_érték1, oszlop_neve2=új_érték2, ... WHERE oszlop_neve=érték; Példa Ebben a példánkban most szeretnénk megadni Nagy Judit születési évét (amit nem sikerült megtudnunk az előzőekben) UPDATE versenyzok SET szuletesi_ev=1996 WHERE azonositoja=99921; Most a táblázatunk valalhogy így nézne ki:
Lásd: UPDATE tábla_neve SET oszlop_neve = NULL WHERE oszlop_neve=érték Amikre figyelni kell: - Figyeljünk arra, ha a feltételünknek több rekord is megfelel, akkor a módosítás mindegyikken végrehajtódik. - Figyeljünk arra, hogy mindig adjunk meg feltételt, mert ha nem akkor az egész oszlopnuk értékei megváltozhatnak. A DELETE utasítás A DELETE utasítást akkor használjuk, ha egy tábla tartalmát vagy rekordot/kat szeretnénk törölni. Használata DELETE FROM tábla_neve WHERE oszlop_nev = érték); Megjegyés: Ha a tábla teljes tartalmát szeretnénk törölni akkor elég csak a következőeket használni: DELETE FROM tábla_neve; Példa DELETE FROM versenyzok WHERE azonositoja = 23965); Eredményül, most törölve lett az a versenyző összes adata akinek az azonosítója 23965 volt. Az ALIAS használata Ha az eredménytáblában nem az eredeti (tábla/)oszlopneveket szeretnénk látni, akkor használhatunk helyettük úgynevezett aliasokat, vagyis állneveket is. Használata(oszlopnevek megváltoztatásához): SELECT oszlop_neve1 AS álnév1, oszlop_neve2 AS alnév2 FROM tábla_neve Példa A táblázatunk mondjuk legyen:
SELECT nev AS Name, szuletesi_ev AS Birthdate FROM tabla; Az eredményünk a következő:
Lásd: SELECT nev AS [Teljes neve], szuletesi_ev AS \'Szuletesi ev\' FROM tabla; Alias használata(táblanevek megváltoztatásához): SELECT oszlop_neve(i) FROM tábla_neve AS álnev; Példa Figyelem! - Az alábbi példa két táblázatot is összekapcsol (JOIN), melyről lentebb olvashatsz! Varsalok nevű táblázatunk:
Parancsunk: SELECT r.rendelesID, r.elado_neve, v.nev AS \'Vasarlo Neve\' FROM Vasarlok AS v, Rendelesek AS r WHERE v.nev=\"Horváth Imre\" AND v.azonosito=r.vevoID; Eredményünk:
Táblák összekapcsolása(JOIN) Az adatbáziskezelés egyik leggyakrabban használt műveletei között mindenképpen meg kell említeni az összekapcsolás műveletét is. E művelet fontosságának egyik legfőbb oka az, hogy az adatbázis tervezése során, az információkat (az átláthatóság szempontjából) több táblára is szét bontjuk. (lásd előző példa) Egy összetettebb lekérdezéshez szükséges információk több táblában szétszórva helyezkednek el, így a lekérdezés során össze kell gyűjteni ezen adatokat a különböző táblákból, ahol az összetartozás bizonyos mezők értékeinek kapcsolatán alapszik. Azt a folyamatot, amikor több táblából származó adatokból állítunk elő egy újabb eredménytáblázatot, összekapcsolásnak, egyesítésnek vagy join-nak nevezzük. Négy ismert fajtája/típusa van: - INNER JOIN: Azokat a sorokat kérdezi le ami mindkét táblában létezik. - LEFT JOIN: Visszatér a bal oldali tábla minden rekordjával és a hozzá tartozó jobb oldali tábla rekordjával ha létezik, különben NULL(üres). - RIGHT JOIN: A LEFT JOIN ellenkezője, a jobb oldali tábla minden sorát visszaadja és a hozzájuk tartozó bal oldali tábla sorát ha van. - FULL OUTER JOIN: Az előző két típus kombinálása, mindkét táblából visszaadja az összes sort. Tudnunk kell azt is hogy az összekapcsoláskor megadhatunk az ON paraméter után egy feltételt is, ami alapján összeválogatja a sorokat. Ha viszont nem adunk meg ilyen feltételt, akkor minden sort minden sorral össze fog párosítani, ez két kétsoros táblánál 4 sort, két háromsoros táblánál 9 sort, egy három és négy soros táblánál 12 sort ad vissza. Tehát a sorok száma a két tábla sorainak a számának a szorzatával egyezik meg. (ez az ún. Descartes szorzat) Gondoljunk bele, hogy egy 100 és egy 200 soros táblánál, 20000 sort kapunk vissza, míg ha használjuk a ON feltételét átlagban jóval kebesebb sorról beszélhetünk. (hamarosan kitérünk erre is) Tehát az SQL-ben két táblázat egyesítésének legegyszerűbb formája, amikor a két táblázat Descartes szorzatát képezzük. Két táblázat Descartes szorzatának előállításához a következő (egy nagyon bonyolult) SQL utasítást kell kiadni: SELECT * FROM tabla1, tabla2; Persze a most létrehozott ereménytáblázatot tetszőlegesen tovább lehet alakítani, mert nagyon ritka azaz eset mikor szükségünk is van mind két táblázat rekordjainak teljes Descartes szorzatára. SELECT tabla1.oszlop_neve, tabla2.oszlop_neve FROM tabla1, tabla2 WHERE feltétel; Példa Ebben a példában most szeretnénk egy listát készíteni arról, hogy egy iskolában melyik diák, melyik osztályba jár, és ki az osztályfőnöke. diakok nevű táblázatunk:
SELECT diakok.nev, diakok.osztaly, tanarok.nev FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok; Ez vajon jó lesz lekünk? :nono: Persze a kóddal nincs semmi baj de az átláthatóság miatt jobb lenne ha az eredményhalmazunkban, nem lenne két \"nev\" nevű oszlop. Szóval használjuk a már korábban megismert ALIAST-t: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok, tanarok WHERE diakok.osztaly=tanarok.osztalyfonok; Íme az eredményünk:
Van ennek egy másik módja is: mégpedig a JOIN. Megjegyzés: Ez a példa hasonló azzal a példával, ami az Aliasba is szerepelt. (rendelesek,vasarlok) INNER JOIN Az INNER JOIN használatával, a lekérdezés eredményébe nem kerülnek bele azon tabla1-beli elemek, amelyeknek nincs megfelelőjük a tabla2 nevű táblában. Használata nagyon egyszerű: SELECT oszlop_neve(i) FROM tabla1 INNER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Az INNER JOIN hasonlóan(ugyanúgy) működik, mint a JOIN. Ennek ellenére a rendezett, átláthatósághoz javaslom az INNER JOIN használatát.) Példa SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev as osztalyfonok FROM diakok INNER JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; BUMM! Az eredményünk ugyanaz lesz, mint az eggyel korábbi esetben. Az INNER JOIN használata annyival jobb a táblák WHERE záradékon keresztül történő (össze)kapcsolásánál, hogy így külön helyen szerepelnek a kapcsolatokat leíró feltételek és a lekérdezés eredményét szűkítő feltételek, és ezáltal a lekérdezés SQL kódja áttekinthetőbb lesz. LEFT JOIN
Ez annyiban különbözik az INNER JOIN-tól, hogy amikor összekapcsolunk két táblát és ha nincsen megfelelő érték az első helyen lévő táblába a második helyen lévő táblához, akkor kiegészíti azokat NILL értékekkel. Ez akkor kelhet, amikor minden sornak szerepelni kell az eredményben, még akkor is, ha nem tartozik hozzá érték. Használata: SELECT oszlop_neve(i) FROM tabla1 LEFT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 LEFT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Néhány adatbázisnál a LEFT JOIN helyett LEFT OUTER JOIN-t kell használni) Példa Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban nem szerepel egy ember. (Aki éppen a 5.C osztályfőnöke) Kódunk: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok LEFT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; Eredményünk:
RIGHT JOIN
A RIGHT JOIN pedig pont azt teszi lehetővé, hogy a második táblában lévő összes adatot jelenítsük meg, függetlenül attól, hogy az első táblában van-e hozzátartozó mező. (ergo: ellentétesen viselkedik mint a left) Használata: SELECT oszlop_neve(i) FROM tabla1 RIGHT JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; Vagy: SELECT oszlop_neve(i) FROM tabla1 RIGHT OUTER JOIN tabla2 ON tabla1.oszlop=tabla2.oszlop; (Jótudni! - Néhány adatbázisnál a RIGHT JOIN helyett RIGHT OUTER JOIN-t kell használni) Példa Tegyük fel van egy diakok és egy tanarok nevű táblázatunk, viszont a tanárok nevű táblázatban van olyan tanár amelynek nincs osztálya. Kódunk: SELECT diakok.nev AS diak, diakok.osztaly, tanarok.nev AS osztalyfonok FROM diakok RIGHT JOIN tanarok ON diakok.osztaly=tanarok.osztalyfonok; Eredményünk:
Ajánlott link: https://sampforum.hu/index.php?topic=9285.0 Forrásaim: http://www.w3schools.com/ http://php.webprog.biz http://aries.ektf.hu http://sql.misi.eu http://www.beregszaszi-debr.sulinet.hu http://www.sqlcourse.com https://hu.wikipedia.org/wiki/SQL Gondolkodási módom: Kell az alap mielőtt nekikezdenénk a programjaink megírásának. Természetesen ezeket az információkat bárki elérheti más oldalakon, akinek jó barátja a kereső mező 7
Leírások/Útmutatók / [TUT] MySQL Register/Login rendszer« Dátum: 2015. október 28. - 20:11:17 »
Sziasztok! Ma készültem nektek egy kis bemutatóval, hogy hogyan lehet készíteni egy bejelentkező/regisztrációs rendszert, ami MySQL-en alapul. Ez menteni fogja a játékos pénzét, pontját, halálait, öléseit. Valamint a felhasználóknak lesz egy lejárati dátumuk is, mely után a rendszer törölni fogja őket. Nos hogy ezt megvalósítsuk erre 2 (vagy több) mód is létezik. Ezt időközben el fogom mondani. Előkészületek: Szükségünk lesz egy MySQL és egy sscanf pluginra. <a href=\"http://forum.sa-mp.com/showthread.php?t=122983\">MySQL Plugin</a> Direkt link windows felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/windows/plugin-R6-win32_vs9.rar\">KATT</a> Direkt link linux felhasználóknak <a href=\"http://files.g-stylezzz.com/mysql/rel/R6/debian5/mysql.so\">KATT</a> <a href=\"https://dl.dropboxusercontent.com/u/102595204/sscanf-2.8.2.zip\">sscanf Plugin</a> Valamint ugye szükséged lesz egy MySQL adatbázisra amit phpmyadmin segítségével webes felületen elérhetsz. Rendben most elvileg meg van mindenünk és hozzá is kezdhetünk! Első lépés: - Táblázat létrehozása az adatbázisunkban <a href=\"http://s23.postimg.org/btn76vly3/image.png\">Kép teljes méretben</a> Vagy választasz egy adatbázist > SQL menüpont > Kódot beilleszted > Indít
Most lett egy táblázatunk: <a href=\"http://s14.postimg.org/7z5rt9sup/image.png\">Kép teljes méretben</a> Második lépés: - A \"scriptelés\" !Ne felejtsük hozzáadni a script elejéhez: #include <a_mysql> és #include <sscanf2> Mielőtt hozzá kezdünk definiáljunk pár dolgot csak a rend kedvéért!
Most az OnGameModeInit() vagy az OnFilterScriptInit() alá írjuk be a következő sorokat:
Most elvileg sikeresen „csatlakoztunk” az adatbázisunkhoz. Tökéletes! Most csekkoljuk le, hogy ha egy felhasználó fellép, az szerepel-e az adatbázisunkban. Majd az eredmények megfelelően, hozzon elő egy dialógust mely megkéri, hogy regisztráljon vagy jelentkezzen be, ha regisztrálva van.
Remek ezzel is megvolnánk. Most készítsük el az űrlap(dialógus) feldolgozását:
Még mielőtt folytatnánk, hozzunk létre változókat a felhasználó számára. Írjuk a mód elejére:
Következő lépésben „értelmet” adunk a pName és a LoadStats parancsunknak/függvényünknek.
Ez most szép és jó, de hát ha változás történt a felhasználónkkal azt nem menti a kilépésekor :\'( -Most akkor mit is szeretnénk csinálni? -Szeretnénk menteni a pontját, pénzét, öléseit, halálait, no meg, meg kéne valahogy hosszabbítani a \"lejárati dátum\"-ot A kód:
Harmadik lépés: - Feladat ütemezés/Esemény hozzáadása Rendben most van egy scriptünk, ami adatokat kér és közöl az adatbázissal. Ha jól látom most minden tökéletes, kivéve a „lejárati dátumot”. Mivel hiába van, az ott nekünk, még nem csinál semmit Ezért most kattintsunk az adatbázisunk nevére > SQL menüpont és illesszük be a következő kódot:
Eredmény: <a href=\"http://s17.postimg.org/z5lbf5qen/image.png\">Kép teljes méretben</a> - Ez most mire volt jó? - Létrehoztunk egy eseményt mely ismétlődni fog minden hatodik órában. (Persze ezt át írhatod) - Mi is tulajdonképpen ez az esemény? - Ugye ez szépen lefut nekünk minden hatodik órában, majd szépen törli az olyan felhasználók adatait melyeknek a \"lejárati dátuma\" kisebb mint a mai. Példa: Mai dátum: 2015-09-19 Géza lejárati dátuma: 2015-09-18 Törlődni fog? IGEN Gizi lejárati dátuma: 2015-09-19 Törlődni fog? NEM Hát igen itt van a bibi, ha nincs jogosultságod ilyenre. Hogy mit tehetsz ez ügyben? A szolgáltató vagy a rendszer gazda felé fordulsz, hogy szeretnél létrehozni egy ilyen eseményt/időzítőt a rendszerben, ami lefut bizonyos időközönként. Ha ez nem lehetséges, ugye úgy kezdtem, hogy erre több mód is van. Nos a másik mód az lenne , hogy a scriptben egy időzítő segítségével vagy egy függvény segítségével lefutatjuk ezt a sort: DELETE FROM ` adatbazisneve `.`users` WHERE `users`.`ExpirationDate` < CURDATE(); >>> new Query[256]; Remélem nem felejtettem ki semmit, használjátok egészséggel! :thumbsup: Valamint a kérdéseiteket vagy ha bármiféle problémátok lenne bátran jelezzétek kommentben! Vélemény? Ez az első tutorialom, remélem nem szúrtam el nagyon és érthető voltam. Nem azt mondom hogy nézzétek el a hibáim(de remélem nincs ), mert akkor miért is raktam ezt ki?
További jó fórumozást és szép napot! _[G]M[K]_Sh1ft_ 8
Segítségkérés / Float használata« Dátum: 2015. október 15. - 21:17:17 »
Sziasztok!
Röviden: Olyat szeretnék csinálni, hogy létrehoztam egy változót amely két dimenziós tömbben tárolja az adatokat. Lásd: new Float:BC01[3][4] = {{2795.8096,1232.6162,10.4726,269.1470},{2979.5374,1293.6962,18.2394,1.4599},{2878.9316,1590.8331,10.5257,87.8260}}; Majd szeretném megváltoztatni a BC01(első sorban lévő, 4 értéket). Arra gondolok hogy ugye létrehoztam a változót, majd az OnPlayerConnect fgv. meghívásakor: BC01[1][4]={{0.0,1.1,2.2,3.3}}; Vagy előbb kéne létrehozni egy változót, majd utána értéket adni neki? 9
Hivatalos fórumról áthozott szkriptek / Emergency mod - Villogó lámpák« Dátum: 2015. július 18. - 18:56:24 »
Sziasztok!
A mai nap \"editeltem\" egy olyan scriptet, amely hasonló a cleo módokban található emergency módokhoz. (Magyarul a jármű első fényszórói szépen villognak ) Eredeti Link: http://forum.sa-mp.com/showthread.php?t=571926 Amit érdemes róla tudni: Jelenleg úgy van beállítva, ha a jármű elkezd szirénázni, akkor a lámpa is villog, ha kikapcsolja akkor nem villog. !De ha át állítod \"#define plo 0\"-át 1-re akkor az összes olyan jármű (függetlenül hogy van szirénája, vagy nincs), akkor a 2-es gombbal is tudod de/aktiválni a villogást. Tudom, lehet egyszerű a script, de lehet valakinek majd jól jön, és még nem nagyon találtam itt. Lássuk is a scriptet:
10
SA-MP: Szerverfejlesztés / Nagybetű tiltása/engedélyezése« Dátum: 2015. április 11. - 14:49:43 »
Sziasztok!
Ez egy olyan FS, mely segítségével ki és be tudod kapcsolni a chatben a nagybetűk használatát, vagy egy adott playernek. Jelenleg ezeket a nagy betűket alakítja át a script: (EN) A-Z, Ö, Ü, Ó, Ű, Ő, Ú, É, Á, Í, Ä, Ë Készítési idő: kb 5-15 perc RCON Parancsok: - /caps [playerid] -ezzel a paranccsal tudod ki-be kapcsolni egy játékosnak a nagybetűk használatát - /gcaps -ezzel a paranccsal tudod ki-be kapcsolni a nagy betű használatát (Mindenkinek) Letöltés: http://www.mediafire.com/download/tp6sm6s3avb0rc9/caps.rar Hasznos lehet: https://sites.google.com/site/szandras23/home/alt-codes-html-codes---ascii-special-characters-magyar-ekezetes-betuk-alt-kod-segitsegevel
11
SA-MP: Szerverfejlesztés / Hírdetés elleni védelem« Dátum: 2015. január 02. - 19:52:44 »
Sziasztok!
A scriptet én készítettem, mint a címből is biztosan kiderült hírdetés elleni védelmre jó. (Tesztelve) Működése: Ha a játékos a chatbe IP címet ír akkor bannolja. Akkor is bannol ha a(z) IP cím közepén van egy betű mivel, akkor bannol ha meg található a \"player\" által írt szövegben: -3 pont ÉS 1 kettős pont ÉS 9-nél több szám (Ami egy IP címnek felel meg) Na de mivan ha nem csak egyet ír? A scriptet arra is írtam hogyha 9-nél több számot ír a chatbe akkor ne jelenítse meg a szöveget és hiba üzenetet küldjön neki. A scriptnek szükséges, hogy létrehozzatok egy mappát és egy jegyzet tömböt (.txt kiterjesztéssel, de ha letöltitek csak \"át kell húzni\") Szükséges elérési útvonal: [szervered mappája]/scriptfiles/slogs/Hirdetesek.txt Megjegyzésem: A script hasznos az esetek 90%-ban. Mivel nincs tökéletes védelem véleményem szerint. A script lehet egyszerűnek tűnik (mert az is), de lehet jó lesz valakinek. Link: http://www.mediafire.com/download/m09kjw22ql74n9z/HirdetesElleniVedelem.rar Kód:
12
Szkript kérések / AKA rendszer« Dátum: 2014. április 27. - 16:46:11 »
Üdv!
Sziasztok szükségem lenne aka rendszerre, tehát ha fel jön egy player írja ki rcon adminnak hogy \"XY feljött. (aka: Nevei)\" 13
SA-MP: Szerverfejlesztés / Vip rendszer« Dátum: 2014. április 25. - 21:59:28 »
Sziasztok!
Pár nappal ezelõtt készítettem egy VIP rendszert remélem tetszeni fog. Annyi a hibája hogy ha Vipet adok vkinek akkor csak akkor adja meg neki mikor újra feljön. És ahanyas szintet állítok be y playernek olyan lesz az én szintem is. Ez a két hibája van. VIP 1-es szintû parancsok: /varmour /vcar /vcolor /vfix /vheal /vjetpack /vlockcar /vgoto /vsetmytime /vsetmyweather /vunlockcar VIP 2-es szintû parancsok: /vann /varmour /varmourall /vcar /vcolor /vfix /vget /vgoto /vheal /vhealall /vhide /vjetpack /vkick /vlockcar /vrac /vsetallwanted /vsetarmour /vsethealth /vsetmytime /vsetmyweather /vunhide /vunlockcar RCON parancsai: /vszint Letöltés: http://www.mediafire.com/view/m95jrz33uwcxwzc/VIP_System.zip CODE
Oldalak: [1]
|