PHP - gotowe skrypty - Ankieta oparta o Bazę MySQL
| DZIAŁANIE: |
przed głosowaniem :![]()
po głosowaniu - wyniki: |
Kod:
KOD PHP PRZED
WSZELKIMI ZNACZNIKAMI :

KOD PHP W
SERWISIE :

Ewentualne Objaśnienia:
A oto przykład jak zrobić ankietę opartą o bazę danych. Na początek
stworzyłem tabelę news w mojej bazie ksiazka - a w tabeli 3 pola :
- id - numer każdej z opcji do głosowania; pole z auto_increment oraz jak zawsze
robiliśmy PRIMARY;
- wartosc - czyli tekst na przykład opcja wyboru ankiety "super";
- glosy - czyli ilość głosów;
W tej ankiecie w przeciwieństwie do przedstawionej dużo wcześniej ( opartej na plikach tekstowych ) nie pozwalamy aby dana osoba głosowała więcej niż 1 raz. Realizujemy to poprzez ciasteczka. Oczywiście rzecz jasna jest, że kiedy ktoś nie akceptuje cookies w swojej przeglądarce to nie wiele nam to da. Jednak jak widać na załączonych screenach kodu - w momencie istnienia zmiennej $_POST['ocena'] - czyli kiedy zagłosowaliśmy ustawiane jest ciasteczko o nazwie 'glosowano'.
No i w naszym serwisie sprawdzane jest czy takie ciasteczko istnieje czy też nie. Jeżeli istnieje - oznacza to, że już dany odwiedzający głosował więc informujemy go o tym oraz wyświetlamy wynik w prosty sposób. Łączymy się z bazą danych, pobieramy wartosc oraz liczbę głosów (pole glosy) i w pętli while wyświetlamy kolejno : wartość ( czyli super, bardzo dobra itd ) oraz obrazek - u mnie z folderu prosta_ankieta - plik paseczek.gif ( ten sam, którego użyłem w ankiecie na plikach txt ) - no i ten obrazek jak widzicie - jego długość jest zależna od ilości oddanych głosów. Wyświetlana jest również ilość oddanych głosów na daną opcję !
W przeciwnym razie czyli kiedy nie ma cookies - co oznacza, że jeszcze nie głosowaliśmy czy też wyczyściliśmy ciasteczka - sprawdzane jest czy istnieje zmienna $_POST['ocena'] - jeżeli istnieje oznacza to, że właśnie oddaliśmy głos i wtedy aktualizujemy ( zapytanie UPDATE ) pole 'glosy' w bazie danych dla wartości pola 'id' przekazanego w tablicy $_POST['ocena'] - z formularza ( dlatego, że jak dalej widać poszczególne wartości w formularzu - w przyciskach radio mają wartości pola id z bazy danych ) - czyli po prostu dodajemy do tej wartości '1'.
W przeciwnym wypadku - pokazuje się nam formularz z poszczególnymi opcjami do zagłosowania.
Jak widać jest to dość dobre rozwiązanie - łatwy dostęp do danych, łatwe operacja. Na plikach tekstowych jest więcej zabawy. Także dość istotne jest to, że tutaj użyliśmy ciasteczek ( przy plikach txt oczywiście także mogliśmy to uczynić ). Jednak wiadomo, że ktoś może czyścic ciasteczka i głosować dalej, czy też w ogóle ich nie akceptować. Co wtedy ?? Można by zrobić dodatkowe ukryte pole formularza gdzie przekazywalibyśmy nr IP osoby głosującej do bazy danych, czy też pliku tekstowego. Dalej trzeba by sprawdzić przy kolejnych głosowaniach czy czasem z tego IP już nie głosowano. Chociaż rzeczą logiczną jest, że wiele osób posiada zmienny adres IP więc to żadne zabezpieczenia w takim wypadku. Oczywiście w serwisie gdzie mamy założoną rejestrację użytkowników - sprawa jest prostsza - każdy użytkownik może zagłosować tylko jeden raz i nic więcej.