Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Quiz
Forum PHP.pl > Forum > Przedszkole
pawel2121
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.
tehaha
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
pawel2121
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. }
Ghost_78
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.  


pawel2121
Dzięki za pomoc Ghost_78 wszystko działa , właśnie coś takiego chciałem zrobić tylko nie wiedziałem jak.
Ghost_78
Nie ma sprawy winksmiley.jpg
pawel2121
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ć .
adrianozo
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?
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.