Hogyan lehet ezt? Többi lent
Szeretnék egy olyan dolgot csinálni, hogy van egy user akinek van bann_id és bann_time az accounthoz csatolva.
Ha lejár a bann time eltünik a bann, ez oké, de ha nekem van pl. 6 bann fajtám. Maga a mysql bann_id egy varchar(12). Az accountra több ban fajtát lehet egyszerre hozza csatolni amit így ment az adatbázisba:
1;2;3;4....
Az kéne nekem hogy a PHP mikor megkapja ezt, akkor felismeri hogy az 1 az pl. chat bann a 2 az nemtudom... stb. Hogyan leeht azt hogy minden ; után más parancsra nézzen rá, nemtudom menyire érthető :(
Itt egy példa hátha így jobban érthető lessz.
Van a user akinek van a bann_id ben: 1;5;9
1 = chat bann
5 = login bann
9 = valami...
Ha akarok a chatbe írni megnézi a php hogy a bann_id üres e. Ha nem megkeresi az 1 számot, ha nem talál engedi használni ha talál akkor nem, vagy ugyan ez bejelentkezésnél, ha talál 5 számot, akkor nem engedi.
Hogyan leeht legjobban ezt elérni ?
Köszi
Akit érdekel a válasz, megtaláltam szóval bocsi a kérdést :D
$szoveg = ";1;2;15;16";
$array = explode(";", $szoveg);
array_search(1, $array); -> ez megnézi létezik e az "1" szám, ha igen vissza kapod a pozícióját az "array"-ben.
Ha ezt felhasználod így:
$valami = array_search(1, $array);
if (!empty($valami)){
// Létezik az 1 szám
}
Akkor gúnyolódás nélkül:
Ilyet, hogy "Van a user akinek van a bann_id ben: 1;5;9" nem csinálunk, mert már az 1-es normál formát is nagyon durván sérti.
Nem az ő válasza a GÚNY, hanem a te adatbázis sémád a GÁNY.
Tessék külön táblában tárolni a banokat (egy n-nel), két oszlop elég: user_id, ban_type. Ennyi.
Szia! Nem leszólásból mondom, mert azért van az oldal, hogy tanulj. A többiek azért hivatkoztak a normál formákra, mert azokat egy relációs adatbázisnál nagyon fontos lenne betartani. Pl. nem kellene php script-ben végig splitelni, gyorsabb lenne a lekérdezés, könnyebben lehetne alprogramokat írni stb. Tehát tényleg szebb lenne, ha átterveznéd a táblát (akár több táblában is, ekkor simán JOIN-olhatsz/allekérdezés/ha csak 2 tábla akkor where-ben a feltétel).
Mutatok is egy példát. Felhívom a figyelmedet, hogy biztosan van sokkal jobb megoldás is ennél, de azt gondolom, kiindulásnak már meglehet próbálni;
Például létrehozol egy táblát, amiben eltárolod, hogy kinek milyen banja van. Mondjuk user_id, ban_id, datum, kitol_kapta_id stb. attribútumokkal (azért külön tábla, mert lehet, hogy valakinek van 5 féle banja). Ha csak 1 féle ban-t kaphat, akkor a usertáblába létrehozol egy új attribútumot (oszlopot), hogy "ban_id".
Esetleg külön tábla, hogy "bannok". Ide "ban_id", "leíras", stb....
Ezeket meg majd lekérdezésnél join-olod "ban_id" alapján. Ez abból a szempontból is jó, hogy megtudod nézni, kinek van banja/kinek nincs/ha törli magát a ban megmarad stb....
Remélem tudtam segíteni, ha esetleg segítségre van szükséged, írd meg itt is nyugodtan.
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!