Създаването на книга за гости изисква таблица в база данни за съхраниение на съобщенията, които посетителите ще оставят. Таблицата може да създадете директно в монитора на MySQL или с PHP.
Следващия скрипт използва съществуваща база данни "klienti:. В нея се създава таблица с име "gosti" с полета "id", "ime", "email", "komentar" и автоматично после "vreme" за датата и часа на записване на съобщението (във формат timestamp).
Скрипта трябва да се изпълни само веднъж, за да създаде таблица за книгата ни за гости.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| <html>
<head>
<title>Създаване на таблица</title>
</head>
<body>
<?php
// Свръзване с ДБ (Проверяваме за грешки)
mysql_connect("localhost", "test", "test") or die("Не може да се свърже със сървъра");
@ mysql_select_db("klienti") or die("Няма такава ДБ");
// Създаваме таблица в БД
$install = "CREATE TABLE `gosti` (
`id` INT( 4 ) NOT NULL AUTO_INCREMENT,
`ime` VARCHAR( 40 ) NOT NULL,
`email` VARCHAR( 40 ) NOT NULL,
`komentar` TEXT NULL, vreme timestamp ( 14 ),
PRIMARY KEY ( id )) TYPE = MYISAM";
mysql_query($install);
// Затваряме връзката с MySQL
mysql_close();
?>
</body>
</html> |
Добавяне на записи в книгата за гости
След като таблицата за гости вече е създадена от скрипта в предишния пример, в нея може да се съхранява информация, попълнена в
HTML формуляр, използващ
PHP. Когато бъде зареден за първи път в браузър, следщия PHP скрипт показва формуляр, съдържащ полетата "ime, "email" и "komentar". Ако някое от тях е оставено празно и е натиснат бутона за приемане на формуляра, той се показва още веднъж.
Ако
формулярът е попълнен изцяло, скриптът ще запише въведената информация в съответните колони на таблицата "gosti". На страницата ще се изпише потвърждение и хипервръзка към друга страница, на която може да се види информацията в книгата за гости.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| <html>
<head>
<title>Попълване на книгата за гости</title>
</head>
<body>
<?php
$self = $_SERVER['PHP_SELF'];
$ime = $_POST['ime'];
$email = $_POST['email'];
$komentar = $_POST['komentar'];
$submit = $_POST['submit'];
//html формуляр
$form = "<form action='$self' method='post'>";
$form.= "Име: <input type='text' name='ime'";
$form.= "size='40' value=$ime><br>";
$form.= "Email-адрес: <input type='text' name='email'";
$form.= "size='40' value='$email'> <br>";
$form.= "Въведете вашия коментар: <br>";
$form.= "<textarea name='komentar' cols='30'";
$form.= "rows='3'>".$komentar."<\/textarea><br>";
$form.= "<input type='submit' name='submit'";
$form.= "value='Приеми'> </form>";
//показване на формуляра при първо отваряне
if (!$syobsht) {
$syobsht = $form;
}
else{
//показване на съобщението и на формуляра, ако не е бил попълнен изцяло
if (!$ime or !$email or !$komentar) {
$syobsht = "<b>Моля попълнете всички полета</b><br><br>";
$syobsht .= $form;
}
else //добавяне на информацията от формуляра в таблицата gosti
{
//свързване с mysql
$conn = mysql_connect("localhost", "test", "test")
or die("неуспешен опит за връзка с базата данни");
//селектиране на базата данни
$r = mysql_select_db("klienti", $conn)
or die("неуспешен опит за селектиране на базата данни");
//създаване на sql заявка
if ($ime and $komentar) {
$zaiavka = "INSERT INTO gosti
(ime, email, komentar)
VALUES ('$ime', '$email', '$komentar')";
$r = mysql_query($zaiavka, $conn)
or die("sql заявката не може да бъде изпълнена");
}
// потвърждаване на въвеждането и
// показване на връзката за разглеждане на книгата
if ($r) {
$syobsht = "<h2>Благодарим ви - Вашият коментар е записан.</h2>";
$syobsht .= "<h2><a href = 'kniga.php'>";
$syobsgt .= "Разглеждане на книгата за гости</a></h2>";
}
}
}
echo ($syobsht);
?>
</body>
</html> |
Когато формулярат бъде приет с попълнена информация във всички полета, данните се добавят към таблицата gosti в
базата данни и се изписва потвърждение.
Сега можете да видите записа в монитора на MySQL. Забележете че данните id и vreme се добавят автоматично.
Изполване на данни за дата и час
Четиринайсет цифровото число от тип timestamp в
MySQL записва датата и часа в следния формат:
първите четири цифри представляват годината, а всяка следваща двойка цифри са месеца, деня, часа, минутите и секундите.
Можете да използвате
PHP функцията substr(), за да видите част от числото, представляващо времето и часа. Като първи аргумент се подава самото поле от тип timestamp. Като втори аргумент във вид на число се подава позицията на първия символ, който ще бъде извлечен, а третият аргумент е дължината на символния низ, който ще бъде прочетен.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
| <html>
<head>
<title>Използване на дата и час</title>
</head>
<body>
<?php
$conn = mysql_connect("localhost", "test", "test");
$r = mysql_select_db("klienti", $conn);
$zaiavka = "SELECT * FROM gosti WHERE id=1";
//разделяне на часа и дадата в по нагледен формат
while ($red = mysql_fetch_array($r)) {
$vreme = $red["vreme"];
$god = substr($vreme, 0, 4);
$mes = substr($vreme, 4, 2);
$den = substr($vreme, 6, 2);
$chas = substr($vreme, 8, 2);
$min = substr($vreme, 10, 2);
$sek = substr($vreme, 12, 2);
$novo_vreme = date("d F Y, D, h:i a",
mktime($chas, $min, $sek, $mes, $den, $god));
echo ("Дата и час на въвеждането: " . $novo_vreme);
}
?>
</body>
</html> |
Резултата от този пример ще бъде дата, подобна на тази:
Дата и час на въвеждането: 011 Jan 2008, Fry, 02:12
Рзглеждане на книгата на гости
Когато щракнете в/у връзката в примера за добавяне на записи в книгата за гости, се зарежда скрипта kniga.php, изписан по долу. Той извлича информацията от всяко поле от последните два записа в таблицата gosti, организирани в низходящ ред според времето, в което са записани.
Скриптат показва за всеки запис съхранените име, email адрес, коментар и форматирани дата и час.
Дори в таблицата gosti да са въведени десет записа, скрипта генерира HTML резултатите само за последните два. Адресът на електронната поща на потребителя е форматиран във вид на връзка с протокола mailto:, за да се улесни отговора на коментара.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| <html>
<head>
<title>Разглеждане на книгата за гости</title>
</head>
<body>
<?php
//свързване с MySQL
$r = @ mysql_connect("localhost", "test", "test") or die("Грешка");
//селектиране на базата данни
$r = @ mysql_select_db("klienti") or die("Грешка");
//sql заявка за последните два записа
$zaiavka = "select * from gosti order by vreme desc limit 2";
//изпълнение на заявката
$r = @ mysql_query($zaiavka) or die("Заявката не може да бъде изпълнена");
//цикал за записите, създаващ теблица за всеки от тях
while ($red = mysql_fetch_array($r)) {
?>
<b>Име:</b> <?php echo $red["ime"]; ?><br>
<b><Email:</b> <a href="mailto:<?php echo $red["email"]; ?>">
<?php echo $red["email"]; ?></a><br>
<?php
$vreme = $red["vreme"];
$god = substr($vreme, 0, 4);
$mes = substr($vreme, 4, 2);
$den = substr($vreme, 6, 2);
$chas = substr($vreme, 8, 2);
$min = substr($vreme, 10, 2);
$sek = substr($vreme, 12, 2);
$novo_vreme = date("d F Y, D, h:i a", mktime($chas, $min, $sek, $mes, $den, $god));
?>
<b>Дата: </b> <?php echo $novo_vreme; ?> <br />
<b>Коментар: </b> <?php echo $red["komentar"]; ?><br />
<hr />
<?php } ?>
</body>
</html> |