Kniha PHP a MySQL bez předchozích znalostí

Školení, která pořádám

Kniha Miloslava Ponkráce vyšla v roce 2007 a tento článek není její recenzí, ale spíše oponenturou. Hledám totiž knihu, kterou bych s klidným svědomím mohl doporučovat svým studentům a účastníkům školení. Po výborné knize Jiřího Koska (která ale vyšla už v roce 1999, takže je zastaralá), totiž takovou knihu hledám marně. Nakonec jsem si ji musel napsat sám: 1001 tipů a triků pro PHP.

PHP a MySQL bez předchozích znalostí není špatná kniha a v PHP začátečníka programovat myslím naučí. Databáze jsou popsané opravdu jen zlehka, není vysvětlen ani primární klíč natož auto increment, z SQL příkazů je popsán jen základní SELECT a INSERT. Plynulost výkladu je dobrá a postupuje od jednoduchého ke složitému. Při čtení jsem si sice občas připadal jak při sledování Teletubbies, protože už jednou popsaná myšlenka je často zopakovaná třeba o dva odstavce později, ale začátečníkům to může vyhovovat.

Problém knihy tkví v tom, že čtenáře nenaučí vytvářet webové aplikace, což se od knihy o PHP tak nějak předpokládá, obzvlášť když jsou všechny ukázky psané v HTML. Nechápu, jak je možné na 175 stranách o PHP zamlčet existenci funkce htmlspecialchars (bez vysvětlení je použita jen v jednom příkladě) a ani okrajově se nezmínit o magic_quotes_gpc, obzvlášť když se komunikuje s databází.

Poznámky ke knize

Ke knize jsem si udělal několik poznámek. Červeně jsou označeny chyby, které rozšiřují oficiální errata. Zeleně jsou možná rozšíření a doplnění, zbytek jsou poznámky pro autora, které by mohl zohlednit třeba při druhém vydání.

V knize jsem narazil také na pár překlepů, ty jsem poznačil rovnou do knihy.

Celkově vzato jde výklad probraných oblastí docela do hloubky, ale často skončí těsně před koncem. Čtenář má tedy pocit, že probranou oblast dobře zná, takže jí třeba při čtení PHP manuálu nebude věnovat pozornost, tím mu ale některý důležitý detail unikne.

Závěr

Kniha je jen úvodem do PHP, vůbec nejsou popsané objekty, ale třeba ani cookies, chybí byť i jen zmínka o užitečnosti oddělení PHP a HTML kódu u větších projektů. S klidným svědomím tuto knihu tedy doporučit nemohu, stejně jako knihu Jiřího Brázy, ke které mám také výhrady.

Jakub Vrána, Osobní, 31.8.2009, diskuse: 36 (nové: 0)

Diskuse

ikona Joelp:

A co kniha PHP 5 Power Programming volně stahnutelná na root.cz, nebo její český překlad pojmenovaný Mistrovství v PHP 5 od cpressu?

ikona Jakub Vrána OpenID:

Nečetl jsem, ale podívám se na ní. Pro začátečníky podle mě takovéto bichle nicméně nejsou úplně nejvhodnější.

ikona Joelp:

Já jsem pořídil Programujeme PHP profesionálně, která má přes 650 stran, ale zdá se mi vhodná i pro začátečníky. Není tak zaměřena na PHP5 jako PHP 5 Power Programming, ale velice se mi líbí.

ikona zaachi:

Na tehle knize jsem vyrustal, naucil jsem se na ni zaklady. Bohuzel je zde nedostatecne popsane napriklad objektove programovani a strasne zmatene popsane databaze.
Jinak i kdyz ma kniha pres 600 stranek, prijde mi ze v ni mohlo byt mnohem vice.

Bonzakcek:

Na OOP je docela dobrá tahle kniha...
PHP – objektově orientované od Peter Lavin - http://www.grada.cz/katalog/seznam/php-objektove-orientovane_4686/ ,ale pro začátečníky je docela dobrá tahle PHP nejen pro začátečníky od Mgr. Martina Pokorného
http://www.computermedia.cz/knihy/php-nejen-pro-zacatecniky.html

ikona Jakub Vrána OpenID:

Kniha pana Pokorného vzhledem k datu vydání asi nebude zohledňovat PHP 5.

ikona Jakub Vrána OpenID:

Kniha to je opravdu dobrá, ale také se mi na ní pár věcí nelíbí, konkrétně např. v kapitole 5.3:

1. K metodě formuláře je řečeno pouze tolik, že když přenášíme citlivá data, tak bychom měli použít metodu POST. Tu bychom přitom měli použít vždy, když odeslání formuláře provede nějakou akci.

2. Kniha schvaluje použití nebezpečné proměnné $_REQUEST.

3. Při vypsání hodnot není zohledněna direktiva magic_quotes_gpc.

Ještě mě trklo nepoužití funkce htmlspecialchars(), ale to je dále rozebráno.

Pak mi taky vadí, že metody na stránce 128 očekávají vstup ošetřený pro databázi. Hešuje se navíc nikoliv samotné heslo, ale heslo s přidanými zpětnými lomítky.

Skript pro nahrání obrázků kontroluje MIME typ, který se dá snadno podvrhnout. Měl by kontrolovat koncovku, podle které se následně rozhoduje server při posílání souboru.

Skript na stránce 143 by měl v případě neplatné stránky zobrazit 404, nikoliv titulní stránku.

Na knihu jsem se nedíval tak podrobně, ale bohužel i v dobré knize věhlasných autorů je řada netriviálních chyb.

Pavel Kral:

Jak vidim vyhodna koupe:)hned pro ni jdu do knihkupectvi:)

Pavel Kral:

php 5 power programming je dobra..mam ji pouze v aj a procital jsem ji letem svetem..a jak rika Jakub..nehorazna bichle a rozhodne ne pro zacatecniky..zameruje se hlavne na OOP

marek:

otázkou je, jestli to je špatně - myslím že naopak, oop je potřeba učit rovnou, dokud je mysl nepopsaná. Naučit se pak myslet aspoň trochu objektově dělá pak neskutečný problémy...

Daniel Tlach:

Já mám nějak celkově problém s knihami od českých autorů. Většina mi přijde chaotická a neúplná (Kosek je výjimka potvrzující pravidlo). Nechtěli byste si třeba sednout s Davidem Grudlem a vypotit něco? :) Myslím, že by to bylo jen ku prospěchu věci.

Martin:

Tohle je typická kniha pro lepiče. Zřejmé je to už z anotace "dosavadní knihy o programování WWW stránek a webových aplikací pro vás byly příliš složité a plné zbytečné teorie?", "Nevynechá žádný krok, nezabíhá však do detailů "...

Je bohužel obecnou pravdou, že člověk, který dnes začíná s php jako svým prvním programovacím jazykem, je slepý chudák. Špatné návyky, špatné techniky a už se toho nikdy nezbaví. Doufám, že tento fakt na svých školeních důrazně opakuješ! :)

matej21:

ja jsem se php naucil z knizky PHP 5 - zaciname programovat od grada.

ikona Jakub Vrána OpenID:

Ta je z článku odkázaná spolu s několika mými připomínkami.

dadmtb:

Ja by som odporúčal knihu "PHP5, MySQL, Apache Vytvarime webové aplikace" je pre trocha už pokrocilejšieho (aspon ovládať trocha základov, aj ked na začiatku sa takisto venuje základom). Je to podla mna naj kniha :)

Visitor:

Jakube myslím, že jsi zbytečně moc kritický. Nečetl jsem úplně všechny odrážky, ale často upozorňuješ na "chyby", které jsou až takovou specialitkou, že to právě začátečnáka vůbec zajímat nebude.

Příklad za všechny:
35 Mohlo by být uvedeno, že značka ?> na konci souboru je nepovinná.
nevidím důvod proč v normální aplikaci neukončovat PHP kód, stejně jako nevidím důvod proč neukončovat tagy buněk nebo řádků v HTML.

Celkově se ke knížce nevyjídřím, protože jsem ji nečetl, ale tvé výtky mě o vyložené nekvalitě nepřesvědčily.

ikona Jakub Vrána OpenID:

Výhoda vynechání ?> na konci souboru se projeví v momentě, kdy vložím soubor výhradně s PHP kódem, který končí bílými znaky a pak se po vložení tohoto souboru pokusím poslat hlavičky.

Tohle je pro začátečníka možná opravdu informace navíc, i tak by ale o této možnosti měl vědět. Protože pak uvidí skript, kde bude ?> chybět a on si bude myslet, že tam je chyba.

Oba tyto koncepty (vložení souboru s PHP kódem a následné poslání hlavičky) měly být v knize použity (u webových aplikací jde o zcela základní obrat), pak by se výhoda neuzavření projevila i přímo v knize.

Navíc tento bod není označen jako chyba, ale jako námět na rozšíření.

bukaJ:

Souhlasím, je to drobnost, se kterou jsem ale na samém začátku perně bojoval. Kdybych se tuto drobnost dozvěděl (byť třeba jako perličku v nějakém TIP boxu), ušetřil bych si desítky hodin.

Jaku začátečníka mě opravdu nenapadlo, že ?> není povinné. Vynechání jsem považoval za neplatnou konstrukci.

Ne, zde opravdu musím s Jakubem souhlasit, protože myslím, že toto je důležitá informace, kterou sice začátečník nevstřebá správně při "prvním čtení na jeden dech", ale někde v mysli se mu tiše zachytí a teprve v okamžiku, kdy bude hledat řešení na neustále přebývající koncové entery, má větší šanci, že vykročí správným směrem na první pokus.

Petr Konůpek:

Já myslím, že pro úplného laika je velmi dobrá kniha PHP pro úplné začátečníky, kde se seznámí opravdu jen s naprostými základy práce a v návaznosti na ní pak kniha PHP a MySQL - rozvoj webových aplikací, kde se přikračuje k trochu pokročilejším technikám jako OOP apod. a naopak se tam vynechává ten začátečnický balast.

Nicméně když si vzpomenu na svoje začátky - měl jsem asi největší problém vůbec sestavit na svém PC prostředí (Apache, PHP, MySQL), kde bych mohl experimentovat. To není kvalitně popsáno asi nikde... Chápu že to přímo nepatří k problematice, ale je třeba si uvědomit, že když je někdo úplný zelenáč, tak mu nejsou jasné ani základní pojmy.

Ideální jsou v tomto případě návody krok za krokem, bez zbytečných nadinformací, protože ty v tuhle chvíli stejně nepadnou na úrodnou půdu.

Visitor:

Návod jak nainstalovat APACHE+PHP+MYSQL je u Radka Hulána na webu (jinde jsem bohužel kvalitnější a přímočařejší nenašel). Dneska už nejsem takový "hárdkorář", takže buď to jednoduše rozchodím na virtuálním linuxu (občas se hodí rozšířit rozhled mimo windows) a nebo sáhnu po WampServeru, kde nemusím toho mnoho řešit a je to velice přívětivé.

ikona Joelp:

Jsem netušil že pro instalaci LAMP napsat:
"urpmi apache-mod_php mysql"
v příkazové řádce je složité ;)

Ve Windows je to snadnější?

Bonzakcek:

Pro windows existují přímo balíčky které jdou už sestavené a kde nejsou staré verze php jako v případě phpTriad, ale třeba XAMPP - http://www.apachefriends.org/en/xampp.html Taže pro takzvaného zelenáče jsou tato řešení docela dobrá.

Mirek:

... nebo http://vertrigo.sourceforge.net/?lang=cz

Luboš:

Vertrigo mám nainstalované a jsem s nim velice spokojen. Nato, že jsem vyskoušel ledacos.

Jan "Panda" Smitka:

Doma mám "Velká kniha PHP a MySQL 5", kterou napsal W. Jason Gilmore, a nemohu si stěžovat. U nás jí vydal Zoner Press: http://www.zonerpress.cz/kniha/pro-programatory/…-profesionaly

Sice jsem v době, kdy se mi dostala do rukou, v PHP již nějaký ten pátek tvořil, ale i tak jsem se tam dozvěděl některé zajímavé věci a myslím, že by mohla být vhodná i pro začátečníky.

Petrr:

jo tak tu taky mohu doporucit ;)

Srigi:

Tiez doporucujem. OOP aj mysql popisane podrobne.

bahara:

taky ji považuji za asi nejlepší, co jsem do teď o php5 našel

Daniel:

Myslím že nebudem hovoriť len za seba ak napíšem že by som si veľmi rád kúpil knihu od Jakuba Vrány. Je veľká škoda že doteraz Jakub žiadnu knihu o php nevydal. Určite by išla ako sa hovorí "na dračku".

Pajin:

Naprostý souhlas. Pokud chci jít na nějaký kurz, za který zaplatím v současnosti významnou částku, chci samozřejmě, abych získané informace mohl rychle vstřebat.
  K tomu je celkem užitečné mít už nějaké základy zažité. Ale jak si mám zažít správné základy, když vlastně nevím, jakou knihou je nejlepší začít? Lákala mne celkem "Mistrovství v PHP", ale teď si nejsem jistej, jestli to pro mne, jako začátečníka ve webovém programování má smysl.
  Celkem mne opravdu láká výše zmíněná kniha zvaná "Velká kniha PHP a MySQL 5 - kompendium znalostí pro začátečníky i profesionály". Nemohli byste to tu někdo z vás, s PHP již dobře obeznámených, alespoň ve zkratce srovnat?

Díky!

ikona Jont:

Tuhle knihu mám a rozhodně mě nezklamala - jako úplného začátečníka mě naučila základy PHP a také MySQL, což jsou dva nástroje pomocí nichž jde poměrně jednoduše udělat dynamický web. Text knihy je přehledný, teorie je hojně doplněna skripty a navíc je na konci kapitoly test, který ověří vaše znalosti.

Pro někoho, kdo se chce dozvědět to nejdůležitější o těchto dvou technologiích a potom se jimi třeba zabývat hlouběji se  jedná o výbornou knihu. Uplatní se podle mě i jako knížka pro toho, kdo se chce naučit základy programování.

Dan:

Ahoj,
(tykání přijímám - jsme zhruba stejne mladi :-) doporučil by jsi mi knihu od Luboslava Lacka PHP 5 a MySQL 5 Hotová řešení? V PHP sice začínám, ale mám nějaké základy algoritmizace v Jave. Předem dík.

ikona Jakub Vrána OpenID:

Knihu neznám.

Likvi:

Ahoj,
ja tu knihu znam a zacinal jsem podle ni. Je pravda, ze diky teto knize dokaze clovek neco pomerne rychle nabouchat, ale myslim si ze neni uplne vhodna. Kamarad mi dal hned do ruky knihu PHP3 od Jiřího Koska a bylo to nebe a dudy. Je pravda, ze v knize se toho o PHP5 moc nedozvis :), ale na druhou stranu my prisla lepsi pro pochopeni.

MARK:

"Naopak chybí informace, že ukončovacímu identifikátoru už na řádku nic kromě středníku nesmí následovat."

To je docela pikantni, s ohledem na to, ze ve vasi knize 1001 tipu to take NENI :D

ikona Jakub Vrána OpenID:

A v tom je právě rozdíl mezi Průvodcem pro samouky a Tipy a triky – v tom prvním by to být podle mě mělo, v tom druhém může být co chce a co chce může chybět :-).

Vložit příspěvek

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2016 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.