6.17. Programování serverových databází - PHP

6.17.1. Opakování

1 Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubor php01.zip a extrahujte jej tak, aby rozbalený soubor byl ve složce c:\temp\php01 FileZilla
2 Editujte v PSPadu soubor c:\temp\php01\adresar_mysql.sql a prověřte existenci příkazů pro vytvoření tabulky a vložení řádků PSPad
3 Spusťte z řídícího panelu XAMPP servery Apache a MySQL XAMPP
4 Spusťte phpMyAdmin tlačítkem Admin a všimněte si IP adresy v prohlížeči XAMPP
5 Vytvořte v phpMyAdmin novou databázi jprijmeni_php01 s porovnáváním  utf8_czech_ci, kde jprijmeni nahraďte svým prvním písmenem ze jména a příjmením bez diakritiky phpMyAdmin
6 Nastavte novou databázi jako aktuální a importujte soubor c:\temp\php01\adresar_mysql.sql do nově vytvořené databáze pomocí záložky Import a proveďte kontrolu načtení dat phpMyAdmin
7 Vložte do tabulky adresar 3 nové řádky s vymyšlenými jmény a telefony phpMyAdmin

6.17.2. PHP - úvod

Nastavení:

8 Ověřte v PSPadu nastavení web serveru a kompilátoru PHP podle parametrů uvedených výše PSPad

Úvod do PHP

9 Nastavte v PSPadu kódování UTF-8 (Formát - Kódování) a otevřte nový HTML5 dokument (Soubor-Nový-Podle šablony-HTML5)  
10 Mezi značky <title></title> napište "Jméno Příjmení - Adresář"  
11 Za <body> napište nadpis (do značek h1) "Příklad výpisu MySQL tabulky"  
12 Dokument uložte jako c:\Programy\xampp\htdocs\vyuka\jprijmeni_adresar.php a ověřte jeho vzhled v interním prohlížeči (Ctrl+Shift+F10) i v externím prohlížeči (localhost/vyuka/jprijmeni_adresar.php)  
13 Ve stejném dokumentu za nadpis napište PHP kód:
<?php echo "<p>Tento text je vypsán pomocí PHP funkce echo.</p>"; ?>
 - zkontrolujte syntaxi (Ctrl+F9) a uložte dokument
 
14 Aktualizujte zobrazení v prohlížeči (F5) a zobrazte si zdrojový kód (Ctrl+u) - zdůvodněte si, proč nejsou ve zdroji značky <?php a ?>  
15 Přidejte komentář a funkci date(), aby se čas zobrazoval jako Hodiny:minuty:sekundy - viz manuál:
<p><?php /*výpis času*/ echo "Aktuální čas generování stránky: ".date("x"); ?></p>
- uložte dokument a aktualizujte několikrát prohlížeč (F5) - sledujte změnu času
16 Přidejte kód pro demonstraci funkce htmlspecialchars:
<?php $vstup="<b>Text</b>";
$vystup=htmlspecialchars($vstup);
echo "<p>Vstup: ".$vstup."</p><p>Výstup: ".$vystup."</p>"; ?>
- uložte dokument a aktualizujte prohlížeč
 

6.17.3. Napojení MySQL databáze

PHP funkce z knihovny mysqli pro napojení MySQL:

Dále jsou použity:

17 Přidejte kód pro připojení k MySQL, k databázi jprijmeni_php01
<?php
$pripojeni = mysqli_connect("localhost", "", "", "jprijmeni_php01");
//kontrola chyby
if (mysqli_connect_errno()) {
echo "Spojení selhalo: ".htmlspecialchars(mysqli_connect_error(), ENT_QUOTES);
exit(); }
//odpojeni
mysqli_close($pripojeni); ?>
 
18 Ověřte syntaxi (Ctrl+F9), uložte dokument a otestujte hlášení chyby - nebyl zadán uživatel - doplňte do mysqli_connect uživatele root a ověřte připojení  
19 Přidejte za if hlášení o úspěšném připojení k databázi:
<p>Databáze připojena</p>
 

6.17.4. Výpis tabulky

Dotaz select a zpracování výsledku - použité funkce:

20 Přidejte před mysqli_close kód pro dotaz do tabulky adresar:
$dotaz = 'SELECTT * FROM adresar';
$vysledek = mysqli_query($pripojeni, $dotaz);
if (mysqli_errno($pripojeni)) {
echo "Dotaz selhal: ".htmlspecialchars(mysqli_error($pripojeni), ENT_QUOTES);
exit(); }
mysqli_free_result($vysledek);
 
21 Ověřte syntaxi (Ctrl+F9), opravte chybu v dotazu, uložte dokument a otestujte v prohlížeči funkčnost dotazu  
22 Zapomněli jsme vypsat výsledky dotazu - před mysqli_free_result vložte kód pro výpis počtu řádků výsledku dotazu (a ověřte funkčnost):
$pocet_radku = mysqli_num_rows($vysledek);
echo '<p>Počet řádků: ' . $pocet_radku . '</p>';
 
23 Podobně přidejte počet sloupců výsledků dotazu (a ověřte funkčnost):
$pocet_sloupcu = mysqli_num_fields($vysledek);
echo '<p>Počet sloupců: ' . $pocet_sloupcu . '</p>';
 
24 Přidejte v phpMyAdmin do tabulky adresar nový řádek a ověřte změnu počtu řádků aktualizací jprijmeni_adresar.php v prohlížeči  

Výpis řádků - použité funkce:

25 Přidejte před mysqli_free_result kód pro výpis řádků se jmény:
while ($radek = mysqli_fetch_array($vysledek)) {
echo '<p>'.htmlspecialchars($radek["jmeno"]).'</p>'; }
 
26 Ověřte syntaxi (Ctrl+F9), uložte dokument a otestujte v prohlížeči funkčnost dotazu  
27 Změňte předchozí kód tak, aby byl ve výpisu za jménem uveden v závorkách i telefon - otestujte funkčnost  
28 Změňte dotaz tak, aby byl výpis seřazen abecedně podle jmen - otestujte  

Naformátování do sloupců tabulky:

29 Upravte předchozí kód přidáním značek tabulky podle vzoru:
echo '<table>';
while (...) { echo '<tr><td>'...'</td><td> '...'</td></tr>'; }
echo '</table>';
 
30 Ověřte syntaxi (Ctrl+F9), uložte dokument a otestujte v prohlížeči funkčnost dotazu  

Přidání záhlaví a rámečku tabulky:

31 Tabulku orámujte rámečkem s jednoduchou čarou  
32 Přidejte do tabulky řádek záhlaví s názvy sloupců - otestujte v prohlížeči  

Přidání nového sloupce:

33 Nadefinujte v phpMyAdmin ve struktuře tabulky adresar nový sloupec mesto (typ volte) a vložte názvy měst alespoň do 3 řádků adresáře  
34 Upravte v PSPadu jprijmeni_adresar.php tak, aby se ve výpisu objevoval i nově přidaný sloupec město (v posledním sloupci tabulky) - soubor uložte a otestujte v prohlížeči  

Ukončení práce:

35 Poslední výpis adresáře v prohlížeči uložte jako c:\temp\php01\adresar.htm  
36 Celou složku c:\temp\php01 (se soubory jprijmeni_adresar.php + adresar.htm) uložte na fileserver do nově očíslované složky