Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: TEST
Forum PHP.pl > Forum > PHP
padalec
Czesc mam problem!!!!

Napisalem skrypcik testu wielokrotnego wyboru no i jest z nim maly problem jak wybierasz odpowiedz to nie jest ona zapisywana w tablicy.Zostaje zapisana tylko odp. ostatnia.PS jest to test wielokrotnego wyboru a wiec uzytkownik moze wybrac kilka odp. no i z tym mam tez problem bardzo prosze o pomoc wysalam wraz z listem ten skrypcik

Za pomoc z góry dziekuje!!!

aaevil.gif



//ta zmienna jest inicjowana gdy odpowiadamy na ostatnie pytanie
  1. <?php
  2.  
  3. if(!isset($koniec)&&($koniec!='koniec'))
  4. {
  5. global $biezace_pytanie;
  6. if(!lacz_bd()) echo &#092;"Nie mozna polaczyc sie z baza danych MySQL:\".mysql_error;
  7. $wynik=@mysql_query(&#092;"SELECT * FROM $pytania\"); 
  8. $pytania=wynik_bd_do_tablicy($wynik);
  9. $liczba_wyswietlanych_pytan=1;
  10. $liczba_pytan=count($pytania);
  11. if(!$biezace_pytanie)$biezace_pytanie=1;
  12. if(!$liczba_pytan)$liczba_stron=1;
  13. else $liczba_stron=ceil($liczba_pytan/$liczba_wyswietlanych_pytan);
  14. if($bierzace_pytanie>=$liczba_stron)$biezace_pytanie=$liczba_stron;
  15. $numer_poczadkowy=($biezace_pytanie-1)*$liczba_wyswietlanych_pytan;
  16. $numer_koncowy=$biezace_pytanie*$liczba_wyswietlanych_pytan;
  17. if($numer_koncowy > $liczba_pytan)$numer_koncowy=$liczba_pytan;
  18. echo &#092;"
    1. <form method=\"post\" action=\"\".$_SERVER['PHP_SELF'].\"\">
    \";
  19. echo &#092;"
    1. <table border=\"0\">
    \";
  20. $user_answer=$_SESSION['user_answer'];
  21.  
  22. for($i=$numer_poczadkowy;$i<$numer_koncowy;$i++)
  23. {
  24. echo <<<[HTML]
  25. <tr><td>Pytanie:$biezace_pytanie/$liczba_pytan</td></tr>
  26. <tr><td colspan=&#092;"3\"><br><b>$pytania[$i][question]</b></td></tr>
  27. <tr>
  28. //tutaj wyswietlamy mozliwe odpowiedzi na pytanie opt-sa to odpowiedzi w bazie danych
  29. <td>$pytania[$i][opt1]<input type=&#092;"checkbox\" name=user_answer value=\"$pytania[$i][opt1]\"></td>
  30. <td>$pytania[$i][opt2]<input type=&#092;"checkbox\" name=user_answer value=\"$pytania[$i][opt2]\"></td>
  31. <td>$pytania[$i][opt3]<input type=&#092;"checkbox\" name=user_answer value=\"$pytania[$i][opt3]\"></td>
  32. </tr>
  33. </table>
  34. [/HTML]
  35. }
  36. for($i=1;$i<=$liczba_stron;$i++)
  37. {
  38. if($biezace_pytanie==$liczba_stron)
  39. { 
  40. echo &#092;"
    1. <input type='hidden' name='koniec' value='koniec'>
    \";
  41. }
  42. else
  43. {
  44. echo '
    1. <input type=<span class="es0">\"</span>hidden<span class="es0">\"</span> name=<span class="es0">\"</span>biezace_pytanie<span class="es0">\"</span> value=<span class="es0">\"</span>'</span><span class="sy0">.</span><span class="re0">$i</span><span class="sy0">.</span><span class="st0">'<span class="es0">\"</span>>
    '
    ;
  45. }
  46. echo '
    1. <input type=<span class="es0">\"</span>submit<span class="es0">\"</span> value=<span class="es0">\"</span>Zapisz odpowiedzi<span class="es0">\"</span> name=<span class="es0">\"</span>submit<span class="es0">\"</span>>
    '
    ;
  47. echo '
    1. </form>
    '
    ;
  48. }
  49. elseif(isset($koniec)&&($koniec=='koniec'))
  50. {
  51. if(!lacz_bd()) echo &#092;"Nie mozna polaczyc sie z baza danych MySQL:\".mysql_error;
  52. $display = mysql_query(&#092;"SELECT * FROM $pytania ORDER BY id\");
  53. $score = 0;
  54. $total = mysql_num_rows($display);
  55. $nr=0;
  56. while ($result = mysql_fetch_array($display)) 
  57. {
  58. $answer = $result[&#092;"answer\"];
  59. $q = $result[&#092;"q\"];
  60. if ($user_answer == $answer)
  61. {
  62. $score++; 
  63. }
  64. }
  65. echo &#092;"
    1. <p align=center><b>Oto twój wynik $score / $total</b></p>
    \";
  66. echo &#092;"
    1. <p>
    \";
  67. if ($score == $total) 
  68. {
  69. echo &#092;"Moje gratulacje! Wszyzdkie odpowiedzi s&plusmn; poprawne!\";
  70. }
  71. elseif ($score/$total < 0.34) 
  72. {
  73. echo &#092;"Niestety. Niejet to dobry wynik, ale nieprzejmuj sie możesz spróbować jeszc
    z
  74.  raz\";
  75. }
  76. elseif ($score/$total > 0.67) 
  77. {
  78. echo \"Dobra robota! Całkiem nuiezły wynik.\";
  79. }
  80. else 
  81. {
  82. echo \"Bardzo słabo - sprobuj jeszcze raz!\";
  83. }
  84. echo \"[HTML]</p>[/HTML]\";
  85. echo \"[HTML]<p>Oto twoje odpowiedzi:\";
  86. echo \"[HTML]<table border=class='tabela'>[/HTML]\";
  87.  
  88. echo\"[HTML]<tr><td><>ID:</td><td>PYTANIE:</td><td>POPRAWNA ODPOWIEDZ:</></td><td>TWOJE ODPOWIEDZI:</></td><td></>WYNIK:</td></tr>[/HTML]\";
  89.  
  90. $display =@mysql_query(\"SELECT * FROM $pytania ORDER BY id\");
  91.  
  92. while ($row = mysql_fetch_array($display))
  93. {
  94. $id=$row['id'];
  95. $question = $row[\"question\"];
  96. $answer = $row[\"answer\"];
  97. $q = $row[\"q\"];
  98. echo \"[HTML]<tr><td>$id<td><br>$question</td><td><font color='#4286f4'>$answer</font></td>[/HTML]\";
  99. if ($user_answer == $answer)
  100. {
  101. echo \"[HTML]<td><font color='red'>{$user_answer}</font></td><td><font color='green'>POPRAWNE</font></td></tr>[/HTML]\";
  102. }
  103. elseif ($user_answer == \"\")
  104. {
  105. echo \"[HTML]<td><font color='red'>Nie wybrales zadnej odpowiedzi</font></td><td><font color='red'>NIEPOPRAWNE</font></td></tr>\"[/HTML];
  106. }
  107. else
  108. {
  109. echo \"[HTML]<td><font color='red'>{$user_answer}</font></td><td><font color='red'>NIEPOPRAWNE</font></td></tr>[/HTML]\";
  110. }
  111. }
  112. echo \"[HTML]</table></p>[/HTML]\"
  113. }
  114. }
  115. }
  116.  
  117. ?>
Vertical
Niedość, że skrypt jest bardzo długi to jeszcze nieczytelny. Użyj Tagu php exclamation.gif
aleksander
zastosuj bbcode i skróć skrypt, ewentualnie podaj zewnętrzny link do źródła. W przeciwnym razie zamknę topic.

Kuziu
zamiast
  1. name=user_answer
wstaw
  1. name=user_answer[]

A powstanie Ci tablica wyników
padalec
Zrobilem tak i w tablicy zapisywane sa tylko ostatnie odp. na pytanie:-(
Kuziu
Jak dodasz [] to w php masz tablice i odwołujesz się do niej kolejno

  1. <?php
  2.  
  3. $user_answer[0];
  4. $user_answer[1];
  5. $user_answer[2];
  6. .
  7. .
  8. .
  9.  
  10. ?>
padalec
Zrobiłe tak:
W petli dodalem:
  1. user_answer1[$i]
  2. user_answer2[$i]
  3. user_answer3[$i]

I puzniej jak wyswietlam pytania w taki sposob:
  1. <?php
  2.  
  3. $user_answer1=$_POST['user_answer1'];
  4. $user_answer2=$_POST['user_answer2'];
  5. $user_answer3=$_POST['user_answer3'];
  6.  
  7. ?>

No i w koncu jak wyswietlam odpowiedzi(zakladam ze sa 2 pytania):
  1. <?php
  2.  
  3. echo &#092;"ODP1 pytanie1=\".$user_answer1[0];
  4. echo &#092;"ODP1 pytanie1=\".$user_answer1[0];
  5. echo &#092;"ODP1 pytanie1=\".$user_answer1[0];
  6. echo &#092;"ODP1 pytanie2=\".$user_answer1[1];
  7. echo &#092;"ODP2 pytanie2=\".$user_answer1[1];
  8. echo &#092;"ODP3 pytanie2=\".$user_answer1[1];
  9.  
  10. ?>

Dostaje w odpowiedzi:
ODP1 pytanie1=
ODP2 pytanie1=
ODP3 pytanie1=
ODP1 pytanie2=odp. jaką dał uzytkownik
ODP2 pytanie2=odp. jaką dał uzytkownik
ODP3 pytanie2=odp. jaką dał uzytkownik
Dlaczeko tak zapisuje i jak to zrobic aby bylo prawidlowo?questionmark.gif sadsmiley02.gif aaevil.gif
Kuziu
Plik form.html
  1. <form method=post action=form.php>
  2. <input type=text name=pole[]>
  3. <input type=text name=pole[]>
  4. <input type=text name=pole[]>
  5. <input type=text name=pole[]>
  6. <input type=submit name=submit>
  7. </form>


Plik form.php
  1. <?
  2. echo($_POST['pole']['0']);
  3. echo($_POST['pole']['1']);
  4. echo($_POST['pole']['2']);
  5. echo($_POST['pole']['3']);
  6. ?>
padalec
Jest jeszcze jeden mały problem z pętlą ponieważ jak dodaj więcej niz 2 pytania to po odpowiedzeniu na pierwsze przeskakuje mi do ostatniego sad.gif
Noi zrobiłem tak jak muwił Kuziu ale zapisuja sie tylko odp. na ostatnie pytanie sad.gif
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.