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ę !