Podstawy PHP
Podstawy PHP
Plan laboratorium
W ramach laboratorium należy wykonywać ćwiczenia, posługując się podanymi wskazówkami i przykładami. W większości etapów jest udostępniony przykład, który może służyć za szablon. Proszę również obejrzeć udostępnione wraz ze slajdami z wykładu przykłady.
Środowisko pracy
Katalogi
- W katalogu domowym powinien być wcześniej założony katalog
public_html
. - Proszę założyć w nim katalog
php
. - W tym katalogu należy przechowywać wszystkie pliki z laboratorium.
- Proszę przejść do tego katalogu.
Edycja
Proszę otworzyć wybrany edytor, w którym będziecie Państwo edytować pliki.
Polecanym edytorem jest gedit
lub BlueFish
(w razie problemów z kodowaniem znaków: Edycja/Ustawienia/Pliki, Dokument/Kodowanie_Znaków)
Poza edytorem należy otworzyć przynajmniej jedno dodatkowe okno terminala, z katalogiem bieżącym ustawionym na ~/public_html/php
. Będzie ono pomocne przy zmianie praw dostępu, itp.
Przeglądarka
O ile nie podano inaczej wszystkie pliki należy przeglądać przy pomocy domyślnej przeglądarki internetowej (np. Mozilla Firefox
).
Wprowadzenie do języka PHP
- Proszę otworzyć główną stronę PHP http://www.php.net i odnaleźć na niej podręcznik do
PHP
w języku angielskim i polskim. - Jak z głównej strony
PHP
odnaleźć dokumentację do konkretnej funkcji np.echo()
lub instrukcjiforeach
. Można także znaleźć w podręczniku rozdziały dotyczące PostgreSQL (wpisz w wyszukiwarce na stronie php:pgsql
).
Pierwsza strona
- W pliku
public_html/index.html
proszę umieścić jakiś tekst, a następnie zobaczyć go w przeglądarce pod adresemlocalhost/~konto/
. Proszę także spróbować zamiast localhost podać adres IP. - Następnie proszę dołączyć wywołanie dowolnej funkcji PHP, np. echo z jakimś komunikatem powitalnym.
- Sprawdzić działanie w przeglądarce, podając adres:
borg.kis.agh.edu.pl/~konto/
. - W podkatalogu
public_html/php
proszę umieścić poniższy plik:
- info.php
<?php phpinfo(); ?>
Proszę obejrzeć kod żródłowy w przeglądarce (show source) i porównać go z kodem w edytorze pliku.
Prosty formularz
Proszę ściągnąć poniższy prosty formularz w HTMLu do katalogu public_html/php
, a następnie obejrzeć rezultat w przeglądarce:
- form-1.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-2"> <title>To jest nasz 1. formularz </title> </head><body> <h1>Taki prosty formularz do danych osobowych</h1> <p><center> <form method="post" action="intro.php"> <br>Proszę podać imię: <br><input type="text" name="fname"> <br>nazwisko: <br><input type="text" name="lname"> <br>i swoje uwagi: <br><textarea name="memo" rows="4" cols="20" wrap="physical"> NIC!</textarea> <br> <br><input type="submit" value="WPROWADZ"> </center></p> </body></html>
Zwróć uwagę:
- jakim tagiem tworzony jest formularz,
- w jaki sposób podawana jest metoda przekazywania danych.
Włączanie PHP
Proszę zapisać poniższą stronę intro.php
i dopisać do niej fragmentu kodu w PHP
, wyświetlającego przy pomocy echo
lub print
dodatkowe napisy.
- intro.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-2"> <title>To jest strona o PHP5</title> </head><body> <?php if ( $_POST["fname"] OR $_POST["lname"] ) { $fname = $_POST["fname"]; $lname = $_POST["lname"]; $memo = $_POST["memo"]; echo " <h1> Ajajaj! Ktoś nas wywołał z formularza!</h1> <p>Napisał, że nazywa się: $fname $lname i chce nam powiedzieć: \"$memo\""; if ($memo == "NIC!") echo " (ale on jest leniwy!)"; } ?> <p>Kilka dodatkowych plików: <ul> <li><a href="info.php">informacje z <i>phpinfo()</i></a> <li><a href="form-1.php">prosty formularz</a> <li><a href="form-2.php">nieco inny formularz</a> </ul> </body></html>
Zadania:
- Do pliku
intro.php
proszę samodzielnie dodać fragment wyświetlający całą tablicę $_GET i $_POST na różne sposoby. Sprawdź, które z metod umożliwiają wyświetlenie zawartości całej tablicy:print_r
,print
,var_dump
,echo
.
- Zmień formularz i stronę docelową w taki sposób, by korzystały z metody GET.
Zaobserwuj:
- w jaki sposób odnieść się do poszczególnych elementów tablicy,
- jak przekazywane są dane metodami GET i POST.
Ćwiczenia: Zmienne i typy danych
- Przećwicz definiowanie zmiennych w dokumencie w PHP. Zdefiniuj zmienną napisową zawierającą ciąg znaków, całkowitoliczbową oraz zmiennoprzecinkową, a następnie wyświetl ich wartości w jednej linii:
$imie = "Krzys"; echo"<h1>Oto $imie uczy się PHP</h1>";
- Stwórz dynamicznie w PHP listę numerowaną HTML przy pomocy pętli ''for'' (na bazie kodu poniżej):
for ($i=1; $i<=$n; $i++) { echo "element numer $i"; }
- Stwórz i przetestuj zmienne typu tablicowego – stwórz tablicę zawierającą spis nazw przedmiotów. Wyświetl w pętli
foreach
przedmioty z tej tablicy. - Stwórz tablicę zawierającą spis imion i nazwisk prowadzących zajęcia na, indeksowaną (z kluczami) skrótowymi nazwami przedmiotów, np. „ztb” ⇒ „Krzysztof Kluza”. Wyświetl w pętli
foreach
elementy z tej tablicy. - Napisz pętle
while
iforeach
wyświetlające kolejne elementy w.w. tablic. Przetestuj także działanie instrukcjiif
iswitch
.
Przekazywanie parametrów
Poniższy przykład tworzy formularz z polami do zaznaczania (checkbox), którego wynik będzie analizowany przez skrypt PHP.
- form-2.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-2"> <title>To jest mały test...</title> </head><body> <?php if (!isset($_POST["submit"])) { ?> <h1>Czyje zajęcia lubisz najbardziej</h1> <p>Na studiach podyplomowych? <form action="form-2.php" method="POST"> <input type="checkbox" name="person[]" value="prof. Tomasz Szmuc">prof. Tomasz Szmuc<br> <input type="checkbox" name="person[]" value="dr Radosław Klimek">dr Radosław Klimek<br> <input type="checkbox" name="person[]" value="dr Grzegorz Rogus">dr Grzegorz Rogus<br> <input type="checkbox" name="person[]" value="dr Krzysztof Kluza">dr Krzysztof Kluza<br> <br> <input type="submit" name="submit" value="Wybierz"> </form> <p> <?php } else { ?> <h1>Wybrałeś:</h1> <br> <?php if(!empty($_POST['person'])) { foreach($_POST['person'] as $person) { echo "<i>$person</i><br>"; switch ( $person ) { case "prof. Tomasz Szmuc": $TSZ=true; break; case "dr Krzysztof Kluza": $KKL=true; break; } } if ( $KKL==true ) echo ("<br><b>BRAWO!</b>"); } else echo "Nie wybrales nikogo..."; } ?> <p><hr><br> <a href="intro.php">Powrót do głównego dokumentu</a> </body> </html>
Dla chętnych: Odczyt i zapis do pliku
Poniższy program tworzy słownik polsko-angielski w pliku słownik.txt
(na podstawie danych z formularza zapisuje do pliku w kolejnych liniach słowa w postaci: slowo_en:slowo_pl
, np. cat:kot
).
- slownik.php
<?php if(empty($_GET)) { ?> <form action="slownik.php" method="GET"> Polskie: <input type="text" name="pl" value=""><br> Angielskie: <input type="text" name="en" value=""><br><br> <input type="submit" value="Zapisz"> </form> <?php } else { $txt = ""; $pl = $_GET['pl']; $en = $_GET['en']; $txt = $en.":".$pl."\n"; echo "<br>Dane z formularza $txt<br>"; echo '<a href="slownik.php">Dodaj nowe słowo</a>'; $fp = fopen("slownik.txt", "a"); fputs($fp, $txt); fclose($fp); } ?>
Proszę napisać program, który wyświetli formularz do wyszukiwania słów, tak by po wpisaniu słowa po angielsku, słownik wyświetlił odpowiednie słowo po polsku.
Sprawdź, jak można wykorzystać następujące funkcje:
Proszę zdekomponować dotychczasowy kod na pliki, np. w jednym pliku mogą się znajdować funkcje budujące ogólną strukturę strony (nagłówek, stopka), w innym funkcje generujące elementy nawigacyjne; pliki te powinny być włączane do „głównych” które mają być dostępne bezpośrednio przez HTTP
.
Przykłady
Przykłady z tego lab można pobrać: przyklady-php.tar.gz.
Aby rozpakować: tar -zxvf przyklady-php.tar.gz
Dalsza część laboratorium: PHP i połączenie z bazą danych