Výběr funkcí pro napojení MySQL:
1 | Stáhněte si přes FTP z fileserveru pomocí účtu anonym soubor php02.zip a extrahujte jej tak, aby rozbalený soubor byl ve složce c:\temp\php02 | FileZilla |
2 | Editujte v PSPadu soubor c:\temp\php02\kniha_navstev.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 nebo zadáním adresy localhost/phpmyadmin v www prohlížeči | XAMPP, prohlížeč |
5 | Vytvořte v phpMyAdmin novou databázi jprijmeni_php02 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\php02\kniha_navstev.sql do nově vytvořené databáze pomocí záložky Import a proveďte kontrolu načtení dat | phpMyAdmin |
Projekt kniha návštěv
7 | Nastavte v PSPadu kódování UTF-8 (Formát - Kódování) a otevřte nový HTML5 dokument (Soubor-Nový-Podle šablony-HTML5) |
8 | Mezi značky <title></title> napište "Jméno Příjmení - Kniha návštěv" |
9 | Za <body> napište nadpis (do značek h1) "Kniha návštěv" |
10 | Dokument uložte jako c:\Programy\xampp\htdocs\jprijmeni_kniha.php a ověřte jeho vzhled v prohlížeči na adrese localhost/jprijmeni_kniha.php |
Vlastní formulář:
11 | Přidejte v dokumentu
jprijmeni_kniha.php za nadpis obálku formuláře: <form name="kniha" action="jprijmeni_kniha.php" method="get"> </form> |
12 | Do značek formuláře přidejte tabulku s poli (místo "x" a "y" doplňte
maximální počty znaků ze struktury tabulky): <table width="100%"> <tr> <td>Jméno:</td><td><input name="jmeno" size="30" maxlength="x"></td> </tr><tr> <td>Mail:</td><td><input name="email" size="50" maxlength="y"></td> </tr><tr> <td>Zpráva:</td><td><textarea name="zprava" rows="5" cols="60"></textarea></td> </tr></table> |
13 | Před značku ukončení formuláře přidejte odesílací tlačítko: <input type="submit" value="Odeslat a uložit zprávu"> |
14 | Uložte dokument a otestujte v prohlížeči funkčnost formuláře (zápis do polí) a odesílacího tlačítka (musí se zobrazovat stejná stránka). Všimněte si po odeslání adresního řádku - obsahuje data z polí. |
První průchod a ošetření prázdných polí
15 | Vložte za formulář kód: <?php if (isset($_REQUEST['zprava'])) { echo '<p>Další spuštění</p>'; /**/} else { echo '<p>První spuštění</p>'; } ?> - - ověřte syntaxi (Ctrl+F9) a v prohlížeči pravdivost hlášení (sledujte také adresní řádek - zkuste smazat z adresy řetězec za otazníkem) |
16 | V předchozím příkazu přidejte do části prováděné při dalším spuštění
(před /**/) kód: if ($_REQUEST['zprava']=='') { echo '<p>Chyba: nebyla zadána zpráva!</p>'; exit(); } - - ověřte v prohlížeči pravdivost hlášení |
17 | Podobně přidejte kontrolu pro pole jmeno a email |
Vkládání hodnot do polí
18 | Přidejte k inputu pro email parametr value="jmeno.prijmeni@domena.cz" a po uložení vyzkoušejte zobrazení předvyplněné hodnoty ve formuláři |
19 | Přidejte k inputu pro jmeno parametr
value="<?php if
(isset($_REQUEST['jmeno'])) echo $_REQUEST['jmeno']; ?>"
a po uložení vyzkoušejte zobrazení vyplněné hodnoty po odeslání formuláře |
20 | Podobně upravte input pro email |
Ošetření vkládání HTML značek
21 | Zapište do pole jmeno ">Vložený text<b a odešlete formulář - sledujte změnu vzhledu formuláře - zobrazte si zdroj (Ctrl+u) |
22 | Přidejte u inputů jmeno a email funkci htmlspecialchars
- např. místo echo $_REQUEST['jmeno']; vložte: echo htmlspecialchars($_REQUEST['jmeno']); - ověřte znovu odeslání formuláře s hodnotou z předchozího zadání |
Napojení na MySQL
23 | Přidejte do php části prováděné při dalším
spuštění (za kontrolu polí a před /**/) kód pro připojení
k MySQL databázi jprijmeni_php02 $pripojeni = mysqli_connect("localhost", "root", "", "jprijmeni_php02"); //kontrola chyby if (mysqli_connect_errno()) { echo "Spojení selhalo: ".htmlspecialchars(mysqli_connect_error(), ENT_QUOTES); exit(); } else echo "<p>Připojení k MySQL proběhlo úspěšně.</p>"; //odpojeni mysqli_close($pripojeni); |
24 | Ověřte syntaxi (Ctrl+F9), uložte dokument a otestujte |
Uložení návštěvy z odeslaného formuláře do databáze
25 | Přidejte do části prováděné při dalším
spuštění (před //odpojeni) kód pro přípravu
SQL dotazu: // Vytvoření SQL příkazu typu INSERT $sql_prikaz = "INSERT INTO kniha_navstev (jmeno,email,zprava) " ."VALUES('" .mysqli_real_escape_string($pripojeni,$_REQUEST['jmeno']) ."','" .mysqli_real_escape_string($pripojeni,$_REQUEST['email']) ."','" .mysqli_real_escape_string($pripojeni,$_REQUEST['zprava']) ."')"; echo "<p>Prováděný SQL příkaz: ".$sql_prikaz."</p>"; |
|
26 | Ověřte syntaxi (Ctrl+F9), uložte dokument a otestujte |
27 | Přidejte před
//odpojeni kód pro
uložení zprávy a ošetření chyby: mysqli_query($pripojeni, $sql_prikaz); //kontrola chyby if (mysqli_errno($pripojeni)) { echo "Chyba - INSERT nebyl proveden: ".htmlspecialchars(mysqli_error($pripojeni), ENT_QUOTES); exit(); } else echo "<p>Nová zpráva byla uložena</p>"; |
28 | Ověřte syntaxi (Ctrl+F9), uložte dokument a přidejte přes prohlížeč alespoň 3 zprávy - ověřte jejich uložení do databáze v phpMyAdminu |
Výpis návštěv
29 | Doplňte místo tří teček SQL příkaz pro výpis všech sloupců a řádků tabulky
kniha_navstev: $sql_prikaz = "..."; |
30 | Přidejte kód pro výpis výsledků dotazu: echo "<p>Nejčerstvější zprávy:</p>"; $vysledek = mysqli_query($pripojeni, $sql_prikaz); if (mysqli_errno($pripojeni)) { echo "Chyba - příkaz select nebyl proveden: ".htmlspecialchars(mysqli_error($pripojeni), ENT_QUOTES); exit(); } while ($radek = mysqli_fetch_array($vysledek)) { /*vraci pole hodnot radku*/ echo '<hr><p>Datum: '.$radek['datum'].'<br>Napsal: '.$radek['jmeno'].' ('.$radek['email'].')<br>' .'Zpráva: '.$radek['zprava'].'</p>'; } mysqli_free_result($vysledek); |
31 | Ověřte syntaxi (Ctrl+F9), uložte dokument, ověřte uložení zprávy a jejich výpis přes prohlížeč |
Závěrečné úkoly:
32 | Upravte SQL dotaz tak, aby byl výpis řazený od nejnovějších zpráv po nejstarší a aby se ve výpisu zobrazovaly jen poslední 3 zprávy - otestujte |
33 | Upravte kód tak, aby se zprávy vypisovaly v HTML tabulce <table>...</table> se sloupci datum, jmeno, email, zprava |
Ukončení práce:
34 | Poslední výpis v prohlížeči uložte jako kniha.htm |
35 | Oba soubory c:\Programy\xampp\htdocs\jprijmeni_kniha.php + kniha.htm uložte na fileserver do nově očíslované složky |