Procvič si angličtinu zdarma s naším americkým e-learningem! Learn more
Pouze tento týden sleva až 80 % na celý Java e-learning!

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

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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

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. Databázi máme připravenou, tvorbu tabulky si necháme na příští lekci, První databázová tabulka a MySQL ovladače v PHP.


 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
43 hlasů
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 sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Všechny články v sekci
Databáze v PHP pro začátečníky
Miniatura
Následující článek
První databázová tabulka a MySQL ovladače v PHP
Aktivity (5)

 

 

Komentáře
Zobrazit starší komentáře (10)

Avatar
Ernest Kuki
Člen
Avatar
Ernest Kuki:29.12.2017 18:46

root? to je pro všechny stejne? =)

 
Odpovědět 29.12.2017 18:46
Avatar
Odpovídá na Ernest Kuki
Robert Ďurica:29.12.2017 22:23

Ako pise Hando tak ak to mas u seba na kompu tak to je default. Ak ovsem mysql instalujes/mas na servru tak tam si musis zvolit heslo a tento ucet je defaultne povoleny len z lokalhostu(ak sa sa dobre pametam). Co sa tyka providera tak od neho by si mal dostat prihlasovacie udaje nebo v administraci si uzivatela a db vytvaras sam (neviem ako to ma onebit). Inak pre praci z db pouzivam program HeidiSQL a som s nim maximalne spokojny. :-)

 
Odpovědět 29.12.2017 22:23
Avatar
Ernest Kuki
Člen
Avatar
Odpovídá na Robert Ďurica
Ernest Kuki:29.12.2017 22:29

Super.. dekuji za info .. az se k tomu po silvestru dostanu tak vse vyzkousim =)

 
Odpovědět 29.12.2017 22:29
Avatar
Hando
Člen
Avatar
Odpovídá na Ernest Kuki
Hando:29.12.2017 23:27

Je zásadní rozdíl, jestli se bavíme o localhostu u tebe na pc, nebo o databázi, umístěné někde na komerčním hostingu/serveru.

Na localhostu by to mělo být skutečně 'root' a prázdné heslo. Víceméně si s databází můžeš dělat vše, co tě napadne.

U hostingu to je případ od případu, ale obecně mám zkušenosti takové, že v závislosti na tarifu/hostingu máš vymezený určitý počet databází (nebavíme se o tabulkách), které se spravují v administraci hostingu, kde se k nim zároveň dají např. nastavit přístupová práva pro specifické uživatele (např. účet pro správu aktualit nepotřebuje přístup k databázi fotogalerie apod.), vymezit rozsahy IP adres, odkud se můžeš připojit k phpmyadminu apod. Tam si můžeš nastavit přístupové údaje, které potom použiješ pro přístup přes nějaký nástroj pro práci s databází - většina hostingů zřejmě používá phpmyadmin.
Já to občas dělám tak, že vůbec na žádný phpmyadmin hostingu nelezu, ale nakopíruji si na hosting výše zmíněného adminera a veškerou práci (kromě vytváření databází) dělám přes něj. (Někomu se to ale může jevit nebezpečně, ale s opatrností tam zvýšené riziko nevidím.)
Možností je plno. :)

Editováno 29.12.2017 23:29
 
Odpovědět  +2 29.12.2017 23:27
Avatar
Milan Hrubý
Člen
Avatar
Milan Hrubý:23. dubna 18:38

Zdravím a prosím o radu.
Nemohu stále "rozběhnout" wrapper (Db.php). Hlásí se mi chybové hlášení pravděpodobně ze špatné syntaxe na řádku 37, tj. definice proměnných:

"Parse error: syntax error, unexpected '$host' (T_VARIABLE), expecting function (T_FUNCTION) or const (T_CONST) in /srv/www/studi­o555.cz/www/Tes­tDatabaze/Db.php on line 37"

děkuji za každou radu.

 
Odpovědět 23. dubna 18:38
Avatar
Jan Poláček
Redaktor
Avatar
Odpovídá na Milan Hrubý
Jan Poláček:23. dubna 18:44

Ahoj, ještě by bylo dobré vidět, jak tu Db třídu používáš = zdroják, kde si jí použil a hází to chybu, potom kod nevkládej do obrázku ale jako kod přímo sem (druhá ikonka </>) a možná by si mohl používat nějakej lepšejší editor :)

Odpovědět 23. dubna 18:44
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Odpovídá na Milan Hrubý
Tomáš Novotný:23. dubna 19:15

Ahoj, úplně si nejsem jistý, zda to funguje bez uvozovek, ale řekl bych že nikoliv...
--> $host = localhost; <--
a to i u ostatních řádků...

Odpovědět 23. dubna 19:15
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Milan Hrubý
Člen
Avatar
Odpovídá na Jan Poláček
Milan Hrubý:24. dubna 12:45

Děkuji za odpověď.

 
Odpovědět 24. dubna 12:45
Avatar
Milan Hrubý
Člen
Avatar
Milan Hrubý:25. dubna 8:31

Vyřešeno. Chyba nebyla ve špatné syntaxi, ale byla ve špatném zadání přihlašovacích údajů v souboru index.php na řádku 32. Díky všem za ochotu při řešení problému.

Db::connect('localhost', 'databaze_pro_web', 'databaze_pro_web', '***heslo***');
 
Odpovědět 25. dubna 8:31
Avatar
Odpovídá na Milan Hrubý
Tomáš Novotný:25. dubna 8:39

Vážně? "Parse error: syntax error, unexpected '$host' (T_VARIABLE)", že by se parser spletl? Zajímavé. Každopádně GL.

Odpovědět 25. dubna 8:39
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
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 10 zpráv z 20. Zobrazit vše