![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Pełno quizow nie do końca przemyślanych i działających na forach i różnych stronkach, sam chciałem z jednego skorzystać ale jego doprowadzenie do działania przy jego poziomie skomplikowania okazało się udręką. Więc postanowiłem sam zacząć pisać. Liczę na waszą pomoc i uprzedzam, że jestem totalnie początkujący także nie wszystkie podpowiedzi od razu do mnie trafią. Forum przejrzałem i nie znalazłem podobnych do mojego problemów, przynajmniej nie do końca, a mam też pytania także zakładam ten temat. Nie wiem też czy podam wszystko co potrzeba... Test odczytuje pytania z bazy danych, gdzie w tabeli mamy strukturę: id | pytanie | obrazek Pytanie jest zapisane razem z odpowiedziami w formie ( pytanie`odp1`odp2`odp3 ), pierwsza odpowiedź jest poprawna. Taki układ został z użycia gotowca przerobionego przeze mnie z txt na mysql, który jak się okazało po wprowadzeniu 500 pytań do bazy w taki głupi sposób nie działa. Liczba pytań będzie dowolna, ustalana przez administratora, losowana z bazy dlatego nie mogę statycznie dać pytań i łatwo porównać odpowiedzi, trochę to wykracza poza moją wyobraźnię;] Udało mi się zrobić pewnie niewiele, losuje pytania, wypisuje je oraz odpowiedzi do nich w przelosowanej kolejności co jest konieczne, ponieważ w bazie zawsze pierwsza jest poprawna:
Wiem, że jak już dojdę do rozwiązania będę musiał zapisać w zmiennych sesji zaznaczone w teście odpowiedzi żeby ich nie stracić, ale to na razie pomińmy. Czy ktoś może mi jakoś pomóc lub trochę mnie naprowadzić? ![]() Ten post edytował asterf 2.08.2010, 21:43:21 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pierwsza rzecz co widzę to:
Po co Ci srand, skoro go nie używasz? Do losowania używasz RAND() w zapytaniu, więc skasuj tego sranda. Cytat Wiem, że jak już dojdę do rozwiązania będę musiał zapisać w zmiennych sesji zaznaczone w teście odpowiedzi żeby ich nie stracić, ale to na razie pomińmy. Tego trochę nie rozumiem. Nie musisz zapisywać do zmiennych sesji, musisz jakoś przesłać zmienne czyli te radio o nazwach zaznaczone[$odp[$i]] i potem sprawdzać, czy jest poprawne.Ogólnie musisz się zastanowić, jak to ma działać. Najlepiej na kartce narysuj sobie schemat i potem zaprogramuj. Nie programuj, a potem myśl nad działaniem. Tak jest strasznie pod górę ![]() Ten post edytował IceManSpy 2.08.2010, 22:19:07 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
To jest tak że gdybym chciał w tym samym pliku wyświetlić wyniki to owszem, po naciśnięciu submita strona się odświeża i musiałbym mieć w zmiennych sesji prawda? Bo inaczej wylosuje mi nowe pytania i już do poprzednich nie będę mógł się odwołać...
No fakt rand już zastąpiony przez shuffle(). Widzę jak to ma działać, ale nie wiem jak zapisać sobie to name i value przy radio i potem się odwołać do tego ;/ Wiem, że muszę zaciągnąć z name zmienną $odp[$i] i porównać z $odpp[$i] ale jak to zapisać... Name może zostać tak jak jest? EDIT:właśnie zauważyłem, że tak jak mam teraz mogę zaznaczyć odpowiedź tylko w jednym pytaniu, nie bardzo wiem dlaczego i jak to zmienić;/ Ten post edytował asterf 2.08.2010, 22:58:26 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 309 Pomógł: 56 Dołączył: 3.11.2006 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Polecam jakiś kurs PHP. Co do formularzy:
http://phpedia.pl/wiki/Jak_uzyskać_dostęp_..._formularzem%3F http://pl.wikibooks.org/wiki/PHP/Formularze |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
W name musisz dać numer pytania - tylko w ten sposób seria radiobuttonów będzie działać tak, jak powinna. Wpisz tam np. "pytanie-$i". W value daj indeks pytania (samo $j). Jeżeli chodzi o samo losowanie, to musisz sobie zapisać do sesji tablicę przypisań typu: "numer pytania" => "indeks prawidłowej odpowiedzi" - dzięki temu będziesz mógł się do tego odwołać w skrypcie zliczającym wyniki. Dlatego, dla spójności, warto by było shuffle zrobić już przy pobieraniu danych z bazy.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
skarabe.pl o taką pomoc mi chodziło:) Możesz powiedzieć czy tak będzie ok? Czy to da mi w zmiennej sesji USERTESTODPZ zaznaczoną w radio odpowiedź dla każdego pytania ?
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
skarabe.pl o taką pomoc mi chodziło:) Możesz powiedzieć czy tak będzie ok? Czy to da mi w zmiennej sesji USERTESTODPZ zaznaczoną w radio odpowiedź dla każdego pytania ? Nie da, bo zamiast $_POST['$tresc_pyt[$i]']; powinno być $_POST[$tresc_pyt[$i]];, to raz. Dwa, że naprawdę dobrze radzę stosować w name i value ustandaryzowane wartości typu "pytanie-X" (gdzie X jest numerem pytania) w name i "X" (numer odpowiedzi) w value. Aha, a radzę tak dlatego, że jak Ci w końcu Twój pomysł przestanie działać (a dla pewnych pytań/odpowiedzi na 100% przestanie) to spędzisz tydzień szukając błędu, a i tak będziesz musiał ten skrypt napisać od nowa. Ten post edytował skarabe.pl 3.08.2010, 14:23:55 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ok dzięki za pomoc
![]() A ten skrypt nie chce działać i jeszcze nie wiem dla czego... No nic ktoś kto chce uzyskać zamiast pomocy gotowy skrypt tu go nie dostanie. Ja się staram i napisałem sam, ale i tak nic to nie zmienia, nikt nie rozwiąże za mnie problemu. Raczej nie ma to sensu, ale może ktoś coś podsunie patrząc na cały skrypt więc wrzucę. Dodam, że taki mały test wyświetla dobrze pytania i poprawne odpowiedzi:
Problem tkwi w tym ze do POSTA najwyraźniej nie przekazuje nic i w rezultacie po wybraniu submit test po prostu losuje się od nowa i nie przechodzi do wyników... Wydaje mi się że wszystko napisałem z sensem... Cały skrypt:
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
No to przeoczyłem! Dzięki zaczęło działać coś, ale nie dodaje mi prawidłowych odpowiedź do poprawnych jeszcze;/
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
No to też zmieniłem dla pewności, przecież inaczej nie zawracałbym głowy
![]() Zrobiłem wyświetlanie wyników w osobnym pliku i olałem dzięki temu te zabezpieczenia ale coś jest nie tak, że nie uznaje poprawnych odpowiedzi;/ |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
To takie sprawdzenie, no i wyświetla mi tylko to środkowe echo, pierwsze i trzecie to jest ta sama wartość.. No jakoś nie odczytuje z POST'a tego jaka odpowiedź była zaznaczona...
|
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przepraszam, że nie zastosowałem się do regulaminu
![]() POST daje tylko tyle: Array ( [pytanie] => [submit] => Gotowe! ) a SESSION nie zawiera USERTESTODPZ, wyświetla tylko wartości USERTESTODPP, USERTESTPYT EDIT: Nie wszystko miało sens, wywaliłem linijkę: A to:
wygląda teraz tak:
To były niepotrzebne inspiracje z gotowca... Teraz z POSTEM jest już lepiej, wyświetla mi pierwsze wyrazy z treści pytania i odpowiedzi, ALE tylko pierwszego pytania... Np:Array ( [Jacht] => wiatr [submit] => Gotowe! ) Coś jest nie tak przy tym radio zapewne w name i value Ten post edytował asterf 3.08.2010, 16:10:27 |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
No też właśnie stwierdziłem, że mam tam nie tak znaki, mam z tym problemy jak umieszczam html'a w obrębie php...
Teraz już niby problem jest rozwiązany: POST -> Array ( [Pyt_daje_ale_z_podłogami?] => odpowiedź tu daje normalnie [submit] => Gotowe! ) SESSION ->mam już też wyświetlaną tablice USERTESTODPZ, ale wszystkie indeksy w niej puste. Mam już uzyskana przez posta zaznaczoną odpowiedź ale jakoś ten fragment niczego nie zaciąga z POST'a więc jak to zaciagnąć, przecież już to mam w POST;/?
Ten post edytował asterf 3.08.2010, 16:47:56 |
|
|
![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 49 Dołączył: 29.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Bo w $_POST masz z podkreślnikami, a w tablicy $tresc_pyt pewnie bez - no i klops. Sugerowałem użycie ustandaryzowanych nazw, ale nie posłuchałeś - teraz musisz zadziałać tak, żeby w $tresc_pyt[$i] mieć dokładnie taką samą postać stringa jak w $_POST. Zrób print_r($tresc_pyt) obok print_r($_POST) i print_r($_SESSION).
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
No sugerowałeś ale ja nie bardzo wiedziałem jak zapisać, te podłogi nie przeszkadzają bo mi i tak jest potrzebna wartość value do porównania USERTESTODPP.
Ale nie wiem jak ją z POST'a do zmiennej zapisać. print_r($_POST); print_r($_SESSION); print_r($tresc_pyt) - nic nie zwraca;/
WIdać, że POST nic nie indeksuje, tak jak zmienne w SESSION gdzie przy każdym elemencie jest [1],[2],[3]... Btw będę musiał zabezpieczyć formularz żeby trzeba było zaznaczyć w każdym pytaniu odpowiedź Ten post edytował asterf 3.08.2010, 18:34:25 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 12:04 |