Tytuł: PHP w przykładach.... dla zielonych Wiadomość wysłana przez: #Paps 19.02.2007, 18:32:15 Proponuję tutaj zamieszczać proste skrypty php wraz z krótkim wytłumaczeniem o co w nim biega. Chodzi o to, aby pokazać, że język PHP wcale nie jest taki trudny, jakby się mógł wydawać, przez co zachęci webmasterów korzystających do tej pory jedynie z HTML (XHTML) do nauki tego barwnego języka.
Na początek prościutki skrypt kalkulatora Kalkulator GeSHi -› Code: [select] // GeSHi -› [code=php] <html><head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> <title>Kalkulator</title> </head> <body> <h1>KALKULATOR</h1> <FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> Liczba 1: <INPUT TYPE="text" NAME="liczba1" SIZE="12"> <br> Liczba 2: <INPUT TYPE="text" NAME="liczba2" SIZE="12"> <br><br> Wybierz: <br> dodawanie<INPUT TYPE="radio" NAME="obliczanie" VALUE="dodaj"> &nbsp;&nbsp; odejmowanie<INPUT TYPE="radio" NAME="obliczanie" VALUE="odejmij"> &nbsp;&nbsp; mnozenie<INPUT TYPE="radio" NAME="obliczanie" VALUE="pomnoz"> &nbsp;&nbsp; dzielenie<INPUT TYPE="radio" NAME="obliczanie" VALUE="podziel"> <br> <br> <INPUT TYPE="submit" VALUE="Oblicz"> &nbsp;&nbsp; <INPUT TYPE="reset" VALUE="Wyczy¶ć"> <br> </FORM> <hr width="40%" align="LEFT" size="2" /> <?php $liczba1 = $_POST['liczba1'] ; $liczba2 = $_POST['liczba2'] ; $obliczanie = $_POST['obliczanie'] ; if($obliczanie=="dodaj") { $wynik=$liczba1+$liczba2; } else if($obliczanie=="odejmij") { $wynik=$liczba1-$liczba2; } else if($obliczanie=="pomnoz") { $wynik=$liczba1*$liczba2; } else if($obliczanie=="podziel") { $wynik=$liczba1/$liczba2; } echo "Wynik: <b>$wynik</b>"; ?> </body> </html> Wyjaśnienia: Użyliśmy tutaj połączenia prostego formularza HTML ze skryptem php. Z oczywistych względów pomijam opis html'a. Pierwsze co rzuca nam się oczy to atrybut action z wpisem: <?php echo $_SERVER['PHP_SELF']; ?>, gdzie $_SERVER['PHP_SELF']; oznacza tablicę zmiennych środowiskowych .... ble ble ble. Poprostu chodzi o to, aby akcja była wykonana w obrębie tego pliku. Równie dobrze można by wpisać action="obliczaj.php" i nazwać tak samo cały plik. Efekt będzie taki sam. Jako że przy pewnych ustawieniach serwera dostęp do danych formularza może być utrudniony, dodajemy krótkie nazwy zmiennych: $liczba1 = $_POST['liczba1'] ; $liczba2 = $_POST['liczba2'] ; $obliczanie = $_POST['obliczanie'] ; Z kilku powyższych linijek kodu można by zrezygnować, ale wówczas w pliku konfiguracyjnym serwera wartość register_globals musi być ustawiona na on. Niezależnie od tego, jak mamy ustawiony serwer, krótkie nazwy zmiennych proponuję zostawić. W formularzu zastosowano INPUT TYPE="radio", pozwoli to na wykonanie unikalnego działania, obliczenia. if($obliczanie=="dodaj") { $wynik=$liczba1+$liczba2; } else if($obliczanie=="odejmij") { $wynik=$liczba1-$liczba2; } Instrukcje warunkowe if, else if jak sama nazwa wskazuje służą do postawiania warunków. Czyli np. "jeżeli coś tam jest równe czemuś tam to zrób tak i siak. Na naszym przykładzie będzie to: " jeżeli zaznaczono pole dodaj to zsumuj liczbę 1 i 2 i przypisz ją do zmiennej $wynik. Jeżeli zaś wybrano pole odejmij to odejmij liczbę pierwszą od drugiej i przypisz ją do zmiennej $wynik" itd. Kilka razy padło słowo "zmienna", pewnie zastanawiasz się co to takiego. Jest to nic innego jak pamięć podręczna przechowująca jakieś dane, w php poprzedzona znakiem $. Zwróć uwagę na nazwy pól w formularzu oraz na nazwy zmiennych - one nie są przypadkowe, bo właśnie w ten sposób mamy dostęp do danych formularza! echo "Wynik: $wynik"; wyświetli obliczony wcześniej wynik. Powyższy kod zapisz pod dowolną nazwą ( byle z rozszerzeniem *.php) :) i wgraj na serwer. Sprawdź efekt działania. A tak powinno to wyglądać w formie surowej: (http://img2.glowfoto.com/images/2007/02/19-0926264022T.jpg) (http://www.glowfoto.com/viewimage.php?img=19-092626L&y=2007&m=02&t=jpg&rand=4022&srv=img2) EDIT'ka: Może fajniej byłoby popatrzyć, jak wygląda to w oryginale..: Kalkulator by Paps: Tytuł: Odp: PHP w przykładach.... dla zielonych Wiadomość wysłana przez: #Paps 28.03.2007, 01:02:22 Kilka filmów w odtwarzaczu multimedialnym
GeSHi -› Code: [select] // GeSHi -› [code=php] <html><head> <meta http-equiv="Content-type" content="text/html; charset=ISO-8859-2" /> </head> <body> <object type="video/x-ms-wmv" data=" <?php echo $_POST['film']; ?>" width="330" height="275"> <param name="src" value="<?php echo $_POST['film']; ?>"> <param name="autostart" value="false"> <param name="controller" value="true"> </object><br> <form action="index.php" method="post"> <?php $katalog = './filmy/'; $katal = opendir($katalog); while($plik = readdir($katal)) { if (($plik!='.')&&($plik!='..')) { echo '<input type="radio" name="film" value="./filmy/'.$plik.'">'.$plik.' <br>'; } } closedir ($katal); ?> <input type="submit" value=" wybierz film"> </form> </body> </html> Wyjaśnienia: W tym przykładzie zastosowany został osadzony obiekt multimedialny (Windows Media Player) + formularz. Oczywiście można użyć dowolnego obiektu multimedialnego, zależnie od potrzeb. Do pełnego działania potrzebny jest jeszcze pusty katalog o nazwie filmy. Tam właśnie będziemy wrzucać wszystkie filmy, a efekt tego od razu ujrzymy na stronie w postaci pól radio wraz z nazwą filmu. Zacznijmy od formularza. action="index.php" method="post" akcję wykoujemy w pliku index.php i tak powinien być nazwany cały stworzony plik. Można również użyć wspomnianego we wcześniejszym poście <?php echo $_SERVER['PHP_SELF']; ?> $katalog = './filmy/'; $katal = opendir($katalog); while($plik = readdir($katal)) Tworzymy zmienną $katalog i przypisujemy do niej nazwę katalogu w którym będą filmy. Otwieramy katalog "filmy" i przypisujemy do zmiennej $katal Czytamy otworzony katalog, przypisując ją do zmiennej $plik. Korzystamy z pętli while, aby mieć dostęp do wszystkich plików. Pętla while będzie tak długo pracować aż nie przeczyta wszystkich plików w warunku $plik = readdir($katal). if (($plik!='.')&&($plik!='..')) Wspomniana wcześniej pętla przeczyta wszystko z katalogu. Z tym że my nie chcemy zobaczyć na naszej stronie kropeczek będących w strukturze katalogu uniksowego. Jeżeli nie wiadomo o czym pisze, można usunąć wspomnianą linię z kodu. Efekt będzie widoczny :) echo '<input type="radio" name="film" value="./filmy/'.$plik.'">'.$plik.' '; Wyświetlamy listę pól radio w formularzu. name="film" przyda się do formularza, bo do tego miejsca będziemy się odwoływać. value="./filmy/'.$plik.' ścieżka dostępu dla filmu. '.$plik.' nazwa filmu closedir ($katal); zamykamy katalog filmy <?php echo $_POST['film']; ?> wstawiamy w obiekt multimedialny w miejsce gdzie powinna byś ścieżka do pliku. Odwołujemy się tutaj do pola radio które zaznaczy użytkownik. Oto przykład: Tytuł: Odp: PHP w przykładach.... dla zielonych Wiadomość wysłana przez: PdM 23.05.2007, 20:52:42 Nie studiowałem jeszcze całych skryptów odtwarzacza i kalkulatora, ale nie bardzo rozumiem, po co wskazanie na wykonywany plik w tagu <form> w atrybucie action. Przecież, gdy będzie on pusty, przeglądarka domyślnie prześle dane do tej samej strony. Tak więc wynik działania skryptu z $_SERVER['PHP_SELF'] i bez będzie dokładnie taki sam.
Tytuł: Odp: PHP w przykładach.... dla zielonych Wiadomość wysłana przez: #Paps 24.05.2007, 10:52:47 Tak, to prawda
zastosowanie pustego atrybutu action="" da identyczny rezultat. Pytasz po co $_SERVER['PHP_SELF']? Cały temat jest swojego rodzaju tutorialem, a celem jest podanie pewnej dawki informacji. Ponadto uważam, że dobrym zwyczajem jest jednak wpisanie ścieżki, gdzie ma zostać wykonana akcja i nieważne czy przez $_SERVER['PHP_SELF'] czy też ręczne wklepanie nazwy pliku. PdM zachęcam do rozwijania tematu, wpisywania kolejnych tutków. PS Do wszystkich: Chciałbym, aby w tym wątku wpisywać tylko tutoriale, dzięki temu zostanie zachowana czytelność. 1. Jeżeli macie jakieś uwagi natury technicznej, proszę najpierw skontaktować się z autorem danego posta via PM. 2. Jeżeli chcecie rozwinąć, zmodyfikować któryś z przykładów, to po prostu załóżcie nowy temat. |