Portál AbcLinuxu, 1. června 2025 22:56


Dotaz: Dynamicke nacitani stylu

honzous avatar 15.5.2007 12:48 honzous | skóre: 17 | blog: /var/log/honzous.log
Dynamicke nacitani stylu
Přečteno: 94×
Odpovědět | Admin
Zdravim... Resim zvlastni zahadu. Nevim, co me to napadlo, ale resili jste nekdy dynamicke nacitani CSS stylu napr. pomoci SQL dotazu? Idealni situace, ktere bych chtel docilit, by byla, ze bych mel v SQL treba tabulku css a podle urciteho identifikatoru by se nacitaly customizovane styly. Google se mnou moc nekamaradi, a tak jedine, co me zatim napadlo, je uplne se vyhnout .css souboru a vsechno resit style="SQL dotaz, resp. vysledek SQL dotazu" v kazdem tagu (coz se mi zda jako kravina) a nebo nacteni uzivatelovy definice do SQL a pak vyparsovat samotnou tabulku ve /var/lib/mysql/*/ treba nejakym Perlovym skriptem a postavit z toho samotny .css soubor, coz se mi zda taky jako kravina :-) Ma nekdo lepsi napad ci zkusenost? Diky.
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.5.2007 12:56 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co třeba uživatelovu definici uložit jako jeden souvislý text a ten pak zase jako celek poslat zpět uživateli? Nějak mi uniká důvod, proč jej nejprve parsovat a pak zase skládat. Asi záleží na tom, jak velké znalosti uživatele očekáváte a co vše chcete uživatelskými styly měnit.
honzous avatar 15.5.2007 13:11 honzous | skóre: 17 | blog: /var/log/honzous.log
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Rekneme, ze uzivatel ma k dispozici dummy rozhrani, pomoci ktere si oznaci, ze chce mit text v tabulce cerveny misto cerneho. Proto potrebuji jeho volbu soupnout do databaze pod jeho ID a v pripade, ze web prohlizi prave on, barvit text cervene :-)
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
15.5.2007 13:51 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Tak si buďto uložte ty příznaky do databáze, a pak z nich generujte styly (nejsnazší asi bude ukládat třídu a k ní odpovídající definice stylu), nebo rovnou při změně vytvořte ten stylový soubor a uložte jej do databáze jako text. Parsovat na tom opravdu není co, a sestavit ten stylový soubor bude nejlepší stejným způsobem, jakým se na vašem serveru sestavují HTML stránky (nepředpokládám, že HTML obsah je statický) – takže nejspíš PHP nebo něco podobného.
irenicus avatar 15.5.2007 13:03 irenicus | skóre: 6
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proc pomoci SQL dotazu ? To mate tech definic stylu tolik ? Ja osobne bych sel do nekolika definic ulozenych do souboru a pak bych spravny styl urcil pomoci funkce
 ... rel="stylesheet" type="text/css" href=" volani funkce GetCss " ...

function GetCss(string id)
{
   // zde normalni switch .. case, pripadne SQL
   echo soubor_s_css;
}

Prirozenene by je slo tahat i z DB ale to mi pripada neprakticke z duvodu jejich editace
honzous avatar 15.5.2007 13:14 honzous | skóre: 17 | blog: /var/log/honzous.log
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Diky, tohle tak trochu souvisi s tim perlovym parsovanim. Kdyz nic nevymyslim, priklonim se k teto moznost. Ja mel na mysli ukladani kazde definice zvlast. Tohle je reseni globalni, kdy udelam treba 10 vzoru a necham uzivatele vybirat pouze z nich...
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
15.5.2007 13:25 Petr Masopust | skóre: 14
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Proc to ale parsovat do souboru na disk ? Vytahni ty styly/udaje o stylu z db, postav z nich v pameti string (= css soubor) a ten pak primo posli do browseru.

Akorat nevim jestli to sezere browser protoze bezpecnost.
15.5.2007 13:33 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
tak nie echo $css, ale (perl)
use DBI;
my $dbh = DBI->connect ("dbi:mysql:dbname=...");
my $sth = $dbh->prepare ('select selektor, tag, value from user_css where user = ?');
$sth->execute ($user_id);

my $last = undef;
print "* {";

while (my ($selektor, tag, $value) = $sth->fetchrow_array) {
  print "}\n", $selektor, ' {', "\n"
    unless $last eq $selektor;
  print $tag, ': ', $value, "\n";
  $last = $selektor;
}

print "}\n";

$sth->finish;
$dbh->disconnect;

jednoducho stylesheet nebude subor.css, ale subor.cgi (.php, popr čo koho napadne)
honzous avatar 15.5.2007 13:38 honzous | skóre: 17 | blog: /var/log/honzous.log
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
No, to uz vypada rozumneji :-) Diky moc!
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
15.5.2007 13:39 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
to bol jednoduchý prípad. Ak sa autor pýtal na implementáciu v db, tak by som odporúčal tri tabuľky:
- zoznam modifikovateľných selektorov
- zoznam modifikovateľných css atribútov zvlášť pre každý selektor
- zoznam hodnôt (s id user-a)

na skripte sa príliš veľa nezmení, len sa bude vyberať z troch tabuliek, nie len z jednej.

honzous avatar 15.5.2007 17:35 honzous | skóre: 17 | blog: /var/log/honzous.log
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Jeste jednou dekuji za radu. Zejmena tvuj napad me nakopl :-) Nakonec jsem k tomu nepotreboval Perl, ale vse slo udelat v prachobycejnem php. Css soubor (s koncovkou php) se nenarocne vygeneruje jednim dotazem na databazi a nacucne treba i stovky odlisnych hodnot.
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
irenicus avatar 15.5.2007 20:10 irenicus | skóre: 6
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Jo tak to ju :-) ... spatne jsem pochopil zadani :-)
15.5.2007 13:21 outsider
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nechapu, co resis. Proste udelas skript, ktery ti vrati definici tech stylu na zaklade session, parametru, uzivatele apod.
honzous avatar 15.5.2007 13:32 honzous | skóre: 17 | blog: /var/log/honzous.log
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Diky, machre. Priste si, prosim, precti otazku. Mne nejde o to, na zaklade ceho, ale jak a odkud. A to jsem se od tebe nedovedel. Udelam skript. Hura, uz jdu na to :-/
Nevykej mi, ja ti taky nebudu vykat...↵ Mar 13 11:53:32 nevykat last message repeated 2324661 times
15.5.2007 14:26 outsider
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
Nemachruju, jenom su linej -- narozdil od kolegy :-) Zatimco ja odpovim "napis si skript", on ti ho rovnou napise... No?
15.5.2007 14:53 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Dynamicke nacitani stylu
napísať skript je niekedy jednoduchšie, ako vysvetliť "fintu", na ktorú sa dotyčný pýta. Normálny človek zo skriptu pochopí smer, ostatní sem snáď nechodia :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.