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:
PHP
Schvalování článků - II
redakcni system
9. ledna 2002, 00.00 | Pokračujeme v tvorbě vlastního redakčního systému v PHP. Dnes si ukážeme změny při schvalování článků, jako zobrazování obrázků, odstranění časového limitu a správná logika v administraci článků.
Dnes pozměníme schvalování článků v admin centru. Ještě před tím si ukážeme, jak si ony načtené obrázky zobrazit.Myslím, že hned ze začátku je jasné, že zobrazovat obrázky v jejich plné velikosti hned na hlavní stránce, by nebylo vhodné. Proto je zmenšíme, ale zachováme poměr stran, tedy obrázek nebude deformovaný. Zařídí to tento úryvek ze scriptu index.php, který přidáme za odkaz s příspěvky.
|
Vysvětlime si to. Využíváme zde opět funkci GetImageSize(). Pokud existuje obrázek, do proměnné $a si načteme výsledek funkce GetImageSize(). Když je výška nebo šířka větší než 80 px (pixelů), změníme jeho velikost. Proto si spočítáme poměr stran, aby se nám nedeformoval. Dále tu máme cyklus, který nám bude obrázek zmenšovat dokud nebude alespoň jeden z rozměrů (šířka či výška) v rozmezí 40 a 60 px a poměr bude stále zachován. Tělo cyklu nám rozměry zmenší tím, že je vydělí 1,1. Proč zrovna tímhle číslem? Představte si, že tam máte dělení číslem 2 a před tím než poběhne naposledy tělo cyklu, bude mít obrázek rozměry řekněme 61 šířku a 75 výšku. Poté, co naposledy projde cyklem, bude mít 31 šířku a 38 výšku, což je poměrně málo. Když je tam ale 1,1, tak při stejných vstupních rozměrech dostaneme 55 šířku a 68 výšku. A na to se už lépe kouká. Je pravda, že cyklus trvá déle, ale dělení a zaokrouhlování nejsou operace, které by zabraly moc času. Číslo, kterým se bude bělení provádět, je ale na vás. Na konci cyklu dostaneme nezdeformovaný obrázek v menších rozměrech. Tyto rozměry pak příslušně dosadíme.
Jenže když se zobrazuje jen jeden samotný článek, chceme, aby se obrázek zobrazil v plných rozměrech. V tom případě použijeme toto:
|
Pokud obrázek existuje, použijeme výsledek z funkce GetImageSize() s indexem 3 (pole s indexem 3). V tomto poli je řetězec ve tvaru height=xxx width=yyy, kde xxx je výška obrázku a yyy je šířka v pixelech. Ve výsledku to vypadá takto:
|
Ještě před tím si znovu upravíme jeden script. Jedná se o forum.php. O co tu jde: do tohoto scriptu jsem přidal funkci Set_Time_Limit(0). Záleželo na Vás, jestli ji použijete. Přidal jsem ji kvůli tomu, že pokud by v databázi bylo hodně e-mailů, které by chtěli upozorňovat na zprávy z diskuze, trvalo by to asi déle než 30 sekund (standardní timeout Apache). Když však tuhle funkci použijeme, může to trvat poměrně dlouho (a asi to dloho trvat bude). Mám obavy, že návštěvník stránky bude 2 nebo 3 minuty čekat, až se vše odešle. Po chvíli ho to přestane bavit a na prohlížeči zmáčkne tlačítko "Zastavit", nebo něco podobného. V takovém případě se běh scriptu zastaví. To ale my nechceme. My potřebujeme, aby script doběhl až do konce a odeslaly se všechny e-maily. Musíme tedy udělat něco, co nám to zajistí. V PHP na to máme funkci Ignore_User_Abort(). Díky ní doběhne script vždy do konce, nehledě na uživatelovy příkazy k ukončení práce. Do scriptu forum.php přidáme tuto funkci na označené místo:
|
Nevím jak vám, ale mě začínalo vadit, že pokud kliknu na korekturu článků, objevují se tam i články, které jsou již schválené k zobrazení. Proto jsem zavedl nový pořádek:
- Ke korektuře se budou zobrazovat jen články, které nejsou schváleny k zobrazení.
- Právo opravovat a mazat schválené články má jen šéfredaktor.
|
Přidali jsme tam zeleně označenou část.
V souboru prehled.php je to samé jako ve scriptu schval.php, jen tam není možnost editace scriptu a zobrazují se zde všechny články.
Nyní jednotlivé SQL dotazy. První je pro prehled.php a druhý pro schval.php:
|
|
A abych nezapomněl. Možná se vám zdá divné, že pokud přidáte obrázek ke článku, obrázek, tak JPEG má formát GIF a obráceně. Je to způsobeno mojí chybou, za kterou se omlouvám. podmínka na ukládání obrázků má vypadat následovně:
|
Ještě jednou uvedu podporované formáty:
- 1 = GIF
- 2 = JPG
- 3 = PNG
- 4 = SWF
- 5 = PSD
- 6 = BMP
Doufám, že vše bylo srozumitelné. Kdo to nepochopil, nechť si počká na poslední díl, kde dám ke stažení kompletní scripty. Příště si ukážeme, jak může korektor přidat obrázek k článku bez obrázku.
Obsah seriálu (více o seriálu):
- Redakční systém I.
- Redakční systém II.
- Redakční systém III.
- Redakční Systém IV.
- Redakční systém V.
- Redakční systém VI.
- Redakční systém VII.
- Redakční systém VIII
- Redakční systém - tisk
- Redakční systém - generování
- Redakční systém - generování II.
- Redakční systém - generování III.
- Redakční systém - generování IV
- Redakční systém - generování V.
- Redakční systém - krátké zprávy a CSS styly
- Upload obrázků
- Upload - II a logout
- Schvalování článků - II
- Dodatečné přidání obrázku
- Regulární výrazy I
- Regulární výrazy II
- Redakční systém: Fulltext - I.
- Fulltext - II
- Co s RS?
- Optimalizace databáze v RS
- Interní vzkazy - I
- Interní vzkazy - II
- Interní vzkazy - III
- Náměty od čtenářů - I
- Náměty od čtenářů - II
- Náměty od čtenářů - III
- Náměty od čtenářů - IV
- Náhrada FTP
- Ankety
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007