1. díl - Úvod do databází v PHP pro úplné začátečníky

PHP Databáze pro začátečníky Úvod do databází v PHP pro úplné začátečníky American English version English version

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...) 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:

Tabulka uživatelů v Excelu

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 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 vztah (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:

phpMyAdmin

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 mojewebovastran­kacz1). 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.

Vytvoření MySQL databáze

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. Databázi máme připravenou, tvorbu tabulky si necháme na příště.


 

  Aktivity (2)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (24 hlasů) :
4.791684.791684.791684.791684.79168


 



 

 

Komentáře

Avatar
Daniel Pokorný:

Když spustím phpMYAdmin vypíše to:Fatal error: Class 'SqlParser\Lexer' not found in C:\xampp\phpMy­Admin\librari­es\Util.class­.php on line 634
Nevíte co s tím?

 
Odpovědět 26.11.2015 14:54
Avatar
Dana
Člen
Avatar
Dana :

Ahoj, nejsou tyto články k dispozici v angličtině?

 
Odpovědět 16. února 10:34
Avatar
Odpovídá na Dana
pradedadedymraze:

No za mě tedy "zaplať pánbu, že je to v CZ" :) V angličitě toho jsou tuny, ale přeci jen v češtině mě to čte rychlejc :)

Editováno 24. února 9:39
 
Odpovědět 24. února 9:38
Avatar
Vít Pleskot
Člen
Avatar
Odpovídá na Daniel Pokorný
Vít Pleskot:

Zda se, ze tvoje chyba je vetsi orisek, resi se na githubu phpmyadmina a definitivni reseni tam neni. Zkouseli to fixnout, nekomu to zabralo, nekomu ne, nekomu zabrala novejsi, nebo jina verze MySQL. Zkus stahnout z gihubu nejnovejsi verzi phpmyadmina z developer verze. Na SO se nekdo snazil opravovat ten util.class.php, ale asi bez vysledku.

 
Odpovědět 24. února 10:00
Avatar
Odpovídá na Vít Pleskot
Daniel Pokorný:

Já jsem to vyřešil tak,že jsem smazal nedávnou historii a cookies u localhost.Od té doby
nemám problém.

 
Odpovědět 26. února 11:54
Avatar
Roland Němec:

Čaute! Měl bych dotaz. Na phpmyadmin mi nejde založit databázi, prej na to nemám oprávnění... A to jako proč??? :D

 
Odpovědět 12. října 17:28
Avatar
gorri
Člen
Avatar
Odpovídá na Roland Němec
gorri:

Máš hosting nebo používáš localhost?

 
Odpovědět 29. října 22:46
Avatar
mkub
Redaktor
Avatar
Odpovídá na Roland Němec
mkub:

nie sme vsevedi... trosku nam rozpis svoj problem...

 
Odpovědět 1. listopadu 4:42
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.