Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Losowanie bez powtórzeń, prosty skrypt egzaminacyjny
artur81
post
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 2
Dołączył: 4.12.2004
Skąd: Skierniewice

Ostrzeżenie: (10%)
X----


Witam , mam taki problem: napisałem skrypt którego zadaniem jest przeprowadzenie egzaminu ( losowanie pytania z bazy + ewentualne odpowiedzi do wyboru, użytkownik zaznacza odpowiedź, daje "dalej" i przechodzi do następnego pytania). W jaki sposób zrobić coś takiego , żeby podczas trwania egzaminu użytkownik nie wylosował powtórnie tego samego pytania (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Kod pliku pierwszego:
  1. <?php
  2.  
  3. //Jeżeli nie ma ustanowionej sesji przekierowuję użytkownika do logowania
  4. if (!isset($_SESSION['uzytkownik'])) {
  5. //ob_end_clean();
  6. header (&#092;"Location: http://localhost/logowanie.php\");
  7.  
  8. exit ();
  9. } else {
  10.  
  11. require_once('./polacz_z_baza.php');
  12.  
  13.  
  14. $wynik = mysql_query (&#092;"SELECT * FROM pytania ORDER BY RAND() LIMIT 1;\");
  15.  
  16. print &#092;"<table cellpadding = 5 border = 0>\";
  17. //print \"<tr><td><b>Numer</b></td><td><b>Pytanie</b></td></tr>n\";
  18.  
  19.  while ($rekord = mysql_fetch_array ($wynik)) {
  20.  
  21. $nr = $rekord['nr'];
  22. $pyt = $rekord['pyt'];
  23. $odp1 = $rekord['odp1'];
  24. $odp2 = $rekord['odp2'];
  25. $odp3 = $rekord['odp3'];
  26. $odppop = $rekord['odppop'];
  27. $nrok = $rekord['nrok'];
  28.  
  29.  }
  30.  
  31.  
  32. print &#092;"<tr><td><h3>$pyt</b></h3></td></tr>\";  //<td><h3><b>$nr.</b></h3></td>
  33. print &#092;"</table>\";
  34.  
  35.  // LISTA ROZWIJANA
  36. /*przesylam formularzem wybrana przez uzytkownika odpowiedz i numer pytania na kt
  37. re odpowiadal
  38. oraz za pomocą zmiennej sesyjnej poprawną odpowiedź*/
  39. print '<form action=egzamin1.php method=post>';
  40. print &#092;"<input type = 'hidden' name='nr' value=$nr>\";
  41.  
  42. print ' <select name=\"opcja\" style=\"background-color: #C0E2C1;\">';
  43. print ' <option selected value =\"\">';
  44. print &#092;" <option>$odp1</option> \";
  45. print &#092;" <option>$odp2</option> \";
  46. print &#092;" <option>$odp3</option> \";
  47. print ' </select>';
  48. print '<br><br><br> ';
  49. print '<input type=\"submit\" value=\"Następne pytanie\" style=\"background-color: #C0E2C1;\">';
  50. print ' </form>';
  51.  }
  52. $_SESSION['odpowiedz_na_1'] = $odppop;
  53. $_SESSION['punkty']=0;
  54. $_SESSION['pytanie1']=$nr;
  55.  
  56.  //kto odpowiada??
  57. //$odpowiada=$_SESSION['uzytkownik'];
  58. //print \"Na pytania udziela odpowiedz $odpowiada\";
  59.  
  60. print '<body bgcolor = #CCFFCC>';
  61. //ob_end_flush();
  62. ?>

Kod pliku drugiego ( w sumie jest ich 5):
  1. <?php
  2.  
  3. //Jeżeli nie ma ustanowionej sesji przekierowuję użytkownika do logowania
  4. if (!isset($_SESSION['uzytkownik'])) {
  5. header (&#092;"Location: http://localhost/logowanie.php\");
  6.  
  7. exit ();
  8. } else {
  9.  
  10. require_once('./polacz_z_baza.php');
  11.  
  12.  
  13. $wynik = mysql_query (&#092;"SELECT * FROM pytania ORDER BY RAND() LIMIT 1;\");
  14.  
  15. print &#092;"<table cellpadding = 5 border = 0>\";
  16. //print \"<tr><td><b>Numer</b></td><td><b>Pytanie</b></td></tr>n\";
  17.  
  18.  while ($rekord = mysql_fetch_array ($wynik)) {
  19.  
  20. $nr = $rekord['nr'];
  21. $pyt = $rekord['pyt'];
  22. $odp1 = $rekord['odp1'];
  23. $odp2 = $rekord['odp2'];
  24. $odp3 = $rekord['odp3'];
  25. $odppop = $rekord['odppop'];
  26. $nrok = $rekord['nrok'];
  27.  
  28.  
  29.  }
  30.  
  31.  
  32. print &#092;"<tr><td><h3>$pyt</b></h3></td></tr>\"; //<td><h3><b>$nr.</b></h3></td>
  33. print &#092;"</table>\";
  34.  
  35.  
  36. //CHECKBOXY
  37. //Formularz
  38.  
  39. print '<form action=egzamin2.php method=post>';
  40. print &#092;"<input type = 'hidden' name='nr' value=$nr>\";
  41. print &#092;"<input type = 'hidden' name='odppop' value='$odppop'>\";
  42.  
  43. print &#092;"<input type='checkbox' name='odp' value='$odp1'>$odp1\";
  44. print '<br>';
  45. print &#092;"<input type='checkbox' name='odp' value='$odp2'>$odp2\";
  46. print '<br>';
  47. print &#092;"<input type='checkbox' name='odp' value='$odp3'>$odp3\";
  48. print '<br>';
  49.  
  50. print '<br><br><br> ';
  51. print '<input type=\"submit\" value=\"Następne pytanie\" style=\"background-color: #C0E2C1;\">';
  52. print ' </form>';
  53.  
  54. $odp_na_1=$_SESSION['odpowiedz_na_1'];
  55. $_SESSION['odpowiedz_na_2'] = $odppop;
  56.  
  57. //odebranie i wyswietlenie odpowiedzi udzielonych na pierwsze pytanie w egzaminie
  58. $wybrano =$_POST['opcja'];
  59. $numer =$_POST['nr'];
  60. print '<br<<br><br>';
  61. print 'W poprzednim pytaniu udzieliłeś następujących odpowiedzi:<br>';
  62. print &#092;"Pytanie było oznaczone numerem <b>$numer</b>,<br>\";
  63. print &#092;"Ty wybrałeś/aś odpowiedź: <b>$wybrano</b>,<br>\";
  64. print &#092;"natomiast poprawną odpowiedzią było: <b>$odp_na_1</b><br>\";
  65.  
  66. $punkty =$_SESSION['punkty'];
  67. if ($odp_na_1 == $wybrano ) {
  68. $punkty= $punkty + 20;
  69. } else {
  70. $punkty = $punkty - 10;
  71. }
  72. $_SESSION['punkty']=$punkty;
  73. print '<br><br><br> ';
  74. print &#092;"Na razie zgromadziłeś <b>$punkty punktów</b>\";
  75. /* kto odpowiada??
  76. $odpowiada=$_SESSION['uzytkownik'];
  77. print \"Na pytania udziela odpowiedz $odpowiada\"; */ }
  78. $_SESSION['pytanie2']=$nr;
  79.  
  80. print '<body bgcolor = #CCFFCC>';
  81. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.09.2025 - 15:19