System Wyboru Track Listy Polish Sound Division
| DZIAŁANIE: | Działanie wejdź tutaj: LINK |
Kod:
Plik index.php :

Plik adn.php :

Ewentualne Objaśnienia:
Tutaj chciałem Wam zaprezentować prosty, krótki system napisany przeze mnie na potrzeby Organizacji Muzycznej Polish Sound Division. System ten to prosty system napisany w PHP oparty o formularze, który posłużył do tego, że mianowanego do tego osoby miały spośród 21 kawałków wybrać dokładnie 16, a następnie podać swoje dane osobowe ( imię czy jakaś ksywka, pseudo itd. ), a następnie cały formularz przesłać do mnie na maila.
Zwróćcie uwagę, że dotychczasowe przykłady oparte o formularze tylko coś tam sobie robiły, zbierały informacje i wyświetlały je, a następnie 'gubiły' - nie pamiętały, nic więcej się z nimi nie działo. Właśnie teraz pokażę, Wam na przykładzie tego prostego systemu jak zebrane informacje przesłać na pocztę elektroniczną.
Kod który widzicie powyżej, a właściwie kody PHP z dwóch plików - ponieważ
system jest zrealizowany na 2 plikach PHP ( jeszcze CSS, ale to pomijam ). Więc
od razu zapytam czy pamiętacie przykład poprzedni ?? Z przesyłaniem informacji
między formularzami w 1 pliku ?? no właśnie!! Tutaj są dwa pliki, pewnie się
zastanawiacie po co zrobiłem aż 2 skoro mogłem zrobić to na 1 ?? Owszem mogłem!
A dlaczego nie zrobiłem ? Odpowiedz jest banalna, po prostu tak mi było wygodnie
:)
Aczkolwiek zalecam realizacje tego typu rzeczy na 1 pliczku!
Trzeba by teraz troszkę zerknąć na nasz kod, wydaje się on skomplikowany, ale tak naprawdę, jeżeli 'uczysz' się PHP z moich lekcji - po kolei - i robisz to solidnie to sam jesteś w stanie zinterpretować łatwo ten kod. Nie ma tutaj nowych zagadnień poza jednym - funkcja mail, dzięki której wysyłamy dane z formularza na adres poczty elektronicznej. Ale o tym gdzieś pod koniec omawiania kodu!
No to jedziemy z kodem: (pierw plik index.php oczywiście )
1). Pierw mamy deklaracje zmiennej, która przyjmuje wartość -
lokalizację poprzedniej strony - przydatne do linku 'wstecz' -> to już znacie
dobrze;
2). Następnie zadeklarowana jest tablica asocjacyjna $opcje - gdzie mamy
jako klucz - nazwę danego utworu oraz jako wartość link do tego utworu. Jak
widzicie każdy kawałek w swojej nazwie nie posiada spacji tylko znaki _ !
Pamiętajcie o tym bo gdybyśmy tutaj nie dali takich właśnie nazw plików, to co
prawda w dalszej części pętla foreach wyświetliłaby nam te nazwy jednak dalsze
ich przekazywanie w tablicach $_POST nie zadziałałoby prawidłowo;
3). Dalej deklarujemy zmienne $znal oraz $j. Dalej widzimy pętle foreach,
która przechodzi przez cała tablicę z zadeklarowanymi utworami i ich linkami.
Zmienna $jest przyjmuje wartość tablicy $_POST od danego klucza ( czyli nazwy
piosenki ). Jeżeli $jest ma wartość 1 (true) czyli istnieje tablica $_POST od
danego klucza - czyli mówiąc wprost po prostu jeżeli dany element w formularzy
został wybrany ( checkbox ) wtedy do zmiennej $wybrano dopisywana jest (
operator .= ) nazwa tego kawałka ( $klucz ) oraz przed nim numer - realizowany
jak widać preinkrementacją zmiennej $j. Do zmiennej $wysylane dopisywane są te
same wartości jednak bez tego numerowania. Zwróćcie uwagę na znacznik \n -> to
znacznik nowej linii, który przydaje się, aby w otrzymanym maili track listę
dostać - jeden kawałek pod drugim a nie wszystkie w jednym ciągu. Zmiennej $znal
jest przypisywana wartość 1 ( true ), jeżeli ta zmienna będzie mieć wartość 1 to
oznacza to, że cokolwiek zostało wybrane;
4). Poprzez zmienną $znal sprawdzamy czy zostało cokolwiek wybrane, jeśli
tak sprawdzane jest w instrukcji warunkowej ile użytkownik wybrał kawałków,
jeżeli wybrał liczbę różną od 16 - wyświetla się informacja o ilości wybranych
kawałków przez niego ( zagnieżdżone instrukcje warunkowe if są po to aby
poprawnie wyświetlić formę słowa 'kawałek' - nie jest to konieczne, ale dla
pewnej estetyki zrobiłem to ) oraz info, że wybrano złą ilość i link do powrotu
do formularza.
5). W przeciwnym wypadku, jeżeli wybrano poprawnie 16 kawałków pojawia się informacja o wybranej ilości oraz formularz, gdzie podajemy swoje jakieś imię, pseudo czy cokolwiek, abym tylko ja mógł dalej rozpoznać kto daną Track Listę przesłał. Jak widać mamy ukryte pole o nazwie ukryty które przyjmuje wartość ( value ) zmiennej $wysylane - czyli całą wybraną track listę.
6). No i w końcu jeśli zmienna $znal ma wartość false ( 0 ) czyli w
pętli foreach na początku kodu nie odnaleziono żadnej wybranej opcji wyświetla
się nam pierwszy formularz. Popatrzmy jak to jest zrealizowane:
- pierw mamy tam sobie jakiś tekst - na to nie zwracamy uwagi;
- dalej mamy zmienną $i - którą będziemy numerować wyświetlaną listę kawałków do
wyboru;
- dalej pętla foreach przechodzi przez całą zadeklarowaną tablicę asocjacyjną z
utworami i linkami do nich. Wyświetla pola wyboru ( checkbox ) z nazwami tych
pól odpowiadającymi kluczom w tablicy ( nazwą utworu; indeksom )
- jak widzimy mamy zmienną $wypisz która korzysta z poznanej już przez Was
funckji str_replace, która zamienia w kluczach ( nazwach kawałków ) znaki _ na
spacje, a zrobiłem tak po to, aby lista kawałków została wyświetla ładniej,
bardziej estetycznie.
- linki do danego kawałka jak widać są prosto zrealizowane - normalne znaczniki
HTML interpretowane przez funkcję print, jako adres do kawałka podajemy zmienną
$wartosc;
- na końcu pętli zmienna $i jest inkrementowana, aby po kolei numerować
wyświetlane utwory;
- no i jak widać w pętli wyświetlane są pola wyboru wraz z ponumerowanymi
nazwami utworów oraz linkami do danego kawałka
Jeżeli poprawnie wybrano 16 kawałków oraz podano swoje imię drugi formularz odsyła nas jak widać do pliku adn.php a w nim :
1). Zmiennej $jest2 jest przypisywany podany przez nas nadawca track
listy a zmiennej $tresc - wartość z ukrytego pola czyli to co docelowo należy
wysłać dalej, czyli wybraną przez nas track listę;
2). Sprawdzana jest zmienna $jest2 - czyli jeżeli podano nadawcę w
poprzednim ( drugim ) formularzu - mamy kolejną zagnieżdżoną instrukcję
warunkową która sprawdza czy poprawnie jest wysyłany mail.
No i tutaj mamy coś nowego - funkcja mail, która pozwala na wysyłanie danych na
adres poczty elektronicznej.
Spójrzmy na jej konstrukcję :
mail("DO KOGO MA BYĆ WYSŁANE" , "TEMAT WIADOMOŚCI" , "TREŚĆ WIADOMOŚCI", "From: OD KOGO - NADAWCA")
W naszym przykładzie jak widać jako treść wiadomości czyli 3 parametr funkcji mail jest zmienna $tresc ( czyli wybrana track lista ) a jako nadawca zmienna $jest2 - czyli podany przez Nas nadawca.
Zwróćmy także uwagę na to, że przed funkcją mail mamy znaczek @ , po co on ? Dzięki temu operatorowi w razie błędu powstałego w wyniku działania danej instrukcji - nie zostanie wyświetlony nam na ekranie ten błąd ( co by nie było nie wygląda to ładnie ) tylko zostanie pominięte to wyświetlanie - warto o tym znaczniku pamiętać!!
3). Jeżeli mail został wysłany poprawnie - ukazuje się nam informacja, że mail wysłano poprawnie oraz link do strony głównej PSD, jeżeli mail z jakiś powodów nie został wysłany pojawia się również odpowiedni komunikat;
4). No i jeżeli próbowano wysłać wiadomość, ale w poprzednim ( drugim ) formularzu nie podano nadawcy również wyświetla się nam informacja o tym aby podać nadawcę.
To tyle :) System jest dość prosty, wysyła wszystko na maila ( lepiej by było zapisać to w pliku albo bazie danych ), sprawdzać track listę trzeba samemu, liczyć itd. Istnieje dużo więcej lepszych sposobów na realizację tego systemy, aczkolwiek musiałem to napisać szybko i nie zależało mi na aż takim "wypasie" tego powiedzmy systemu, także jest ok. A do kursu również jest to przydatne bo Wy którzy się z tego kursu uczycie możecie sobie dużo rzeczy na tym przykładzie zobaczyć, poćwiczyć, zapoznać się !