Link do ściągnięcia programu blender w wersji 2.59
PHP Podstawy
Skrypt informacjami o PHP
PHP + MYSQL
Konfiguracja bazy danych
Zanim zaczniesz tworzenie skryptów, musisz mieć utworzoną bazę, aby mieć możliwość umieszczania w niej danych. W tej części pokażę Ci, jak w prosty sposób utworzyć nową bazę danych i przygotować ją do przyjęcia danych. Zacznę również przedstawiać proces tworzenia bazy do zarządzania kontaktami.
Budowa bazy danych
Wszystkie bazy danych MySQL mają standardową strukturę. Pojedyncza baza danych składa się z tabel, z których każda pomimo faktu, że jest częścią bazy, jest całkowicie niezależna i może mieć różną konstrukcję. W tabelach umieszczamy rekordy, które z kolei składają się z określonych pól.
Logowanie się do bazy danych
Proces konfiguracji MySQL zależy od właściciela serwera, jednak do zalogowania się potrzebujesz znać tylko nazwę bazy oraz użytkownika wraz z hasłem.
Jeśli używasz PHPMyAdmin (lub podobnego programu do zarządzania MySQL) utworzenie bazy sprowadza się tylko do podania loginu i hasła użytkownika oraz nazwy nowej bazy.
Tworzenie tabeli
Kiedy już dysponujemy nową bazą, musimy utworzyć tabele. Tabela jest częścią bazy danych służącą do gromadzenia powiązanych ze sobą informacji. W niej dobierzesz zestaw kolumn, którymi będziesz się posługiwał. Dzięki takiej konstrukcji, prawie wszystkie nasze informacje mogą być przechowywane w jednej bazie danych.
Utworzenie tabeli w phpMyAdmin jest dziecinnie proste – wystarczy wpisać nazwę tabeli, wybrać liczbę kolumn i nacisnąć odpowiedni przycisk. Zostaniesz przeniesiony do formularza tworzenia poszczególnych pól. Jeśli zamiast phpMyAdmina używasz własnego skryptu do tworzenia tabeli, cała operacja musi być zawarta w jednym zapytaniu.
Pola
MySQL udostępnia szeroki wybór typów pól oraz ich atrybutów. Wymienię tutaj tylko niektóre z nich:
| TINYINT | Mała liczba całkowita (Small Integer Number) |
| SMALLINT | Mała liczba całkowita (Small Integer Number) |
| MEDIUMINT | |
| INT | Liczba całkowita (Integer Number) |
| VARCHAR | Tekst. Maksymalnie 256 znaków. |
| TEXT | Dowolnie długi tekst. |
Jest to tylko kilka z udostępnianych rodzajów pól. W Internecie z łatwością można znaleźć pełną listę pozostałych typów.
Tworzenie tabeli przy pomocy PHP
Utworzenie tabeli z poziomu skryptu PHP jest znacznie trudniejsze od użycia do tego celu PHPMyAdmina. Zapytanie wygląda następująco:
CREATE TABLE nazwa_tabeli {
Pola
}
Pola są definiowane w następujący sposób:
nazwa_pola typ(ilość_znaków) dodatkowe atrybuty,
Ostatnia definicja kolumny nie może kończyć się przecinkiem, gdyż spowoduje to wystąpienie błędu składni SQL.
W dalszej części tego rozdziału pokażę przykład wykorzystania tego rodzaju zapytań.
Baza kontaktów
Będzie ona zawierać będzie wszelkie informacje kontaktowe ludzi, których dane zechcesz wpisać. W każdym momencie będzie istniała możliwość wykonania wszystkich operacji na kontaktach z sieci Internet. Poniższe pola będą potrzebne do utworzenia tabeli:
| id | INT | 6 | Unikalny identyfikator każdego rekordu |
| first | VARCHAR | 15 | Imię osoby |
| last | VARCHAR | 15 | Nazwisko |
| phone | VARCHAR | 20 | Numer telefonu stacjonarnego |
| mobile | VARCHAR | 20 | Numer telefonu komórkowego |
| fax | VARCHAR | 20 | Numer faxu |
| VARCHAR | 30 | Adres e-mail | |
| web | VARCHAR | 30 | Strona domowa |
Zapewne możesz zadać sobie pytanie, dlaczego użyłem typu tekstowego dla kolumn zawierających numery telefonów i faxu, skoro telefony składają się z cyfr. Możliwe jest użycie typów liczbowych, lecz osobiście preferuję varchar, który umożliwi wprowadzanie myślników i odstępów w numerze, a nawet użycie notacji tekstowej (na przykład 0-800-FIRMA).
Rzeczą na którą szczególnie powinieneś zwrócić uwagę jest pole id, które zostanie ustawione jako PRIMARY, INDEX, UNIQUE a dodatkowo z parametrem ‘auto_increment’ (pole EXTRA/DODATKOWO w PHPMyAdmin). Konsekwencją takich atrybutów będzie ustawienie pola id jako klucza głównego tabeli). Właściwość ‘auto_increment’ spowoduje automatyczne nadawanie każdemu, nowo wstawianemu rekordowi, kolejnego dostępnego identyfikatora.
Jeśli korzystasz z PHPMyAdmina, możesz teraz w prosty sposób utworzyć nową tabelę.
Tworzenie tabeli przy pomocy własnego skryptu PHP
Poniższy kod pozwoli nam utworzyć tę tabelę w PHP. Część kodu nie została jeszcze do końca wyjaśniona, lecz postaram się to zmienić w dalszej części artykułu.
<?
$user = 'username';
$password = 'password';
$database = 'database';
mysql_connect('localhost', $user, $password);
@mysql_select_db($database) or die("Nie udało się wybrać bazy danych");
$query= "CREATE TABLE contacts (id int(6) NOT NULL auto_increment, first varchar(15) NOT NULL, last varchar(15) NOT NULL, phone varchar(20) NOT NULL, mobile varchar(20) NOT NULL, fax varchar(20) NOT NULL, email varchar(30) NOT NULL, web varchar(30) NOT NULL,PRIMARY KEY (id),UNIQUE id (id),KEY id_2 (id))";
mysql_query($query);
mysql_close();
?>
Wstawianie informacji
W poprzednich dwóch częściach wyjaśniłem Ci, co zamierzam przedstawić w tym kursie oraz pokazałem jak stworzyć bazę danych na potrzeby tego artykułu. W tym rozdziale będziemy uczyć się wstawiać dane do naszej bazy.
Łączenie się z bazą danych
Pierwszym krokiem, który musisz wykonać zanim zaczniesz pracę, jest połączenie się z serwerem MySQL. Jest to istotne, gdyż przy braku połączenia z bazą, wysyłane komendy będą kończyły się niepowodzeniem.
Dobrą praktyką jest wypisanie danych niezbędnych do połączenia się z bazą danych w jednym miejscu (np. w pliku) – wtedy, gdy zmienisz hasło, wystarczy dokonać edycji tylko tych kilku linijek kodu:
$username = 'nazwa użytkownika'; $password = 'hasło'; $database = 'nazwa bazy danych';
Na pewno zastanawiasz się, czy trzymanie hasła w pliku *.php jest bezpieczne. Bez obaw – pliki PHP są interpretowane przed wysłaniem odpowiedzi do klienta, więc niemożliwym jest podglądnięcie kodu źródłowego przez serwer www.
Kolejnym krokiem jest wydanie rozkazu PHP aby połączył się z bazą danych:
mysql_connect('localhost', $username, $password);
Funkcja ta nakazuje PHP połączyć się z serwerem ‘localhost’ (tzn. na komputerze, na którym działa skrypt) używając loginu i hasła zapisanych w zmiennych $username i $password. Zwykle jedna maszyna obsługuje zarówno system baz danych jak i serwer HTTP, więc przeważnie będziemy musieli łączyć się z „localhostem”, chyba że nasz administrator nakaże nam podać inny adres.
Zanim zademonstruję Ci jak pracować z bazą danych, poznamy jeszcze jedną instrukcję:
mysql_close();
Jest to bardzo ważna komenda, albowiem odpowiada ona za zamknięcie połączenia z bazą danych. Twój skrypt wciąż będzie działał prawidłowo, nawet jeżeli nie wywołasz tej funkcji, lecz mogą pojawić się problemy ze zbyt dużą liczbą otwartych połączeń. Dobrym zwyczajem jest umieszczanie tej instrukcji w momencie, gdy jesteś pewny, że nie będziesz wykonywał żadnych operacji na bazie danych.
Wybór bazy danych
Po ustanowieniu połączenia z serwerem musisz wybrać bazę danych, na której chcesz operować. Musisz posiadać do niej prawa dostępu. Służy do tego poniższa komenda:
@mysql_select_db($database) or die("Nie udało się wybrać bazy danych");
Nakazuje ona PHP wybrać bazę danych o nazwie zapisanej w zmiennej $database (którą wcześniej zdefiniowałeś). Jeżeli operacja nie zakończy się powodzeniem, to skrypt zakończy działanie wysyłając komunikat
Nie udało się wybrać bazy danych
Użycie dodatkowego warunku or die jest przydatne, gdyż zostawia nam minimalną kontrolę błędów. Nie jest on konieczny do działania skryptów.
Wykonywanie poleceń
Teraz, gdy mamy już ustanowione połączenie oraz wybraną bazę danych, możemy zacząć wykonywanie poleceń.
Istnieją dwie metody wysyłania zapytań SQL. Pierwsza z nich to, po prostu, wpisanie komendy i wywołanie odpowiedniej funkcji. Tego sposobu użyjemy, jeżeli nie będziemy oczekiwać zwrócenia żadnych wyników.
Drugi sposób to przypisanie wyniku zapytania do zmiennej.
W tej części kursu użyjemy pierwszej metody, jako że nie będziemy oczekiwali żadnych rezultatów. Konstrukcja wygląda następująco:
mysql_query($query);
Korzyścią wynikającą z tego zapisu jest fakt, że każde kolejne zapytanie do bazy danych możesz wywoływać w ten sam sposób (kopiując wywołanie tej funkcji) zmieniając tylko zawartość zmiennej $query.
Wstawianie danych
W tej części rozdziału powrócimy do wcześniej stworzonej bazy danych. Dodamy do niej pierwsze informacje.
Imię: John Nazwisko: Smith Telefon stacjonarny: 01234 567890 Telefon komórkowy: 00112 334455 Fax: 01234 567891 E-mail: johnsmith@gowansnet.com Strona domowa: http://www.gowansnet.com
Wszystkie te dane umieścimy w jednym zapytaniu
$query = "INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112 334455','01234 567891','johnsmith@gowansnet.com','http://www.gowansnet.com')";
Na pierwszy rzut oka całość wygląda na skomplikowaną, więc postaram się wytłumaczyć, co to wszystko znaczy.
Po pierwsze „$query =” oznacza, że przypisujemy treść zapytania do zmiennej o nazwie query. Kolejna część:
INSERT INTO contacts VALUES
jest całkiem łatwa do zrozumienia. Zapytanie to nakazuje PHP wstawienie do tablicy ‘contacts’ danych zawartych w nawiasach po słowie kluczowym ‘VALUES’.
Pomiędzy nawiasami wpisujemy wszystkie dane, które mają zostać zapisane. Wykorzystywane są wszystkie pola zgodnie z kolejnością zadeklarowania ich w tabeli. Dane wstawiamy pomiędzy apostrofami. np.
John
zostanie wstawiony do drugiego pola naszej tablicy, które zawiera imię osoby.
Zapewne zauważyłeś, że do pierwszego pola tablicy ‘contacts’ (id) nie jest wstawiana żadna wartość. Tak się dzieje, ponieważ pole ‘id’ jest kluczem głównym tablicy, więc żadne dwa rekordy w bazie danych nie mogą posiadać tych samych wartości w tej kolumnie; właśnie dlatego utworzyliśmy te pole z atrybutem ‘auto_increment’, co oznacza, że jeśli nie podamy wartości pola id, to rekord automatycznie otrzyma kolejny dostępny identyfikator. Nasz pierwszy wstawiany rekord będzie miał wartość ID=1.
W następnym rozdziale
W kolejnej części tego podręcznika pokażę Ci jak przy pomocy formularzy i zmiennych wstawiać informacje do bazy danych, a następnie je wyświetlać.
Wyświetlanie informacji
Do tej pory stworzyłeś bazę danych i umieściłeś w niej dane. W tej części w jaki sposób stworzyć formularz wprowadzania danych oraz w jaki sposób obejrzeć zawartość całej bazy.
Formularz HTML
Umieszczanie danych za pomocą formularzy HTML jest niemal identyczne jak przy wykorzystaniu skryptów PHP. Korzyścią jest brak konieczności zmieniania części skryptu dla każdej danej wymaganej do dodania oraz możliwość pozwolenia użytkownikom na wprowadzanie swoich własnych danych..
Następujący kod stworzy stronę HTML z polami typu textbox celem wprowadzenia żądanych danych:
<form action="insert.php" method="post"> Pierwsze imię: <input type="text" name="first"><br> Drugie imię: <input type="text" name="last"><br> Telefon stacjonarny: <input type="text" name="phone"><br> Telefon komórkowy: <input type="text" name="mobile"><br> Fax: <input type="text" name="fax"><br> E-mail: <input type="text" name="email"><br> strona WWW: <input type="text" name="web"><br> <input type="submit" value="Wyślij"> </form>
Oczywiście można w/w kod jeszcze przeformatować i rozwinąć. Jest to tylko najprostszy przykład formularza na początek. Później będziesz musiał edytować ten skrypt i użyć własności celem dodania do bazy danych:
<?
$username="nazwa użytkownika bazy danych";
$password="hasło do bazy danych";
$database="nazwa bazy danych";
$first=$_POST['first'];
$last=$_POST['last'];
$phone=$_POST['phone'];
$mobile=$_POST['mobile'];
$fax=$_POST['fax'];
$email=$_POST['email'];
$web=$_POST['web'];
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die("Nie znaleziono bazy danych");
$query = "INSERT INTO contacts VALUES ('','$first','$last','$phone','$mobile','$fax','$email','$web')";
mysql_query($query);
mysql_close();
?>
Ten skrypt powinien zostać zachowany pod nazwą insert.php aby mógł zostać wywołany poprzez formularz HTML Działa to na zasadzie: dane wprowadzane, są przekazywane do odpowiednich pół formularza a dalej przypisywane do odpowiednich zmiennych i wartości w skrypcie php który umieszcza je w bazie danych.
Możesz również dodać wiadomość potwierdzającą lub informująca o niepowodzeniu dodawania wpisów do bazy danych. Uzyskasz to za pomocą czystego PHP.
Wyświetlanie danych
W ten oto sposób masz już pierwszy rekord w bazie danych lub wiele więcej. Po pewnym czasie zaczniesz zastanawiać się w jaki sposób mógłbyś je wygodnie obejrzeć za pomocą PHP. Zanim zaczniesz powinieneś zapoznać się z sposobem realizacji pętli w PHP celem wyświetlania danych.
Pierwszą komendą potrzebną do wykonania jest:
SELECT * FROM contacts
jest to podstawowa komenda MySQL mówiąca skryptowi iż ma pobrać wszystkie dostępne rekordy z tabeli contacts. Ponieważ nastąpi zwrócenie danych muszą one zostać powiązane z odpowiednimi wartościami:
$query="SELECT * FROM contacts"; $result=mysql_query($query);
W tym wypadku cała zawartość bazy danych została zawarta w $result. Zanim będziesz w stanie wyświetlić dane będziesz musiał zmienić każdą porcję w osobną wartość. Proces ten realizuje się w dwóch krokach.
Zliczanie wierszy
Zanim będziesz w stanie przypisać dane, musisz wiedzieć ile wierszy zawiera baza. Można oczywiście zapisać to w kodzie, lecz nie jest to dobrym rozwiązaniem gdyż skrypt będzie wielokrotnie zmieniany praktycznie za każdą zmiana liczby wierszy w bazie. Zamiast tego możesz skorzystać z polecenia:
$num=mysql_numrows($result);
Przypisze to wartość zmiennej $num do liczby wierszy przechowywanej w $result. Następnie może zostać to użyte przez pętle i w efekcie nastąpi wyświetlenie danych.
Konfiguracja pętli
Musisz ustawić pętle aby każdy wiersz rezultatu wyświetlić dane w nim zawarte. Używając utworzonego prędzej $num, możesz zapętlić wszystkie wiersze w bardzo prosty sposób. W poniższym kodzie $i jest ilością uruchomionych pętli i warunkuje zatrzymanie wykonywania pętli po osiągnięciu zadanej wartości gdy nie napotka się po drodze żadnych błędów.
$i=0;
while ($i < $num) {
CODE
$i++;
}
Jest to podstawowa pętla PHP. Wykona ona dokładnie taką ilość skoków jaką zadano jako parametr. Za każdym razem $i będzie większe dokładnie o 1 niż poprzednio. Jest to przydatne gdyż $i „mówi” skryptowi która linia rezultatu powinna zostać odczytana. Jako pierwsza linia w wyniku MySQL przyjmowana jest wartość 0 co gwarantuje poprawność działania pętli.
Przypisywanie danych do wartości
Ostatnim krokiem wyjściowego skryptu jest przypisanie kolejnych danych do odpowiadających im wartości. Następujący kod realizuje to zadanie:
$variable=mysql_result($result,$i,"fieldname");
Więc aby dodać każdą wartość do bazy danych musimy wywołać:
$first=mysql_result($result,$i,"first"); $last=mysql_result($result,$i,"last"); $phone=mysql_result($result,$i,"phone"); $mobile=mysql_result($result,$i,"mobile"); $fax=mysql_result($result,$i,"fax"); $email=mysql_result($result,$i,"email"); $web=mysql_result($result,$i,"web");
Nie trzeba pobierać pola ID gdyż nie używamy go w wyjściowym kodzie.
Gotowy skrypt
Możemy teraz napisać pełen skrypt w celu wyświetlenia rezultatu. Dane nie są formatowane:
<?
$username="nazwa użtkownika";
$password="chasło użytkownika";
$database="nazwa bazy danych";
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die("Nie odnaleziono bazy danych");
$query="SELECT * FROM contacts";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
echo "<b><center>Struktura bazy danych</center></b><br><br>";
$i=0;
while ($i < $num) {
$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");
echo "<b>$first $last</b><br>telefon stacjonarny: $phone<br>Telefon komórkowy: $mobile<br>Fax: $fax<br>E-mail: $email<br>Strona WWW: $web<br><hr><br>";
$i++;
}
?>