Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Quiz
pawel2121
post 5.11.2010, 15:13:15
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


Piszę aplikację z testami dla uczniów i chcę zrobić coś takiego , użytkownik wybiera test który chce rozwiązać następnie na ekranie pokazuje się pierwsze pytanie zapisane w tabeli z pytaniami dla tego testu i tu właśnie mam problem , nie mam już pomysłu jak zrobić coś takiego żeby po wybraniu odpowiedzi i kliknięciu na przycisk Zaznacz w miejsce wcześniejszego pytania pojawiało się kolejne pytanie z tego testu . Próbowałem już różnych sposobów ale nie działały jak należy kiedy używałem pętli for w kółko wyświetlało się tylko pierwsze pytanie (wyświetlały się pod sobą), potem dodałem do tego sprawdzanie czy przycisk Zaznacz został naciśnięty ale to też nie pomogło . Może ktoś robił kiedyś coś podobnego albo wie jak to zrobić to proszę o pomoc.
Go to the top of the page
+Quote Post
tehaha
post 5.11.2010, 16:27:27
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


trochę mało informacji dałeś, wygodnie by było gdybyś sobie pytania trzymał w tablicy i zapisał ją do sesji i potem przechodząc do następnego wyświetlasz pytanie z kluczem o 1 większe
Go to the top of the page
+Quote Post
pawel2121
post 5.11.2010, 16:56:40
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


Wyświetlanie pytań mam zrobione tak, tylko że w tym przypadku wyswietla wszystkie pytania z danej kategorii i testu, dodam jeszcze że kolene pytania mają być wyświetlane na tej samej stronie co pierwsze przykładowo quiz.php

  1. $zapytanie = @mysql_query("SELECT tresc,odp,odpd FROM pytania WHERE kurs='$kurs'AND test='$nazwat' ");
  2.  
  3. if(mysql_num_rows($zapytanie) > 0) {
  4. while($r = mysql_fetch_assoc($zapytanie)) {
  5. echo"<br>";
  6. echo"<br>";
  7. $odp= $r['odp'];
  8. $poprawna= $r['odpd'];
  9. $tresc=$r['tresc'];
  10. $odp2 = explode(";", $odp);
  11. $los=array_rand($odp2,4);
  12.  
  13.  
  14. echo "<br>";
  15. ?>
  16. <form action="<?php echo $PHP_SELF;?>" method="post" >
  17. <?php
  18. echo "<p>$tresc</p>";
  19.  
  20.  
  21. for($i=0;$i<4;$i++)
  22. {
  23. echo'<input type="radio" name="odpowiedz" value="'.$odp2[$los[$i]].'">'.$odp2[$los[$i]].'</input>';
  24. echo"<br>";
  25. }
  26. echo'<input type="hidden" name="licznik" value="1" />';
  27. echo'<input class="button" name="przycisk" type="submit" value="Zaznacz odpowiedz" />';
  28. echo"</form>";
  29.  
  30. }
  31.  
  32. }
Go to the top of the page
+Quote Post
Ghost_78
post 5.11.2010, 18:32:46
Post #4





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

Ostrzeżenie: (0%)
-----


mysle ze problem masz tu:

  1. echo'<input type="hidden" name="licznik" value="1" />';


a ogolnie to zrobilbym tak:
w bazie bym ponumerowal te pytania i przechodzil tak

  1. if (!isset($_POST[nr_pyt])){
  2. $nr_pyt=1;
  3. }else{
  4. $nr_pyt=$_POST[nr_pyt];
  5. }
  6. $zapytanie = @mysql_query("SELECT tresc,odp,odpd FROM pytania WHERE kurs='$kurs'AND test='$nazwat' AND nr_pyt='$nr_pyt'");
  7. if(mysql_num_rows($zapytanie) > 0) {
  8. $r = mysql_fetch_assoc($zapytanie))
  9. echo"<br>";
  10. echo"<br>";
  11. $odp= $r['odp'];
  12. $poprawna= $r['odpd'];
  13. $tresc=$r['tresc'];
  14. $odp2 = explode(";", $odp);
  15. $los=array_rand($odp2,4);
  16. echo "<br>";
  17. ?>
  18. <form action="<?php echo $PHP_SELF;?>" method="post" >
  19. <?php
  20. echo "<p>$tresc</p>";
  21. for($i=0;$i<4;$i++){
  22. echo'<input type="radio" name="odpowiedz" value="'.$odp2[$los[$i]].'">'.$odp2[$los[$i]].'</input>';
  23. echo"<br>";
  24. }
  25. echo'<input type="hidden" name="licznik" value="'.($nr_pyt+1).'" />';
  26. echo'<input class="button" name="przycisk" type="submit" value="Zaznacz odpowiedz" />';
  27. echo"</form>";
  28. }
  29.  




--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
pawel2121
post 5.11.2010, 20:05:43
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


Dzięki za pomoc Ghost_78 wszystko działa , właśnie coś takiego chciałem zrobić tylko nie wiedziałem jak.
Go to the top of the page
+Quote Post
Ghost_78
post 5.11.2010, 20:13:43
Post #6





Grupa: Zarejestrowani
Postów: 222
Pomógł: 34
Dołączył: 3.11.2010

Ostrzeżenie: (0%)
-----


Nie ma sprawy winksmiley.jpg


--------------------
Always look on the bright side of life ;-)
Go to the top of the page
+Quote Post
pawel2121
post 9.11.2010, 20:21:02
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.11.2010

Ostrzeżenie: (0%)
-----


Mam jeszcze jedno pytanie dotyczące mojej aplikacji z testami chciałbym zrobić coś w stylu zabezpieczenia przed ucieczką użytkownika(czyli zamknięciem strony) w trakcie rozwiązywania testu , żeby przed zamknięciem strony zapisały mu się do bazy punkty które zdobył dotychczas i zaznaczyło że rozwiązał już ten test . I chciałbym się dowiedzieć czy w php coś takiego jest możliwe i jeśli tak to jak coś takiego zrobić .
Go to the top of the page
+Quote Post
adrianozo
post 11.11.2010, 11:33:49
Post #8





Grupa: Zarejestrowani
Postów: 733
Pomógł: 4
Dołączył: 11.11.2009

Ostrzeżenie: (0%)
-----


Może po każdym pytaniu wysyłać zapytanie do bazy z ilością punktów? Tj. w bazie ma 3 punkty dobrze odpowiedział na kolejne pytanie i przechodzi do następnego pytania(wysyła formularz) wykonuje się zapytanie UPDATE który dodaje +1 pkt to istniejącego już rekordu?


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 19:08