Lekce 1 - Úvod do databází v PHP pro úplné začátečníky
Vítejte v prvním dílu seriálu tutoriálů o práci s MySQL databází v PHP pro úplné začátečníky a bez objektově orientovaného programování. MySQL je nejpoužívanější databáze, která je zadarmo a máte ji k dispozici snad na každém webhostingu. V několika lekcích zde vytvoříme funkční příklady a nakonec také jednoduchý blog s editorem článků.
Úvod
Seriál se budu snažit psát co nejjednodušeji. Budu předpokládat alespoň minimální základy syntaxe PHP. U MySQL databáze si v seriálu popíšeme nutné minimum, čili zde vůbec žádné znalosti nepotřebujete. Znalosti OOP také nepotřebujete.
Pro zájemce jsou zde samozřejmě i podrobnější seriály o MySQL databázi a podrobnější seriály o objektově orientovaném programování. Tento seriál je vlastně taková velmi odlehčená verze, aby si databáze mohl v PHP zkusit úplně každý.
Proč použít databázi
Jako uživatelé nějakého webu chceme určitě měnit jeho obsah (napsat článek, komentář, přidat zboží do eshopu, zaměstnance do firmy a podobně). Bylo by opravdu nepohodlné bušit pro každý článek novou HTML stránku a tu nahrávat na server. V článcích (produktech, zaměstnancích a tak dále) by se navíc nedalo vyhledávat a při větším počtu by to bylo velmi nepřehledné. Mnohem lepší způsob je naprogramovat si v PHP editor článků, který články ukládá do databáze a čtenářům je poté z databáze zobrazuje.
Možná vás napadlo, že k tomu vlastně ani nepotřebujeme nějakou databázi. Data bychom stejně dobře mohli ukládat editorem do nějakých textových souborů nebo něčeho podobného. Určitě by to nějak fungovalo, nebo ne?
Databáze není jen úložiště dat. Jedná se o velmi sofistikovaný a odladěný nástroj, který za nás řeší spoustu problémů a zároveň je extrémně jednoduchý k použití. S databází totiž komunikujeme jazykem SQL, kterým jsou v podstatě lidsky srozumitelné věty. S databází si opravdu píšeme stylem "vyber mi uživatele, jehož email je franta@seznam.cz" nebo "vlož do uživatelů nového se jménem Jan a emailem jan@seznam.cz". Případně můžeme napsat třeba i toto: "vyber mi jméno uživatele s emailem franta@seznam.cz a jeho články, seřazené podle data vydání sestupně". Budete překvapeni, jak jednoduché to je. Databáze za nás řeší ještě spoustu dalších problémů ohledně ukládání dat, které bychom sami asi těžko překlenuli. Zde je však nebudeme rozvádět.
Databáze je tedy taková černá skříňka, která za nás nějakým způsobem řeší vše okolo dat a my se o to nemusíme starat a pouze ji jednoduše používáme. V dnešní době se již jinak s daty prakticky nepracuje.
Relační databáze
MySQL je tzv. relační databáze. Tento pojem označuje databázi založenou
na tabulkách. Každá tabulka obsahuje položky jednoho typu. Můžeme mít
tedy tabulku uzivatele
, další tabulku clanky
a
další třeba komentare
. Tabulky se většinou pojmenovávají
spíše v jednotném čísle, pro účely tohoto kurzu mi ale přišlo
logičtější použít plurál.
Databázovou tabulku si můžeme představit třeba jako tabulku v Excelu.
Tabulka uzivatele
by mohla vypadat asi takto:
Jméno | Příjmení | Datum narození | Počet článků |
---|---|---|---|
Jan | Novák | 11.3.1984 | 17 |
Tomáš | Marný | 1.2.1989 | 6 |
Josef | Nový | 20.12.1972 | 9 |
Michaela | Slavíková | 14.8.1990 | 1 |
Položky (konkrétně zde uživatelé) ukládáme na jednotlivé řádky, sloupce pak označují atributy (vlastnosti, chcete-li), které položky mají. MySQL databáze je typovaná, to znamená, že každý sloupec má pevně stanovený datový typ (číslo, znak, krátký text, dlouhý text a tak dále) a může obsahovat hodnoty jen tohoto typu. Pokud chceme s relační databází rozumně pracovat, každý řádek v tabulce by měl být opatřený unikátním identifikátorem. U uživatelů by to mohlo být třeba rodné číslo, mnohem častěji se však používají identifikátory umělé a to tak, že uživatele prostě očíslujeme. K tomu se dostaneme později.
Slovo relační označuje vztahy (anglicky relation), které mohou být mezi entitami v databázi, ale tím se nebudeme zatím zabývat.
Potřebné nástroje
Začněme tedy. Potřebovat budeme nakonfigurovaný webserver Apache a databázi MySQL. Předpokládám, že jste již někdy spustili nějaký PHP skript a že prostředí tedy máte k dispozici, případně zde je návod na instalaci PHP a MySQL.
phpMyAdmin
phpMyAdmin je nejpoužívanější prostředí pro práci s MySQL databází. MySQL s phpMyAdminem naleznete na každém webhostingu a pokud se někdy dostanete k cizímu projektu, je velmi pravděpodobné, že bude postaven právě na těchto technologiích. K phpMyAdmin se dostanete přes administrační rozhraní vašeho webhostingu. Na localhostu má obvykle adresu:
localhost/phpmyadmin/
Měli byste vidět webové rozhraní phpMyAdmin, které vypadá asi takto:
Vytvoření databáze
Vytvořme si databázi, se kterou budeme v seriálu pracovat. Obvykle nám bude pro jeden projekt (web) stačit jedna databáze.
Tento krok za nás již na webhostingu téměř vždy udělali a dostaneme k dispozici často právě jednu databázi, která se obvykle jmenuje stejně, jako náš účet (tedy třeba něco jako mojewebovastrankacz1). Na localhostu si ji musíme vytvořit sami.
Klikněme v phpMyAdmin nahoře na záložku Databáze. Vyplníme
název databáze (např. databaze_pro_web
). V databázích
je zvykem pojmenovávat položky bez diakritiky, malými písmeny a s
podtržítkovou notací. Snad vám je jasné, proč není diakritika dobrý
nápad, za velkými a malými písmeny je Linux, který je rozlišuje a
většina serverů právě na Linuxu běží. Porovnávání nastavíme
na utf8_czech_ci
(pro slovenštinu utf8_slovak_ci
),
aby nám fungovala diakritika a řazení. Potvrdíme.
Pokud dole v okně klepnete na "Konzole", můžete si všimnout, že phpMyAdmin na pozadí vygeneroval SQL dotaz z toho, co jsme naklikali a ten poslal databázi. Vypadal asi nějak takto:
CREATE DATABASE databaze_pro_web CHARACTER SET utf8 COLLATE utf8_czech_ci;
Ale pamatovat si ho nemusíte, databáze a tabulky budeme vždy klikat přes phpMyAdmin.
V další lekci, První databázová tabulka a MySQL ovladače v PHP, si připravíme tabulku a vložíme do ní data.