Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa] tworzenie quizu
Forum PHP.pl > Inne > Oceny
krzysiek_raven
Witam,

Od jakiegoś czasu interesuję się programowaniem obiektowym i stworzyłem sobie klasę a właściwie to klasy do tworzenia quizów. Chciałbym abyście ocenili mój sposób programowanie obiektowego, czy idę w dobrą stronę.
Całość składa się z dwóch części: pierwsza klasa służy do konfiguracji quizu. Ustawia pytania i odpowiedzi i tworzy formularz. Druga służy do odbierania danych z formularza oraz wyświetla wybrane odpowiedzi.

Wszystko można przetestować na stronie: http://debczynski.pl/quiz/

Poniżej przesyłam kod:
http://wklej.org/id/148957/ - quiz.Kontroler.php
http://wklej.org/id/148958/ - quiz.Widok.php
http://wklej.org/id/148960/ - quiz.Model.php
http://wklej.org/id/148962/ - index.php

Napiszcie co sądzicie o tych klasach.
drake88
jest błąd - jeśli nie odpowiem na wszystkie pytania, i wcisnę send wyświetla się długi kod na stronie

Kod
Array
(
    [0] => Array
        (
            [question] => Array
                (
                    [question] => 1. Pytanie pierwsze
                    [answersType] => checkbox
                    [answersName] => pyt_1
                )

            [answers] => Array
                (
                    [0] => Array
                        (
                            [answer] => Odp 1.1
                            [value] => 1
                            [checked] => 0
                        )

                    [1] => Array
                        (
                            [answer] => Odp 1.2
                            [value] => 2
                            [checked] => 1
                        )

                    [2] => Array
                        (
                            [answer] => Odp 1.3
                            [value] => 3
                            [checked] => 0
                        )

                    [3] => Array
                        (
                            [answer] => Odp 1.4
                            [value] => 4
                            [checked] => 1
                        )

                )

        )

    [1] => Array
        (
            [question] => Array
                (
                    [question] => 2. Pytanie drugie
                    [answersType] => radio
                    [answersName] => pyt_2
                )

            [answers] => Array
                (
                    [0] => Array
                        (
                            [answer] => Odp 2.1
                            [value] => 1
                            [checked] => 0
                        )

                    [1] => Array
                        (
                            [answer] => Odp 2.2
                            [value] => 2
                            [checked] => 0
                        )

                    [2] => Array
                        (
                            [answer] => Odp 2.3
                            [value] => 3
                            [checked] => 0
                        )

                    [3] => Array
                        (
                            [answer] => Odp 2.4
                            [value] => 4
                            [checked] => 0
                        )

                )

        )

    [2] => Array
        (
            [question] => Array
                (
                    [question] => 3. Pytanie trzecie
                    [answersType] => radio
                    [answersName] => pyt_3
                )

            [answers] => Array
                (
                    [0] => Array
                        (
                            [answer] => Odp 3.1
                            [value] => 1
                            [checked] => 0
                        )

                    [1] => Array
                        (
                            [answer] => Odp 3.2
                            [value] => 2
                            [checked] => 0
                        )

                    [2] => Array
                        (
                            [answer] => Odp 3.3
                            [value] => 3
                            [checked] => 1
                        )

                    [3] => Array
                        (
                            [answer] => Odp 3.4
                            [value] => 4
                            [checked] => 0
                        )

                )

        )

    [3] => Array
        (
            [question] => Array
                (
                    [question] => 4. Pytanie czwarte
                    [answersType] => checkbox
                    [answersName] => pyt_4
                )

            [answers] => Array
                (
                    [0] => Array
                        (
                            [answer] => Odp 4.1
                            [value] => 1
                            [checked] => 0
                        )

                    [1] => Array
                        (
                            [answer] => Odp 4.2
                            [value] => 2
                            [checked] => 0
                        )

                    [2] => Array
                        (
                            [answer] => Odp 4.3
                            [value] => 3
                            [checked] => 0
                        )

                    [3] => Array
                        (
                            [answer] => Odp 4.4
                            [value] => 4
                            [checked] => 0
                        )

                )

        )

)

Array
(
    [pyt_1] => Array
        (
            [0] => 2
            [1] => 4
        )

    [pyt_2] =>
    [pyt_3] => 3
    [pyt_4] =>
)
krzysiek_raven
To nie błąd. Jak wciśniesz debug mode on to wtedy pokazuje zawartość tablicy po wysłaniu formularza;)
bim2
Hmmm, wszystko fajnie ale nie pokazuje czy dobre odpowiedzi wybralem, a jak będą złe to które były dobre...
krzysiek_raven
Jak na razie potrafi tylko wyświetlić wybrane odpowiedzi. Używałem tego aby wysłać te odpowiedzi na adres e-mail. Chce jeszcze zrobić coś w stylu "dokończ zdanie" i użytkownik by wpisywał treść w pole tekstowe, tylko jak narazie nie mam jeszcze na to pomysłu. No i potem na pewno przydalo by sie ustalanie które odpowiedzi są prawidłowe i przy wyświetlaniu by pokazywał czy sie dobrze odpowiedziało.
Co sądzicie o podziale MVC, czy dobrze rozumie tą ideę?

Ulepszyłem troche klase.
Teraz można między innymi dodawać pola tekstowe, można ustawiać które pola i pytania mają być wymagane oraz można dodać wyrażenie regularne przy definiowaniu pola tekstowego (wywoływana jest funkcja preg_ match()).
Całość można zdefiniować w łatwy sposób;)
Przykład:
http://wklej.org/id/152459/
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.