Redakční systém - generování II. - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Soutěž

Sponzorem soutěže je:

IDIF

 

Kde se koná výstava fotografií Luďka Vojtěchovského?

V dnešní soutěži hrajeme o:



PHP

Redakční systém - generování II.

redakcni system

27. září 2001, 00.00 | V dnešním díle seriálu si dokončíme generování článků z redakčního systému na disk. Pokud si i vy chcete obohatit svůj redakční systém o tuto vlastnost, čtěte dnešní článek.

Dnes dokončíme generování článků, které jsme minule začali. Ještě k minulému dílu. Uvedl jsem, že na odstranění netisknutelných znaků z konce řetězce můžete použít funkci Chop(). Tato funkce má ještě synonymní funkci RTrim() a funkce Trim() odstraní tyto znaky ze začátku i z konce řetězce. To jen takový malý dodatek. Hned na začátek Vám ukáži zdrojový kód, který přidáte do souboru generuj.php a až poté si ho vysvětlíme.

If($generuj=="clanek")
{
$sql=mysql_query("SELECT clanek,anotace,poznamka,nadpis FROM clanky WHERE id=$id AND stav='a'", $conn);
$row=mysql_fetch_row($sql);
@$f=fopen("../clanky/c_$id.dat", "w");
fputs($f, $row[0]);
fclose($f);
// to byl článek;
@$g=fopen("../clanky/a_$id.dat", "w");
fputs($g, $row[1]);
fclose($g);
@$h=fopen("../clanky/p_$id.dat", "w");
fputs($h, $row[2]);
fclose($h);
@$k=fopen("../clanky/n_$id.dat", "w");
fputs($k, $row[3]);
fclose($k);
mysql_query("UPDATE clanky SET nadpis='',poznamka='',anotace='',clanek='' WHERE id=$id AND stav='a'",$conn);
}

Vybereme z databáze clanek, anotace, nadpis a poznamku. První tři se generují kvůli fultextovému vyhledávání, poznámka protože v ní může být velmi dlouhý text. Ale generovat se nemusí. V dalším řádku načteme výsledek do pole a nyní začíná samotné generování. FOpen() je funkce, která nám vytvoří soubor, do kterého budeme zapisovat. První parametr nám udává název souboru a uložení. Jak jsem již říkal, budeme je ukládat do adresáře clanky. Ty dvě tečky znamenají o úroveň vyšší adresář, než který je aktivní (je v něm uložen tento soubor). To jen pro úplnost. Pojmenování souborů začíná n_ pro nadpis, c_ pro článek, a_ pro anotaci a p_ pro poznámku. Proměnná $id bude nahrazena číslem článku. Může si však vymyslet vlastní názvy. Koncovka je jedna z maličkostí, na které se můžeme dosytosti vyřádit. Může být jakákoliv! Například .fgh, .epy, .pde, .rs a podobně. Vše záleží jen na vaší fantazii. Pak však musíte změnit koncovky u všeho s čím souvisí toto generování. Ale prosím vás, nepřehánějte to. Taková .paodffisdfopifspdof asi nemá moc velký význam. Jde jen formalitu. Nevím jak vám, ale PHP mě nechce soubory bez koncovek generovat. Asi to bude "oknama", zřejmě netěsní a někudy mi teče dovnitř :-)) Používám proto klasickou .dat. Druhý parametr nám naznačuje, co se souborem budeme provádět. Zvolil jsem mód "w", neboť vždy vygeneruje nový soubor. Pokud tedy schválíme článek a pak si vzpomeneme, že je tam něco špatně, tak po opravě se starý soubor smaže a nahradí ho nový, již opravený. Funkce FPuts() vloží do souboru (první parametr) data obsažená v druhém parametru. FClose() nám soubor uzavře. To se opakuje pro všechny položky. Poslední řádek nám nastaví obsah generovaných proměnných na prázdnou hodnotu. Vymazání celého záznamu se nemůže použít, protože v něm máme ještě uložené číslo článku, číslo autora, datum publikování a další věci.

Nesmíme zapomenout u všech scriptů, kde se zobrazuje název článku, anotace, článek nebo poznámka, přepsat příkazy typu:

echo $row[1];

Na takovouto podobu.

if($row[1]==""): @include "../clanky/(n,a,c,p)_$row[0].dat; else: echo $row[1]; endif;
Proměnná $row[0] může být nahrazena $id. Záleží na sciptu. Toto proveďte pouze v admin části neboť tam se setkáte, jak se schváleným tak neschváleným článkem, který je ještě uložen v databázi a není vygenerouvám. Jak změnit script index.php si ukážeme přístě.

Ještě něco. Ve scriptu userstats.php, asi máte problém s přístupem autorů. Způsobuje to tato podmínka:

if ($INFO[6] < 3)
{
     echo "Neautorizovaný přístup";
     mysql_close($conn);
     exit;
}

Protože k tomuto scriptu mají přístup všichni uživatelé admin centra, můžeme jí celou úplně vypustit a ponechat pouze funkci auth().

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: