PHP » MyEgo.cz - Radek Hulán webzine

MyEgo.cz

home foto blogy mywindows.cz kontakt

PHP skript na automatické generování PDF souborů

PHP 01.05.2004
adobe acrobat

Looging for English version of this article?

Na http://www.fpdf.org/ je dostupná třída pro generování PDF souborů v PHP. Nicméně, jedná se o dost "syrový" produkt. Není možné jen tak jednoduše vzít XHTML soubor, poslat jej do toho, a vytvořit PDF.

Z tohoto důvodu jsem k této 40kB třídě vytvořil další 2 třídy (cca 15kB), které umožňují generovat PDF z XHTML komfortně, za pomocí 2 řádků v PHP!

Příklad:

Základem je třída createPDF. Její použití je nejjednodušší ilustrovat na příkladu:

$pdf =& new createPDF(
 $_POST['html'], // html text to publish
 $_POST['title'], // article title
 $_POST['url'], // article URL
 $_POST['author'], // author name
 time() );
$pdf->http='http://localhost/html2pdf/';
$pdf->directory='/www/html2pdf/';
$pdf->delete=10;
$pdf->useiconv=false;
$pdf->run();

Chcete si vyzkoušet převést text do PDF online?

Další možné způsoby použití této třídy, a její parametry, naleznete přímo v dobře komentovaném zdrojovém souboru html2pdf.php, nemá smysl je zde opisovat.

V souboru index.php naleznete jednoduché použití této třídy, uvedený příklad převede text vložený do uživatelem (do pole textarea), na PDF.

Zvláště upozorňuji na nutnost nastavení proměnných http a directory, udávají URI a lokální cestu, kde se bude vytvářet dočasný soubor (problém s tím měl Petr Weida, About, díky za upozornění). Rovněž, podporovány nejsou GIF soubory (licenční problémy, PHP třída pro PDF je nepodporuje).

$pdf->http='http://localhost/html2pdf/';
$pdf->directory='/www/html2pdf/';

Alternativní CSS styly a jejich přepínání lépe - objektově

PHP 21.04.2004

Předchozí řešení, přepínání CSS stylů, které jsem popisoval, je plně funkční a komfortní. Lepší přístup je nicméně, místo pár funkcí s parametry, vytvořit si třídu, objekt styleSwitcher.

Pokud budeme předchozí skript používat pro jeden, jediný projekt, není zrovna nutné psát třídu, nicméně, je to, obecně, vhodné. Proč? Třídy jsou o znovupoužitelnosti programového kódu. Za měsíc, dva, budete dělat další projekt, a myslíte si, že je vhodnější pokaždé mírně upravovat zdrojový kód, nebo mít jednu otestovanou třídu, které jen předáte parametry, popřípadě některé funkce podědíte? Samozřejmě, správným řešením je objektové programování :)

Tento článek je reakcí na jeden konkrétní, nepovedený seriál na Interval.cz, který obsahuje značně neforemný a nedotažený skript.

Přepínač CSS stylů (PHP skript) na straně serveru

PHP 21.04.2004
CSS stylesheets

Na Interval.cz vyšel článek, jak na alternativní CSS styly stránek pomocí serverového skriptování. Domnívám se ale, že pro začátečníka je takovýto seriál málo podrobný, obsahuje pár faktických nedostatků, a pro pokročilého programátora je k ničemu. Ten to dávno zná.

V čem je tento skript podstatně lepší:

  • funguje i v Internet Exploreru a jeho nadstavbách.
  • automaticky generuje formulář, pro volbu a změnu stylu.
  • doplňuje textové popisy stylů.
  • zajišťuje verzování stylů, nutné pro měnící se weby.
  • řeší situaci, kdy v cookie je již neexistující styl.

Nově jsem napsal i třídu styleSwitcher, pro přepínání CSS stylů, je to lepší řešení, podívejte se na ně.

Zapomeňte na MySQL - podruhé

PHP 17.04.2004

Děkuji Ottymu za pěkný link na porovnání MySQL a PostgreSQL. Přes hloupoučké reakce některých klučíků na můj předchozí článek, tato nezávislá analýza na openacs.org... zcela s mým článkem souhlasí. ;)

Přeji příjemné čtení!

Co jsem psal já?

Ona MySQL totiž není databáze. Je to primitivní filesystém. Filesystém, který navíc ani nepodporuje (pořádně) transakce, což je další obrovský problém. Pro libovolné aplikace.

Je načase říci, že MySQL je špatná databáze, která je v konečném důsledku pomalá a nepodporuje správné programátorské zvyky a postupy. Tahat data na klienta, kvůli sub-SELECTu, či TRIGGERu je mimořádně špatná koncepce!

Kdyby se lidi weboví chtěli naučit trošku více SQL a PL/SQL a začali používat (taky open-source) PostgreSQL či Firebird, namísto MySQL, řada složitých aplikací by běžela mnohem rychleji!!

Co píše ta analýza?

MySQL is just a glorified filesystem with a SQL interface. MySQL has no subqueries. MySQL has no stored procedures. MySQL has no triggers. MySQL only has table-level locking.

Jinak řečeno, moje dlouhodobé znalosti, mají drtivou převahu oproti flames klučíků, co se mezi sebou poplácávají po ramenou, to jediné jim jde ;) Moc pěkné ;) Před pár dny zavedené recenze komentářů, a publikování těch smysluplnných, má smysl. Flames... už nejsou.

PS: ta analýza MySQL byla psaná v roce 2000, před 4 lety, a smutné je, že je stále platná!!!

Zapomeňte na MySQL! Nic horšího není!

PHP 14.04.2004
MySQL

Lidé kolem webu mají rádi MySQL. Proč? Protože je to skvělá databáze? Ne. Protože to je primitivní, a v konečném důsledku i mimořádně pomalá databáze, které ovšem ONI rozumí. Pár triviálních SELECT, INSERT, UPDATE příkazů se totiž naučí každý a hned si myslí, že "rozumí databázím"…

Je načase říci, že MySQL je špatná databáze, jednoduchý filesystém, která je v konečném důsledku pomalá a nepodporuje správné programátorské zvyky a postupy. Tahat data na klienta, kvůli sub-SELECTu, či suplovat funkci TRIGGERu v PHP je mimořádně špatná koncepce!

Kdyby se lidi weboví chtěli naučit trošku více SQL a PL/SQL a začali používat (taky open-source) PostgreSQL či Firebird, namísto MySQL, řada složitých aplikací by běžela mnohem rychleji.

Jak v PHP na zasílání komentářů emailem?

PHP 14.04.2004
old PHP coder

Navrhl jsem Jirkovi Macichovi aby si na svém blogu zřídil aspoň trošku lepší formu komentářů. Zasílání příspěvků emailem je snad i ok, nicméně, pokud musím kliknout na mailto: odkaz, napsat tam název článku, na který reaguji, svoje jméno, a pár dalších věcí, tak… se mi to toho moc nechce.

Komentáře jsou přitom podstatné nejen pro návštěvnost, ale i pro získávání feedbacku k vlasním názorům. Veřejná oponentura!

Jirka na tom nějakou dobu pracoval a… nic. Takže, následuje malý kurz PHP, který jsem během 20 minut napsal ;)

Řešení je velice jednoduché, stačí nabídnout jednoduchý formulář, generovaný pomocí PHP, pro zaslání komentáře k danému článku, a použít trošku JavaScriptu pro otevření tohoto okna, a zapamatovat si pár údajů v cookies.

Jak takové řešení vypadá? Začnu od konce. Zde se můžete podívat na výsledek.

Co to umí?

  • otevřít okno formuláře na vložení komentáře s parametrem název a URI článku.
  • zkontrolovat vyplnění jména, emailu a zprávy.
  • odeslat (emailem) komentář majitelu blogu.
  • odeslat (emailem) komentář tomu, kdo jej vložil.
  • zaznamenat IP adresu a DNS resolution.
  • zapamatovat si jméno, email a URI komentujícího v cookies.
  • předvyplnit, při druhé návštěvě tyto hodnoty.
  • zavřít na konci okno, popřípadě vrátit se zpět, v případě chyby.

How to install Apache, PHP 4, and MySQL under Windows?

PHP 04.04.2004
windows

This article aims to provide a full reference for installing and configuring Apache 2 web-server, with mod_rewrite, PHP 4.3.5 scripting language, iconv PHP extension, and MySQL 4 database under Windows. PHP 4 will can be installed / configured as Apache 2 module or CGI script, but installing it as a module is a recommended approach. This "How To Manual" was fully tested under Windows XP SP1, but shall work with any Windows version.

First, you will need to download following files:

  • binary form of Apache 2.0.49 (file apache_2.0.49-win32-x86-no_ssl.msi).
  • PHP 4.3.5, I also recommend to download a PHP manual (in .chm file format).
  • MySQL 4.0/4.1, including its manual and documentation.
  • I also recommend to download from mysql.com utility called MySQL Control Center (current version 0.9.3), which is more comfortable to use than phpMyAdmin (which your web-hosting probably provides).

Download binary form of all files from links provided.

If you do not want to configure anything, especially httpd.conf a php.ini, you can download a prepared configuration of all these files ;) Everything will work immediately, just unpack and copy over you existing files.

Jak na Apache, PHP 4 a MySQL pod Windows?

PHP 19.03.2004

Používám sice na serveru Linux, a Apache, PHP, MySQL, firewall a další věci mi běží na něm, nicméně se mě už pár lidí ptalo jak rozchodit PHP a MySQL a Apache na Windows.

Nemáte Windows, a zajímá Vás, jak na PHP, Apache a MySQL pod Linuxem?

Pod Windows je to poměrně snadné (pod Linuxem taky). Potřebovat budete:

  • binární formu Apache 2.0.49 (soubor apache_2.0.49-win32-x86-no_ssl.msi).
  • PHP 4.3.5, rovněž doporučuji stáhnout si manuál (v .chm formátu).
  • MySQL 4.0/4.1, včetně manuálu a dokumentace.
  • velice doporučuji stáhnout si z mysql.com i aplikaci nazvanou MySQL Control Center (aktuální verze 0.9.3), je to grafická utilita pro práci s databází, na lokále mnohem pohodlnější než phpMyAdmin (který Vám asi nabízí hosting).

Z uvedených webů si stáhněte binární formu daných souborů, pro Windows, a následně proveďte instalaci standardním způsobem. Kompilaci, jako na Linuxu, provádět nemusíte ;)

Pokud se Vám nechce nic konfigurovat, tedy nastavovat httpd.conf a php.ini, stáhněte si jen instalační soubory a potom připravený soubor apache2_php4_win.zip ;) Vše bude ihned fungovat, stačí rozbalit a zkopírovat…