Systém novinek v PHP a MySQL - administrační část
Po úspěšném provedení instalce systému novinek se, pokud jste dodrželi postup instalace, administrační část nachází na adrese:
http://AdresaVasehoWebu/news/
Kdykoliv potřebujete přidat novinku, zadejte tuto adresu. Systém zobrazí formulář pro zadání přihlašovacího jména a hesla (to jsou ty údaje, které jste zadávali při instalaci). Pokud zadáte správné údaje a odešlete formulář, systém se přepne do tzv. administrační části.
Administrační část
Administrační část se skládá z hlavičky, ve které se zobrazuje Vaše přihlašovací jméno a odkaz pro odhlášení, na dalším řádku se pak zobrazuje počet novinek a možnost přidání nové novinky. Pod touto hlavičkou se pak zobrazuje tabulka se seznamem všech novinek v databázi (verze 1.0 zatím nepodporuje žádné stránkování, proto se zobrazují všechny novinky uložené v databázi). Samozřejmě, že po instalaci systému v databázi žádná novinka není, takže se nezobrazuje ani tato tabulka (zobrazí se po založení první novinky).
Přidávání novinek
Ovládání systému je velice jednoduché. Klepnutím na odkaz Přidat novou novinku se zobrazí formulář pro přidání nové novinky. Ten obsahuje položky:
- Datum
- Nadpis novinky
- Obsah novinky
- přepínač zobrazovat datum novinky
- přepínač formátovat obsah novinky
Povinné jsou položky Datum a Obsah novinky. Pokud vyplníte položky Datum a Nadpis novinky a ponecháte přepínač zobrazovat datum novinky zatržený, bude se při vypisování novinky zobrazovat jako její nadpis nejen datum, ale i zadaný nadpis (oddělený od data pomlčkou). Pokud vypnete zatržení přepínače zobrazovat datum novinky, nebude se při vypisování této novinky vypisovat zadané datum, ale položka Nadpis novinky se stane povinnou položkou pro vyplnění formuláře (bude se pak vypisovat místo data).
Přepínač formátovat obsah novinky slouží k tomu, aby se při vypisování novinky na stránkách povolilo (přepínač zapnutý) nebo zakázalo (přepínač vypnutý) formátování zapsaného textu převaděčem Texy (syntaxe viz Texy syntax), který můj systém používá. Doporučuji tento přepínač ponechat zatržený. Vzhledem k tomu, že můj systém umožňuje novinky zobrazovat ve třech módech, je potřeba na to myslet při vyplňování jejich obsahu. Dva zobrazovací módy zobrazují novinky jako seznamy (seznam definic DL a netříděný seznam UL) a při jejich použití je Texy nastaveno tak, aby obsah novinky formátovalo jako řádkový element, nikoliv jako odstavec. Odstavcové formátování obsahu novinek je nastavenou pouze při vypisování třetím módem (odstavce P). Při vypisování obsahu novinek v administrační části k žádnému formátování nedochází.
Editace novinek
Můj systém umožňuje nejen novinky přidávat, ale rovněž je editovat nebo mazat. K tomuto účelu slouží příslušné odkazy u každé novinky zobrazené v tabulce administrační části novinek. Funkčnost těchto odkazů snad není nutné popisovat — je pochopitelná z kontextu.
- Napsal: bobocop, 5.12.2011, 5:40:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (0)
Zpracování XML dokumentu
Nedávno jsem potřeboval programově zpracovat nějaký XML dokument (v Excelu) a nevěděl jsem jak na to. Tak jsem chvilku hledal a našel jsem řešení v objektu Microsoft.XMLDOM.
Práce s ním je poměrně jednoduchá a místo toho, abych zde popisoval jeho strukturu a práci s ním, tak jen odkážu na stránky Microsoftu, kde je všechno poměrně podrobně popsáno (bohužel v angličtině). Takže více informací viz A Beginner's Guide to the XML DOM.
- Napsal: bobocop, 19.06.2008, 7:37:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (0)
Systém novinek v PHP a MySQL - verze 1.4
Dnes jsem vystavil ke stažení novou verzi mého systému novinek v PHP a MySQL.
Veškeré úpravy spočívají v tom, že jsem zavedl možnost definovat jazyk přidávané položky (na výběr je čeština, angličtina a němčina).
Aplikace nijak nekontroluje jazyk, který je při psaní položky použit. V podstatě se jedná pouze o přepínač. Nicméně je teď možné definovat položky až ve třech různých jazycích, na což je pak brán zřetel při zobrazování položek.
Více informací naleznete v souboru readme.htm, který je součástí "instalačního balíku" (viz download)
- Napsal: bobocop, 15.06.2007, 9:03:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (0)
Systém novinek v PHP a MySQL - verze 1.2
Dnes jsem vystavil ke stažení novou verzi mého systému novinek v PHP a MySQL.
Veškeré úpravy spočívají v tom, že jsem zavedl možnost přidávat dva druhy položek do tabulky. Novinky a akce. Novinky jsou informace typu "stalo se", akce jsou informace typu "připravuje se".
Zároveň jsem mírně upravil vzhled administračního rozhraní, přidal do něj filtr na zobrazování (všechno/jen novinky/jen akce) a opravil některé drobné chybky, na které jsem v průběhu práce narazil.
Více informací naleznete v souboru readme.htm, který je součástí "instalačního balíku" (viz download)
- Napsal: bobocop, 20.10.2006, 16:41:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (1)
Systém novinek v PHP a MySQL - stránkování
Dnes jsem provedl úpravu v mém systému novinek v PHP a MySQL.
Celá úprava v podstatě spočívá jen v tom, že jsem upravil zobrazování seznamu novinek v administrační části tak, aby se seznam rozděloval na stránky po deseti záznamech. Hodnotu počtu záznamů na stránku je možné změnit v souboru dbconnect.php, kde je na to definována konstanta PAGELIMIT.
Zajímavý na celé změně může být snad jen kód, který jsem použil pro zobrazení stránkovače. Rozhodl jsem se, že budu zobrazovat maximálně pět odkazů na jednotlivé stránky, přičemž když bude stránek víc, tak se na začátku (případně na konci) stránkovače zobrazí tři tečky. Aktuální stránka bude vždy (mimo případů ze začátku a z konce) zobrazena uprostřed stránkovače.
Nebudu zde opisovat celý kód, ale spíše jen teorii. Kdo bude mít zájem, může si projekt stáhnout a podívat se do zdrojů.
Nejdřív je potřeba si spočítat počet záznamů v tabulce novinek. Toho lze dosáhnout například následujícím SQL dotazem:
SELECT
Count(id) as Pocet
FROM bb_news;
Aktuální číslo stránky, která má být zobrazena si předáme v URL v parametru page. Ten pak vyčteme z proměnné $_GET. Pro stránkovač je nutné vědět, na kolik stránek budeme stránkovat (tedy počet stránek). Ten vypočítáme tak, že vezmeme podíl počtu všech záznamů a počtu záznamů na jednu stránku (viz konstanta PAGELIMIT):
//vypocitam pocet vsech stran
$pocetstran = ceil($pocetvsechzaznamu/PAGELIMIT);
Pak je třeba ošetřit parametr zadané stránky:
//test cisla strany
if ($strana <= 0):
//kdyz je mensi nebo rovno nule, nastavim prvni stranu
$strana = 1;
else:
if ($strana>$pocetstran):
//kdyz je vetsi nez pocet stran, nastavim posledni stranu
$strana = $pocetstran;
endif;
endif;
Pak je potřeba vypočítat číslo stránky, kterým bude stránkovač začínat a kterým bude končit:
//vypocet cisla stranky, kterym bude strankovac zacinat
if ($strana>3):
//pokud je stranka vetsi nez 3
if (($strana + 2) >= $pocetstran):
//pokud je stranka + 2 vetsi nebo rovna poctu stran
//je pocatecni hodnota rovna poctu stran minus 4
$start = $pocetstran — 4;
else:
//jinak je pocatecni hodnota rovna stranka minus 2
$start = $strana — 2;
endif;
else:
//neni vetsi ney 3, pocatek je 1
$start = 1;
endif;
//osetreni na nulu
if ($start<=0): $start=1; endif;
//vypocet cisla stranky, kterym bude strankovac koncit
//vzdy budou zobrazeny odkazy na maximalne 5 stranek
$cil = $start + 4;
//osetreni preteceni posledniho cisla stranky
if ($cil > $pocetstran): $cil = $pocetstran; endif;
Pak už jen v jednoduchém cyklu FOR od proměnné $start do proměnné $cil provedeme naplnění textového řetězce s odkazy na stránky, přičemž v případě, že se jedná o zvolenou stránku místo odkazu zabalíme číslo stránky do tagu STRONG:
//prirazeni retezce pro strankovac
$pager = ”;
for ($i=$start; $i<=$cil;$i++):
if ($i<>$strana):
//stranky ktere nejsou zvolenou strankou
$pager.="<a href=\"?page=" . $i . "\">" . $i . "</a>";
else:
//zvolena stranka
$pager.="<strong>" . $i . "</strong>";
endif;
//pokud nejsem na konci cyklu, pridam oddelovac
if ($i<$cil):
$pager.=" | ";
endif;
endfor;
No a nakonec ještě přidám tečky na začátek a konec:
//pridani tecek na zacatek a konec strankovace, pokud je vic jak 5 stranek celkem
if ($pocetstran > 5):
//pokud je aktualni stranka vetsi nez tri, znamena to, ze zacatek je nad jednickou
//a musim tedy zobrazit tecky na zacatku
if ($strana > 3):
$pager="<a href=\"?page=" . ($start — 1) . "\">...</a> " . $pager;
endif;
//pokud je rozdil poctu stran a aktualni strany vetsi nez 2, znamena to, ze do konce je vic
//nez 2 stranky a musim zobrazit tecky na konci
if (($pocetstran — $strana) > 2):
$pager=$pager . " <a href=\"?page=" . ($cil + 1) . "\">...</a>";
endif;
endif; //pocetstran > 5
- Napsal: bobocop, 12.09.2006, 18:33:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (1)
Generování náhodného hesla v ASP
Potřeboval jsem pro jeden projekt, který píšu v klasickém ASP (tedy nikoliv ASP.NET) mít možnost generovat náhodné heslo. Proto jsem si pro tento účel napsal následující funkci.
Je to velice jednoduchá funkce a píšu to sem jen proto, abych na to nezapomněl a pro to, že by se to třeba mohlo někomu hodit.
Zde je kód zmíněné funkce:
'*******************************************************************************
'Funkce pro vygenerování náhodného hesla zadané délky
'*******************************************************************************
Function RandomPassword(lLenght)
'mnozina znaku, ze kterych budu skladat heslo
'zamerne je vynechano velke pismeno O, nula a pismena Z a Y (mala i velka)
Const sPosChars = "abcdefghijklmnopqrstuvwxABCDEFGHIJKLMNPQRSTUVWX123456789"
'definice promennych
Dim lRnd 'nahodne cislo
Dim lPrev 'predchozi nahodne cislo
Dim sRand 'pomocny retezec
'inicializace nahodnych cisel
Randomize
'default funkce
RandomPassword = ""
'osetreni delky hesla (default je 6)
If (lLenght <= 0) Then lLenght = 6
'pomocna promenna
sRand = ""
lPrev = 0
Do
'vygeneruju nahodne cislo od 1 do delka moznych znaku
Do
'a delam to tak dlouho, dokud se nahodne cislo nelisi od predchoziho nahodneho cisla
'pro pripad, ze by bylo vygenerovano stejne jako predchozi
lRnd = CLng((Rnd * Len(sPosChars)) + 1)
Loop Until (lRnd <> lPrev)
'ulozim aktualni nahodne cislo do jine promenne
lPrev = lRnd
'priradim retezec z pole povolenych znaku do pomocneho retezce
sRand = sRand & Mid(sPosChars, lRnd, 1)
Loop Until (Len(sRand) = lLenght)
'priradim hodnotu funkce
RandomPassword = sRand
End Function
- Napsal: bobocop, 29.08.2006, 15:39:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (3)
Systém novinek v PHP a MySQL - administrační část
Po úspěšném provedení instalce systému novinek se, pokud jste dodrželi postup instalace, administrační část nachází na adrese:
- http://AdresaVasehoWebu/news/
Kdykoliv potřebujete přidat novinku, zadejte tuto adresu. Systém zobrazí formulář pro zadání přihlašovacího jména a hesla (to jsou ty údaje, které jste zadávali při instalaci). Pokud zadáte správné údaje a odešlete formulář, systém se přepne do tzv. administrační části.
Administrační část
Administrační část se skládá z hlavičky, ve které se zobrazuje Vaše přihlašovací jméno a odkaz pro odhlášení, na dalším řádku se pak zobrazuje počet novinek a možnost přidání nové novinky. Pod touto hlavičkou se pak zobrazuje tabulka se seznamem všech novinek v databázi (verze 1.0 zatím nepodporuje žádné stránkování, proto se zobrazují všechny novinky uložené v databázi). Samozřejmě, že po instalaci systému v databázi žádná novinka není, takže se nezobrazuje ani tato tabulka (zobrazí se po založení první novinky).
Přidávání novinek
Ovládání systému je velice jednoduché. Klepnutím na odkaz Přidat novou novinku se zobrazí formulář pro přidání nové novinky. Ten obsahuje položky:
- Datum
- Nadpis novinky
- Obsah novinky
- přepínač zobrazovat datum novinky
- přepínač formátovat obsah novinky
Povinné jsou položky Datum a Obsah novinky. Pokud vyplníte položky Datum a Nadpis novinky a ponecháte přepínač zobrazovat datum novinky zatržený, bude se při vypisování novinky zobrazovat jako její nadpis nejen datum, ale i zadaný nadpis (oddělený od data pomlčkou). Pokud vypnete zatržení přepínače zobrazovat datum novinky, nebude se při vypisování této novinky vypisovat zadané datum, ale položka Nadpis novinky se stane povinnou položkou pro vyplnění formuláře (bude se pak vypisovat místo data).
Přepínač formátovat obsah novinky slouží k tomu, aby se při vypisování novinky na stránkách povolilo (přepínač zapnutý) nebo zakázalo (přepínač vypnutý) formátování zapsaného textu převaděčem Texy (syntaxe viz Texy syntax), který můj systém používá. Doporučuji tento přepínač ponechat zatržený. Vzhledem k tomu, že můj systém umožňuje novinky zobrazovat ve třech módech, je potřeba na to myslet při vyplňování jejich obsahu. Dva zobrazovací módy zobrazují novinky jako seznamy (seznam definic DL a netříděný seznam UL) a při jejich použití je Texy nastaveno tak, aby obsah novinky formátovalo jako řádkový element, nikoliv jako odstavec. Odstavcové formátování obsahu novinek je nastavenou pouze při vypisování třetím módem (odstavce P). Při vypisování obsahu novinek v administrační části k žádnému formátování nedochází.
Editace novinek
Můj systém umožňuje nejen novinky přidávat, ale rovněž je editovat nebo mazat. K tomuto účelu slouží příslušné odkazy u každé novinky zobrazené v tabulce administrační části novinek. Funkčnost těchto odkazů snad není nutné popisovat — je pochopitelná z kontextu.
- Napsal: bobocop, 8.04.2006, 17:04:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (3)
Systém novinek v PHP a MySQL - popis instalace
Takže celý systém novinek sestává z několika souborů a podadresářů zahrnutých do adresáře news. Před vlastní instalací na webový server je třeba udělat úpravu do souboru dbconnect.php, který se nachází v podadresáři inc. Tento soubor totiž obsahuje informace o připojení k databázi:
- adresu serveru,
- přihlašovací jméno k databázi,
- přihlašovací heslo k databázi,
- název databáze.
Po zapsání správných hodnot a uložení souboru je nutné nakopírovat celý obsah adresáře news (tedy včetně tohoto adresáře) na webový server (nejlépe do rootu Vaší webové prezentace). Instalaci pak spustíte zadáním adresy:
- http://AdresaVasehoWebu/news/news-install.php
V prvním kroku se vytvoří příslušné databázové tabulky a ve druhém kroku Vás instalce vyzve k definici administrátorského účtu (jméno, heslo a e-mail — na zadaný e-mail se zadané informace odešlou). Tím je instalace hotova a můžete začít se systémem pracovat.
- Napsal: bobocop, 7.04.2006, 16:22:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (1)
Systém novinek v PHP a MySQL - popis tabulek
Než začnu popisovat to, jak celý systém funguje, měl bych asi nejdřív popsat definice tabulek. Celý systém se skládá ze dvou tabulek — tabulka bb_users a tabulka bb_news, přičemž hlavní a nejdůležitější tabulkou je tabulka bb_news, ve které jsou uloženy všechny novinky.
Tabulka bb_users
Tabulka slouží pouze pro uložení přihlašovacího jména, hesla a e-mailu tzv. administrátora novinek. Vzhledem k tomu, že jsem ten systém dělal v podstatě pouze pro sebe, tak se mi nechtělo systém navrhovat moc sofistikovaně a rozhodl jsem se, že k němu bude mít přístup pouze jeden uživatel. Do budoucna to půjde případně rozšířit.
Tabulku jsem vytvořil následujícím SQL příkazem:
CREATE TABLE bb_users (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
user VARCHAR(32) NOT NULL,
pass VARCHAR(32) NOT NULL,
mail VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
)
Obsahuje atributy:
- id (jednoznačný identifikátor, automaticky se inkrementující),
- user (jménoo uživatele),
- pass (heslo),
- mail (e-mailová adresa).
Tabulka bb_news
Tabulka slouží k uložení všech novinek. Vytvořil jsem ji nálsedujícím SQL příkazem:
CREATE TABLE bb_news (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
date DATE NOT NULL DEFAULT '0000-00-00',
head VARCHAR(50) NOT NULL,
cont TEXT NOT NULL,
showdate ENUM('0','1') NOT NULL DEFAULT '1',
formatcont ENUM('0','1') NOT NULL DEFAULT '1',
PRIMARY KEY(id)
)
Obsahuje atributy:
- id (jednoznačný identifikátor, automaticky se inkrementující),
- date (datum novinky),
- head (nadpis novinky),
- cont (vlastní obsah novinky),
- showdate (přepínač toho, zda se má při vypisování novinky vypisovat datum novinky),
- formatcont (přepínač toho, zda se má při vypisování novinky provádět formátování obsahu novinky).
- Napsal: bobocop, 25.03.2006, 19:52:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (0)
Systém novinek v PHP a MySQL - úvod
Tak se mi dnes (snad) podařilo dokončit můj systém novinek naprogramovaný v PHP a využívající databáze MySQL, jak jsem o tom psal v předchozím příspěvku.
Bohužel teď nemám moc času na to, abych se o tom více rozepsal, takže jen uvedu, že systém bude, kromě přidávání nových novinek, umět novinky editovat i mazat. Zobrazování novinek na stránkách pak bude možné ve třech módech:
- jako definiční seznamy — DL,
- netříděné seznamy — UL
- jako odstavce — P.
Víc o tom napíšu v příštím příspěvku (snad zítra).
- Napsal: bobocop, 24.03.2006, 19:21:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (0)
Systém novinek v PHP a MySQL - představa
Začínám pomalu ale jistě pronikat do programování MySQL v PHP a rozhodl jsem se, že mým prvním "větším" projektem, na kterém se hodlám učit, bude projekt systému novinek. Abych nezapomněl na to, jakou mám představu, rozhodl jsem se napsat tento článek a možná ho později doplním o další články, ve kterých popíšu moje řešení.
Systém by měl fungovat tak, že bude rozdělen na administrační čast a na funkční část, přičemž funkční část bude obsahovat (asi) jen jednu funkci, řekněme GetNews([pocet]), která bude vracet buď seznam všech novinek v databázi (to v případě nezadání parametru) nebo nastavený počet novinek. Administrační část pak bude obsahovat možnost přihlášení (zatím uvažuju jen o jednom uživateli — viz dále) a po přihlášení možnost přidávání, editace a asi i mazání novinek.
Takže si to představuju zhruba tak, že budou existovat dvě tabulky. Tabulka uživatelů a tabulka novinek. Tabulka uživatelů bude obsahovat položky:
- jméno,
- heslo,
- e-mail.
Tabulka novinek bude obsahovat položky:
- datum,
- název,
- obsah,
- zobrazit_datum (dvoustavový přepínač),
- formatovat_obsah (dvoustavový přepínač).
Veškerý kód systému bude v jednom adresáři. Tento adresář bude stačit nahrát na server a pak ho bude možné používat (zadáním adresy www.example.com/news/. Instalace (vytvoření tabulek a registrace "administrátora") se provede při prvním přístupu do systému. Součástí instalce bude definice přihlašovacího jména a hesla administrátora. Zatím nemám v úmyslu umožnit registraci více uživatelů, ale pravděpodobně by se to pak později dalo rozšířit. Po provedení instalace pak již bude možné se sestémem začít pracovat, tedy hlavně přidávat novinky, případně pak editovat a/nebo mazat novinky.
Ještě jednou opakuji, že tento článek slouží spíš jen pro moji potřebu a nemám v úmyslu používat nějaká již hotová řešení. Chci se to naučit sám.
- Napsal: bobocop, 17.03.2006, 20:59:00
- Kategorie: Programování
- Trvalý odkaz
- Komentáře (2)
Archivy
- prosinec 2011
- srpen 2011
- červenec 2011
- červen 2011
- květen 2011
- únor 2011
- červenec 2010
- červen 2010
- duben 2010
- březen 2010
- únor 2010
- leden 2010
- listopad 2009
- říjen 2009
- září 2009
- červen 2009
- březen 2009
- prosinec 2008
- listopad 2008
- říjen 2008
- srpen 2008
- červen 2008
- květen 2008
- duben 2008
- březen 2008
- únor 2008
- prosinec 2007
- listopad 2007
- září 2007
- červen 2007
- květen 2007
- duben 2007
- březen 2007
- leden 2007
- prosinec 2006
- říjen 2006
- září 2006
- srpen 2006
- červenec 2006
- červen 2006
- duben 2006
- březen 2006
- únor 2006
- leden 2006
- prosinec 2005
- listopad 2005
- říjen 2005
- září 2005
- srpen 2005
- červenec 2005
- červen 2005
- květen 2005
- duben 2005
- březen 2005
- únor 2005
- leden 2005
- prosinec 2004
- listopad 2004
- říjen 2004
- září 2004
- srpen 2004
- červenec 2004
- červen 2004
Odkazy
- Bohumír Bednařík
- Matějka Koupelny
- Škola pro výcvik vodicích psů pro nevidomé
- Veřejný weblog
- Montáže nábytku
Ostatní
Vyhledávání
Reklama