Kochany dzienniczku…

Przed miesiącem zakładaliśmy księgę gości. Blog jest podobną konstrukcją, tyle tylko, że do modyfikacji pamiętnika uprawniony jest jedynie jego właściciel. Tworząc blog, możemy umieszczać dane w pliku tekstowym, ale byłoby to skomplikowane w realizacji. Wyszukiwanie i sortowanie informacji wymagałoby wpisania wielu linii kodu. Cała ta żmudna praca może nas ominąć, jeżeli skorzystamy z bazy danych, w której umieścimy wszystko, co chcemy przekazać internautom.

Przed kodowaniem

Tym, co zniechęca wiele osób do zastosowania bazy danych, jest konieczność nauczenia się języka SQL. W istocie jednak wystarczy umiejętność wydawania kilku podstawowych poleceń. Zanim zaczniemy zmagania z językiem SQL, musimy zwrócić się do administratora sieci z prośbą o założenie bazy na serwerze. Do współpracy z PHP najczęściej wykorzystywany jest MySQL (http://www.mysql.com/). W celu przetestowania skryptów warto uruchomić na własnym komputerze serwer bazy danych. Jego konfiguracja może okazać się dość trudna, dlatego początkującym użytkownikom poleciłbym dostępny w Sieci instalator o nazwie AppServ (http://www.appservnetwork.com/), który za jednym zamachem umieści na dysku twardym aplikacje Apache 1.3.29, PHP 4.3.6, MySQL 4.0.18 oraz phpMyAdmin 2.5.6.

Połącz się!

Skrypt PHP odwołuje się do serwera bazy danych dzięki funkcji mysql_connect(). Wymaga ona podania trzech argumentów: nazwy hosta, użytkownika i hasła. Otrzymamy je od administratora serwera. Wywołanie funkcji z przykładowymi parametrami będzie miało następującą postać:

mysql_connect(“localhost”,
“user1″,”123456”);

Po połączeniu się z serwerem konieczne jest wybranie bazy, której chcemy używać. Jeżeli nosi ona nazwę blog_sql, to w skrypcie powinniśmy zapisać instrukcję:

mysql_select_db(“blog_sql”); Wspomniane komendy możemy umieścić w pliku o nazwie

baza.php

:

<?php
function otworzBaze() {
mysql_connect(“localhost”,
“user1″,”123456”);
mysql_select_db(“blog_sql”);
}
?>

Funkcję zawartą w zbiorze baza.php wykorzystamy w innych skryptach, dopisując do nich po prostu dwie instrukcje:

require “baza.php”

oraz otworzBaze(). Pierwsza z nich włączy zawartość pliku baza.php do naszego skryptu, dzięki czemu uzyskamy dostęp do funkcji otworzBaze() .

Pierwsza tabela

Teraz, korzystając ze skryptu PHP, założymy tabelę, której nadamy nazwę blog. Właśnie w niej umieścimy wszystkie zapisy sieciowego pamiętnika. Każdy zapis będzie się składał z trzech elementów: daty, tytułu i treści, więc także kolumnom w tabeli nadamy takie nazwy. Musimy określić, jaki typ danych może być zapisywany w każdej kolumnie tabeli:

– kolumna data będzie typu DATETIME, pozwalającym na zapis daty i czasu;

– kolumna tytul będzie typu VARCHAR(80), czyli polem znakowym, w którym będziemy mogli umieścić tekst złożony z 80 znaków;

– kolumna tresc będzie typu TEXT. Ten typ pozwala na zapis tekstu o dowolnej długości.

Polecenie sformułowane w języku SQL powinno wyglądać następująco:

CREATE TABLE IF NOT EXISTS blog
(data DATETIME,
tytul VARCHAR(80), tresc TEXT)

Skrypt o nazwie create_table.php, którego zadaniem jest utworzenie tabeli blog, przybierze postać:

require “baza.php”;
otworzBaze();
$q=”CREATE TABLE IF NOT EXISTS blog (data DATETIME, tytul VARCHAR(80), tresc TEXT)”;
$r=mysql_query($q);
if ($r!=false) echo “Tabela
została stworzona!”;
else echo “Podczas tworzenia
tabeli wystąpił błąd!”

Polecenie założenia tabeli przypisaliśmy do zmiennej $q, a następnie za pomocą instrukcji mysql_query($q) wysłaliśmy do serwera bazy danych. Serwer odpowiada nam, czy założył tabelę, a rezultat odpowiedzi zostaje przypisany zmiennej $r. Dzięki niej dowiemy się, czy tabela została założona.

Dodaj rekord…

Tabela obecnie jest pusta, a my chcielibyśmy mieć możliwość dodawania, usuwania oraz edycji zapisów. Zapis w tabeli zwany jest rekordem (record) lub wierszem (row). Aby dodać nowy wiersz, powinniśmy w języku SQL zastosować polecenie INSERT, np.

INSERT INTO blog VALUES (‘2004-05-03 15:18:47′,
‘Test’, ‘Przykładowy wpis’)

W efekcie do tabeli blog zostanie dodany nowy rekord o wartościach: data=’2004-05-03 15:18:47′, tytul=’Test’ i tresc=’Przykładowy wpis’.

Język SQL oferuje wiele funkcji, które mogą ułatwić nam pracę. Jedną z nich jest NOW(), zwracająca aktualną datę i czas. Zastosujemy ją przy zapisie danych do tabeli:

INSERT INTO blog VALUES (NOW(), ‘Test’,
‘Przykładowy wpis’)

Możemy teraz polecenie dodania nowego zapisu przełożyć na język PHP. W tym celu zdefiniujemy funkcję

insert()

:

function insert($tytul,$tresc) {
$q=”INSERT INTO blog VALUES (NOW(),
‘”.$tytul.”‘, ‘”.$tresc.”‘)”;
$r=mysql_query($q);
}

…lub go skasuj

Wiemy, jak dodawać wpisy do blogu. A jak je usuwać? Jeżeli na przykład zamierzamy skasować wszystkie zapisy zatytułowane Test, powinniśmy wydać polecenie:

DELETE FROM blog WHERE tytul=’Test’ W odpowiedzi otrzymamy informację o tym, ile rekordów zostało skasowanych. Aby wskazać, który wiersz blogu chcemy usunąć, posłużymy się polem data. Jest ono unikatowe – zapamiętuje czas z dokładnością do jednej sekundy, a trudno sobie wyobrazić, aby właściciel strony dokonał dwóch zapisów w tej samej sekundzie. Zdefiniujmy zatem funkcję, której zadaniem będzie usunięcie pojedynczego wiersza:

function delete($data) {
$q=”DELETE FROM blog WHERE
data='”.$data.”‘”;
$r=mysql_query($q);}

Formularz administratora
Autor blogu otrzyma do dyspozycji prosty fotmularz pozwalający na zalogowanie się na stronie i wprowadzanie poprawek do pamiętnika:

<!DOCTYPE HTML PUBLIC “-//W3C//Dtd
HTML 4.0//EN”>
<html>
<head>
<meta http-equiv=”Content-type” content=”text/html; charset=iso-8859-2″ >
<link href=”blog.css”
type=text/css rel=stylesheet>
<title>Logowanie</title>
</head>
<body>
<form action=”blog.php” method=”post”>
<input type=”hidden” name=”co” value=”login”
>
<table>
<tr>
<td>Login:</td>
<td><input type=”text” name=”login” ></td>
</tr>
<tr>
<td>Hasło:</td>
<td><input type=”password”
name=”pass” ></td>
</tr>
<tr>
<td> </td>
<td><input type=”submit” value=”Wyślij”
>
</td>
</tr>
</table>
</form>
</body>
</html>

Więcej:bezcatnews