Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt i brak pomysłu na rozwinięcie go., Skrypt quizu.
mayerboss
post 24.10.2010, 19:09:41
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.09.2009

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


Witam, zrobiłem sobie prosty skrypt quizu który pobiera pytania, odpowiedzi i prawidłową odpowiedź z tabeli pyt a następnie losuje pytania oraz odpowiedzi a,b,c,d.
Chciałbym aby po kliknięciu wyślij zliczyło użytkownikowi ilość poprawnych odpowiedzi oraz zapisało to w bazie w tabeli quiz.

  1. <?php
  2. define('IN_PHPBB', true);
  3. $phpbb_root_path = './';
  4. include($phpbb_root_path . 'extension.inc');
  5. include($phpbb_root_path . 'common.'.$phpEx);
  6. $userdata = session_pagestart($user_ip, PAGE_INDEX);
  7. init_userprefs($userdata);
  8. include($phpbb_root_path . 'includes/page_header_quiz.'.$phpEx);
  9.  
  10. $id = htmlspecialchars($_GET['id']);
  11.  
  12. if ($id=='test')
  13. {
  14. $sql = "SELECT userid FROM phpbbsf_quiz WHERE userid = " . $userdata['user_id'] . " LIMIT 1";
  15.  
  16. if( !($result = $db->sql_query($sql)) )
  17. {
  18. message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
  19. }
  20. if($result && mysql_num_rows($result) > 0)
  21. {
  22. $template->assign_block_vars('niema', array('BLAD' => 'Niestety wypełniłeś juz quiz'));
  23. $template->set_filenames(array('body' => 'quiz_ok.tpl'));
  24. $template->pparse('body');
  25. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  26. } else
  27. {
  28. $sql = "SELECT * FROM phpbbsf_quiz_pyt ORDER BY RAND() LIMIT 10";
  29.  
  30. if( !($result = $db->sql_query($sql)) )
  31. {
  32. message_die(GENERAL_ERROR, 'Could not query users', '', __LINE__, __FILE__, $sql);
  33. }
  34.  
  35. $template->assign_block_vars('jest', array());
  36.  
  37. while( $row = $db->sql_fetchrow($result) )
  38. {
  39. $pytanie = '<h2>'.$row['pyt'].'</h2>';
  40. srand((float) microtime() * 10000000);
  41. $wejscie = array (
  42. '<input type="radio" value="'.$row['id'].'" name="1" />'.$row['odp1'].'<br>',
  43. '<input type="radio" value="'.$row['id'].'" name="2" />'.$row['odp2'].'<br>',
  44. '<input type="radio" value="'.$row['id'].'" name="3" />'.$row['odp3'].'<br>',
  45. '<input type="radio" value="'.$row['id'].'" name="4" />'.$row['odp4'].'<br>');
  46. $losowe_klucze = array_rand ($wejscie, 4);
  47. $template->assign_block_vars('jest2', array(
  48. 'PYTANIE' => $pytanie,
  49. 'PYTANIE1' => $wejscie[$losowe_klucze[0]],
  50. 'PYTANIE2' => $wejscie[$losowe_klucze[1]],
  51. 'PYTANIE3' => $wejscie[$losowe_klucze[2]],
  52. 'PYTANIE4' => $wejscie[$losowe_klucze[3]]));
  53. $template->set_filenames(array('body' => 'quiz.tpl'));
  54. }
  55.  
  56. $template->pparse('body');
  57. }
  58. } elseif ($id=='quiz')
  59. {
  60. /*
  61. isset bla bla ...
  62.  
  63.  nie mam pomyslu na ten kod */
  64. $pyt1 = $_POST['1'];
  65. $pyt2 = $_POST['2'];
  66. $pyt3 = $_POST['3'];
  67. $pyt4 = $_POST['4'];
  68. $pyt5 = $_POST['5'];
  69. $pyt6 = $_POST['6'];
  70. $pyt7 = $_POST['7'];
  71. $pyt8 = $_POST['8'];
  72. $pyt9 = $_POST['9'];
  73. $pyt10 = $_POST['10'];
  74. $pyt11 = $_POST['11'];
  75. $pyt12 = $_POST['12'];
  76. $pyt... = $_POST['...'];
  77. $pyt100 = $_POST['100'];
  78. $data = date('H:i:s d-m-Y');
  79. /* nie mam pomyslu na ten kod */
  80. $punkty = 0
  81.  
  82. if { $pyt1 == $pobrana_odpowiedz }
  83. $punkty = $punkty + 1;
  84. }
  85.  
  86. $sql = mysql_query("INSERT INTO phpbbsf_quiz (`userid`,`punkty`,`data`) VALUES ('" . $userdata['user_id'] . "','$punkty','$data')");
  87.  
  88. $template->set_filenames(array('body' => 'quiz_ok.tpl'));
  89. $template->pparse('body');
  90. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  91.  
  92. /* nie mam pomyslu na ten kod koniec isset */
  93.  
  94.  
  95. } else
  96. {
  97. $template->set_filenames(array('body' => 'quiz_home.tpl'));
  98. $template->pparse('body');
  99. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  100. }
  101. ?>


Ten post edytował mayerboss 24.10.2010, 19:20:00
Go to the top of the page
+Quote Post
adrianozo
post 24.10.2010, 20:10:19
Post #2





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

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


W czym jest problem? Zliczenie poprawnych odpowiedzi czy zapisanie ich do bazy danych?


--------------------
Go to the top of the page
+Quote Post
mayerboss
post 24.10.2010, 22:51:42
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.09.2009

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


Nie mam poprostu pomysłu na sprawdzenie czy odpowiedź jest prawidłowa czy też nie.
Pytania w bazie mam zapisane w takiej formie

id, pytanie , odpowiedz 1, odpowiedz 2, odpowiedz 3, odpowiedz 4, poprawna odpowiedz.

Skrypt losuje z pośród 100 pytań 10, i przy wysłaniu formularza chciałbym aby do tabeli quiz z punktami wpisało zsumowane punkty poprawnych odpowiedzi.
Jeżeli pytanie id=1 && poprawna_odpowiedz=2 to
$punkty= $punkty + 1, jeżeli poprawna_odpowiedź != 2 idź dalej.

Nie chciał bym robić 100* $_post['(liczba)'] i 100 ifów dla każdego sprawdzenia.

Ten post edytował mayerboss 24.10.2010, 22:53:52
Go to the top of the page
+Quote Post
CuteOne
post 25.10.2010, 10:42:16
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A słyszoł ty o pętli? Tak czy siak musisz porównać każdą odpowiedź z tą z bazy danych
Go to the top of the page
+Quote Post
mayerboss
post 25.10.2010, 17:39:31
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.09.2009

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


Niestety, muszę w jakiś sposób sprawdzić czy odpowiedź jest prawidłowa czy też nie.
Pętla.. myślałem o tym ale skończyło się tylko na while.. i dalej pustka w głowie.

Cytat
Z php nie jestem bóg wie kim i nie znam się na tym aż w takim stopniu, jestem tzw. samoukiem i czasami potrzebuje fachowej porady z wyjaśnieniem jak dla laika.


Ten post edytował mayerboss 25.10.2010, 17:42:29
Go to the top of the page
+Quote Post
Wicepsik
post 25.10.2010, 18:02:50
Post #6





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

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


  1. for($i=0;$i<101;$i++){
  2. if($_POST[$i] == $pobrana_odpowiedz) $punkty++;
  3. }


--------------------
Go to the top of the page
+Quote Post
mayerboss
post 26.10.2010, 20:38:38
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 30.09.2009

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


Nadal nie wiem jak to rozwiązać.

  1. elseif ($id=='quiz')
  2. {
  3. $data = date('H:i:s d-m-Y');
  4. $punkty = 0;
  5.  
  6. for($i=0;$i<101;$i++){
  7.  
  8. $sql = "SELECT * FROM phpbbsf_quiz_pyt WHERE id='$1' LIMIT 1";
  9.  
  10. while( $row2 = $db->sql_fetchrow($result) )
  11. {
  12. $odp = $row2['poprawna'];
  13. if($_POST[$i] == $odp)
  14. {
  15. $punkty = $punkty + 1;
  16. }
  17. }
  18. }
  19. $sql = mysql_query("INSERT INTO phpbbsf_quiz (`userid`,`punkty`,`data`) VALUES ('" . $userdata['user_id'] . "','$punkty','$data')");
  20.  
  21. $template->set_filenames(array('body' => 'quiz_ok.tpl'));
  22. $template->pparse('body');
  23. include($phpbb_root_path . 'includes/page_tail.'.$phpEx);
  24.  
  25. }
Go to the top of the page
+Quote Post
CuteOne
post 26.10.2010, 22:09:48
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Zapisz sobie do bazy poprawne odpowiedzi [ oddzielone ; ] dla każdego quizu np.
  1. $row = $db->sql_fetchrow($result);
  2.  
  3. $explode = explode(';', $row['odpowiedz']);
  4.  
  5. for($i=0;$i<count($explode);$i++) {
  6.  
  7. if($exp[$i] == $_POST['odpowiedz'.$i]) $punkty++;
  8. }
  9.  
  10. mysql_query("INSERT INTO phpbbsf_quiz (`userid`,`punkty`,`data`) VALUES ('" . $userdata['user_id'] . "','$punkty','$data')");
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: 7.07.2025 - 13:08