PHP – 37. díl – návštěvní kniha I.

37. díl seriálu o PHP bude věnován praktickému příkladu – vytvoření návštěvní knihy.

Úvod

Dnes si dáme praktický příklad k využití databází. I když pro začátek bude jenom velmi jednoduchý, a to návštěvní kniha.

Návštěvní kniha umožňuje každému návštěvníkovi naší stránky pro nás zanechat jakoukoli zprávu, či vzkaz.

Databázová struktura návštěvní knihy

Nejdříve si vytvoříme databázovou strukturu návštěvní knihy. V podstatě takto bychom měli postupovat u každé úlohy a každého projektu. Tedy tak, že začneme databázovou strukturou. Tu bychom měli navrhovat velice pečlivě, protože změny v databázové struktuře se později dělají jen velmi nesnadno.

Začneme tím, že umístíme návštěvní knihu do nějaké databáze. Pokud chcete umístit návštěvní knihu přímo naostro na váš hosting, tak na výběr nejspíše nemáte, a název databáze máte přidělený od providera. Pokud budete zkoušet na lokálním počítači, nejspíše na intranetovém serveru ze 2. dílu, potom použijeme databázi s názvem pokus, kterou jsme již dříve založili.

Pokud tedy nemáte založenou databázi pokus, založte ji nyní, ať pomocí řádkového klienta (viz 26. díl), nebo pomocí phpMyAdmin (viz 32. díl). V případě, že budete zadávat přímo SQL příkazy, pak databázi pokus vytvoříte pomocí příkazu:

CREATE DATABASE pokus;

Pro návštěvní knihu nám bude stačit jedna databázová tabulka. Nazveme ji book, a umístíme do databáze pokus. SQL příkaz pro vytvoření tabulky book bude následující:

CREATE TABLE book
(
  book_id int unsigned not null auto_increment,
  write_time datetime not null,
  name varchar(30) not null,
  mail text,
  message text not null,
  primary key (book_id)
);

Význam jednotlivých sloupců je následující:

  • book_id – pořadové číslo zápisu do návštěvní knihy. Bude sloužit jako primární klíč, tedy jako jednoznačná hodnota k určení řádku v databázové tabulce.
  • write_time – datum a čas zápisu do návštěvní knihy. Zde bude uloženo kdy vlastně zápis proběhl, aby to bylo možné v knize zobrazit.
  • name – jméno, případně příjmení toho, kdo zapisuje do návštěvní knihy. Většina návštěvníků dá asi přednost tomu psát pod nějakou přezdívkou, to nám ale nevadí. Prostě co bude v kolonce name, to se zobrazí jako jméno.
  • mail – nepovinná mailová adresa toho, kdo nám píše zápis do knihy. Mailová adresa má význam v případě, že návštěvník žádá, abychom mu napsali na jeho soukromý mail.
  • message – Zde je uložená vlastní zpráva.

Databázová tabulka book tedy obsahuje naprosto všechno, co potřebujeme k uložení zpráv do návštěvní knihy.

Formulář na zadávání zpráv do návštěvní knihy

Pro zadávání zpráv je potřeba vytvořit formulář na zadávání. Samotný princip formuláře na zadávání je v podstatě velmi jednoduchý a může vypadat třeba nějak takto:

<form name="book" action="book_write.php" method="post">
<b>Jméno:</b><br>
<input name="name" size="40"><br>
<br>
<b>Mail:</b><br>
<input name="mail" size="40"><br>
<br>
<b>Zpráva:</b><br>
<textarea name="message" rows="5" cols="30"></textarea><br>
<br>
<input type="submit" value="Odeslat zprávu">
</form>

Tento formulář strčíme do stránky, která sdělí návštěvníkovi to podstatné, vychválí návštěvní knihu, případně poděkuje za všechny vzkazy, apod.

Samotný formulář má jenom tři pole – jméno, mail a zprávu. Z toho mail je nepovinná položka, zatímco jméno a zpráva jsou povinné položky. Proto můžeme zavést i JavaScript, který nám zkontroluje, zda jsou obě povinné položky vyplněné:

<script type="text/javascript" language="JavaScript"><!--
function book_test()
{
  var f = self.document.forms.book;
  if (f.name.value.length <= 0)
  {
    alert("Chybí jméno!");
    return false;
  }
  if (f.message.value.length <= 0)
  {
    alert("Chybí zpráva!");
    return false;
  }
  return true;
}
// -->
</script>
<form name="book" action="book_write.php" method="post" onsubmit="return book_test();">
<b>Jméno:</b><br>
<input name="name" size="40"><br>
<br>
<b>Mail:</b><br>
<input name="mail" size="40"><br>
<br>
<b>Zpráva:</b><br>
<textarea name="message" rows="5" cols="30"></textarea><br>
<br>
<input type="submit" value="Odeslat zprávu">
</form>

PHP skript na zapsání nové zprávy

Pokud návštěvník na stránce vyplní políčka ve formuláři a dá odeslat, čímž sděluje, že chce, aby se jeho zpráva přidala k návštěvní knize, pak se předá řízení skriptu s názvem book_write.php. Metodou POST se předají parametry zprávy a my se můžeme věnovat přidání zprávy do tabulky book.

Zprávy můžeme přidat třeba takovýmto skriptem:

<html>
<head>
<title>Zápis do návštěvní knihy</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?php
$id_spojeni = mysql_connect(`localhost`,`root`,``);
if (!$id_spojeni)
  die(`Spojení s MySQL databází se nezdařilo.`);
$vysledek_zvoleni_db = mysql_select_db(`pokus`,$id_spojeni);
if (!$vysledek_zvoleni_db)
{
  echo mysql_errno($id_spojeni),`: `,mysql_error($id_spojeni),`<br>`;
  die(`Nepodařilo se vybrat databázi pokus.`);
}
$name = $_POST[`name`];
$mail = $_POST[`mail`];
$message = $_POST[`message`];
$sql = "INSERT INTO book(write_time,name,mail,message)"
." VALUES(NOW(),"
."`".mysql_escape_string($name)."`,"
."`".mysql_escape_string($mail)."`,"
."`".mysql_escape_string($message)."`)"
;
$id_vysledku = mysql_query($sql,$id_spojeni);
if (!$id_vysledku)
{
  echo mysql_errno($id_spojeni),`: `,mysql_error($id_spojeni),`<br>`;
  die(`Nepodařil se SQL příkaz.`);
}
echo `Zpráva je zapsána`;
mysql_close($id_spojeni);
?>
</body>
</html>

Výše uvedený skript je samozřejmě velmi jednoduchý a ve skutečném skriptu by bylo asi trochu více grafiky a HTML. Přesto náš skript obsahuje vše potřebné, co je nutné k zapsání zprávy do tabulky book.

Příště dokončíme zobrazení návštěvní knihy.

Diskuze (11) Další článek: Pozor na vysoce kritické chyby v QuickTime

Témata článku: Software, Programování, PHP, Kniha, Book, Díl, Zeus, Nota, Alert, Echo, Název databáze, Primární klíč, Message


Určitě si přečtěte

Velký den pro Apple: Uvedl tři nové Macy s vlastním procesorem M1
Lukáš Václavík
PočítačeApple
Google chystá funkci, která z chytrého Gmailu udělá hloupý Gmail
Lukáš Václavík
SoukromíGmailGoogle
Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

Nejlepší notebooky do 10 000 korun: Co má ještě smysl kupovat. A co ne?

** Notebooky s cenou do deseti tisíc korun jsou plné kompromisů ** Existuje několik modelů dobře použitelných pro nenáročné použití ** Vhodnou alternativou jsou tablety nebo repasované počítače

David Polesný | 94

David Polesný
Jak vybrat notebookNotebooky
Fedora 33 prostě funguje. Linux si zaslouží dobýt laptop, je to ale asi opět marné

Fedora 33 prostě funguje. Linux si zaslouží dobýt laptop, je to ale asi opět marné

** Desktopový Linux funguje a vypadá stále lépe ** Fedora 33 není výjimkou ** Ve stínu Windows a macOS tu vyrostly skvělé alternativy

Jakub Čížek | 162

Jakub Čížek
FedoraOperační systémyLinux
Testy procesorů Ryzen 5000: AMD překonalo Intel ve všech směrech

Testy procesorů Ryzen 5000: AMD překonalo Intel ve všech směrech

** AMD začalo prodávat nové procesory Ryzen 5000 s architekturou Zen 3 ** K dispozici jsou nezávislé testy z celého světa ** AMD překonává Intel ve všech směrech

Karel Javůrek | 69

Karel Javůrek
ProcesoryTestyAMD
Čím nahradit WhatsApp: Vyberte si z 10 alternativních komunikátorů

Čím nahradit WhatsApp: Vyberte si z 10 alternativních komunikátorů

** Z WhatsAppu kvůli novým podmínkám utíkají tisíce uživatelů ** Čím nahradit populární aplikaci pro zasílání zpráv? ** Vybrali jsme pro vás 10 alternativních komunikátorů

Karel Kilián | 110

Karel Kilián
KomunikaceWhatsAppInstant Messaging
Messenger a Instagram přicházejí v Evropě o funkce. Kvůli nové směrnici o soukromí
Vladislav Kluska
EvropaInstagramFacebook Messenger

Aktuální číslo časopisu Computer

Jak prodloužit výdrž notebooku

Velké testy: gamepady a inkoustové tiskárny

Důkladný test Sony Playstation 5