Checkbox nastavení - jak ušetřit kód – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Checkbox nastavení - jak ušetřit kód – PHP – Fórum – Programujte.comCheckbox nastavení - jak ušetřit kód – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Farrell0
Newbie
7. 11. 2012   #1
-
0
-

Sice na přehlednosti to moc nepřidá, ale pokud použijeme konstanty, normálnímu zápisu se to myslím vyrovná. Jde o technologii bitového posunu. Pokud máme stránku s větším množstvím nastavení, můžeme šetřit databázi tím, že vytvoříme pro daná nastavení pouze řádek - INT / BYTE (int - 32 check boxů, byte - 8 checkboxů)

Jak jistě víte, každé číslo, znak, řetězec můžeme vyjádřit binárně. Využijeme finty, kdy si takto číslo sestavíme sami.

Máme formulář, kde si uživatel nastavuje např. chování stránky. Jsou zde i jiné prvky (např. menu, text). My budeme řešit pouze checkboxy, případně radiobutony. Máme 8 checkboxů - uživatel zvolí tohle nastavení (1 - zaškrtlé):

00101110 rázem to můžeme převést na číslo, či dokonce znak. Číslo: 46, tudíž do databáze, či cookies zapíšeme jen 46 do jednoho prvku. Jakmile data budeme chtít číst - opět převedeme do binární podoby. Musíme pouze vědět, na jaké pozici je které nastavení. To lze zjednodušit např. konstantami

<?php

define("SET_REKLAMA", 0);
define("SET_AUTOBALANCE", 1);
define("SET_AUTOKICK_IDLE", 2);
define("SET_AUTOKICK_TK", 3);
define("SET_ANTICHEAT", 4);
define("SET_VOTEKICK", 5);
define("SET_VOTEMAP", 6);
define("SET_VOTERESTART", 7);


// BitSettings( ciselny_zapis, pozice_bitu );
$autobalance = BitSettings( $data, SET_AUTOBALANCE );

Je to výhodnější u větších aplikací...

Ještě bych se vrátil k radiobuttonu. Dejme tomu máme 8 přepínačů - stačí nám 3 bity

000 - prepinac 1

001 - prepinac 2

010- ...

011

100

101

110

111- prepinac 8

Když víme, co kde je, lze všechno narvat do jedné proměnné. Mj. to lze provést se vším kromě textu... (např. menu atd.) 

např. BYTE - [ x x x ] - radio, [ x x x ] - checkbox,  [ x x ] - menu = 8 bitů

Což nám dává dohromady 15 nastavovacích prvků v jednom bajtu.

Pro menu můžeme také využít možnost kombinace bitů(pokud menu není více výběrové), tj.

0 0 - 1 možnost

0 1

1 0

1 1 - 4 možnost

V komplikovanějších systémech to může pomoct, dokonce i zpřehlednit kód - nastavení se řeší zvlášť, kde je v tom jasno pomocí konstant. Nevýhoda je, že to může mírně zpomalit vykonání skriptu, což ale při použití cache / js nemusíme řešit.
   Sám zastávám názor, že klientovi přenechám co nejvíce výpočtů, ale s tím, že bude zaručena kompatibilita. Moderní prohlížeče by neměli mít problém. Dokonce výsledný vzhled gui se může utvořit až na klientově straně, klient dostane pouze surová data z DB.

Nahlásit jako SPAM
IP: 89.103.189.–
www.farpc.eu
Reklama
Reklama
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 65 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý