478 PHP i MySQL dla każdego
Do nawiązania połączenia jest wykorzystywana funkcja mysq1_connect, natomiast do wyboru bazy — funkcja mysql_sel ect_db. Zwracaną wartością jest true, jeśli obie operacje zakończyły się sukcesem, lub wartość false, jeśli jedna z operacji zakończyła się niepowodzeniem.
Funkcja al readyVoted otrzymuje w postaci argumentów nazwę użytkownika (argument userName) oraz identyfikator ankiety (argument ankieta Id) i ma za zadanie stwierdzić, czy użytkownik oddał już swój głos w tej ankiecie. Jest w tym celu wykonywane zapytanie SQL w postaci:
SELECT Id FROM AnkletyOddaneGlosy. Users
WHERE Ankietald-Sankietald AND Users.Nazwa-'SuserName'
AND AnkietyOddaneGlosy.Userld - Users.Id
Jeśli jego wynikiem jest pusty zbiór danych (czyli mysq1_fetch_row zwróci wartość false), oznacza to, że użytkownik o nazwie userName (jak pamiętamy, nazwy użytkowników są niepowtarzalne) nie oddał głosu w ankiecie i funkcja zwraca wartość false. Jeśli natomiast wynikiem zapytania nie jest pusty zbiór danych, ale identyfikator użytkownika (czyli mysql_fetch_row zwróci wartość różną od false), oznacza to, że użytkownik oddał już głos w ankiecie, a zatem funkcja al readyVoted zwraca wartość true.
Zadaniem funkcji showPollResults jest wyświetlenie wyników ankiety, której numer został przekazany w postaci argumentu o nazwie id. Wykonywane są dwie operacje: pobranie tytułu ankiety z tabeli Ankiety oraz opcji i liczby głosów z tabeli AnkietyOpcje. Wyniki są umieszczane w tabeli HTML w celu ich sformatowania. Pierwsze wymienione zadanie jest wykonywane za pomocą instrukcji SQL:
SELECT Nazwa FROM Ankiety WHERE id=$id Drugie wymienione zadanie jest wykonywane za pomocą instrukcji SQL:
SELECT Opcja, Glosy FROM AnkietyOpcje WHERE Ankietald - $id ORDER BY Glosy DESC
Jak widać, wyniki są sortowane względem liczby głosów w porządku malejącym (klauzula ORDER BY G1 osy DESC), choć oczywiście można również zastosować inne sortowanie, w zależności od potrzeb. Ponieważ w rezultacie powyższego zapytania powstaje tabela wynikowa o liczbie wierszy równej liczbie opcji w danej ankiecie, jego wyniki są odczytywane w pętli while za pomocą funkcji mysql_fetch_row. Wyniki są umieszczane w oddzielnych komórkach tabeli HTML. Funkcja showPollResults zwraca wartość true, jeżeli wszystkie operacje zakończyły się sukcesem, lub wartość false — w przeciwnym przypadku.
Funkcja showAllPollsResults ma za zadanie wyświetlić wyniki wszystkich aktywnych ankiet, czyli takich, których status jest równy true (1). Identyfikatory ankiet są pobierane za pomocą zapytania:
SELECT Id FROM Ankiety WHERE Status-1