Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Test - pomoc w zliczeniu wyników
asterf
post
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 21.07.2010

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


Witam
Pełno quizow nie do końca przemyślanych i działających na forach i różnych stronkach, sam chciałem z jednego skorzystać ale jego doprowadzenie do działania przy jego poziomie skomplikowania okazało się udręką. Więc postanowiłem sam zacząć pisać. Liczę na waszą pomoc i uprzedzam, że jestem totalnie początkujący także nie wszystkie podpowiedzi od razu do mnie trafią. Forum przejrzałem i nie znalazłem podobnych do mojego problemów, przynajmniej nie do końca, a mam też pytania także zakładam ten temat. Nie wiem też czy podam wszystko co potrzeba...

Test odczytuje pytania z bazy danych, gdzie w tabeli mamy strukturę:
id | pytanie | obrazek

Pytanie jest zapisane razem z odpowiedziami w formie ( pytanie`odp1`odp2`odp3 ), pierwsza odpowiedź jest poprawna.
Taki układ został z użycia gotowca przerobionego przeze mnie z txt na mysql, który jak się okazało po wprowadzeniu 500 pytań do bazy w taki głupi sposób nie działa.
Liczba pytań będzie dowolna, ustalana przez administratora, losowana z bazy dlatego nie mogę statycznie dać pytań i łatwo porównać odpowiedzi, trochę to wykracza poza moją wyobraźnię;]
Udało mi się zrobić pewnie niewiele, losuje pytania, wypisuje je oraz odpowiedzi do nich w przelosowanej kolejności co jest konieczne, ponieważ w bazie zawsze pierwsza jest poprawna:

  1. srand((double)microtime()*1000000);
  2.  
  3. $ilosc_pytan=30;
  4. $sql = mysql_query("SELECT id,pytanie,obrazek FROM pytania ORDER BY RAND() LIMIT $ilosc_pytan");
  5. $i=1;
  6. while($pytania = mysql_fetch_array($sql))
  7. {
  8. $pyt = explode("`", $pytania['pytanie']);
  9. $nr_pyt[$i]=$pytania['id'];
  10. $tresc_pyt[$i]= $pyt[0];
  11. $odpp[$i]=$pyt[1];
  12. $odp[$i][0]=$pyt[1];
  13. $odp[$i][1]=$pyt[2];
  14. $odp[$i][2]=$pyt[3];
  15. $obrazek[$i]=$pytania['obrazek'];
  16. $i++;
  17. }
  18. $i=0;
  19.  
  20. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  21. $zaznaczone = $_POST["zaznaczone"]; //Jak wiecie tutaj zaczyna się dla mnie problem, niżej opiszę czego nie potrafię
  22.  
  23. if($_POST['zaznaczone'])
  24. {
  25. $poprawne=0;
  26. $bledy=0;
  27.  
  28. if ()
  29.  
  30. ////////////////////////////////////////////////////////////////////////////////////////////////////////////
  31. echo "<form method=\"post\">";
  32. echo "<input type=\"hidden\" name=pytanie value=>";
  33.  
  34. for($i=1;$i<=$ilosc_pytan;$i++)
  35. {
  36. if(!empty($obrazek[$i]))
  37. echo "<IMG SRC=".$obrazek[$i]."><br>";
  38. else
  39. echo "<br>";
  40. echo "<b>$i. $tresc_pyt[$i]</b><br>";
  41.  
  42. shuffle($odp[$i]);
  43. for($j=0;$j<=2;$j++)
  44. {
  45. $odpz[] = "<input type=radio name=\"zaznaczone[$odp[$i]]\" value=>".$odp[$i][$j].""; [b]// nie wiem jakie tu dać value i name, oraz jak potem się odwołać[/b]
  46. echo array_pop($odpz);
  47. if ($j==0||$j==1||$j==2)
  48. echo "<br>";
  49. }
  50.  
  51. echo "<br>------------------------------------------------------------------------------------------------------------<br>";
  52. }
  53. echo "<br><input type=submit value=\" Gotowe! \"></form>";


Wiem, że jak już dojdę do rozwiązania będę musiał zapisać w zmiennych sesji zaznaczone w teście odpowiedzi żeby ich nie stracić, ale to na razie pomińmy.
Czy ktoś może mi jakoś pomóc lub trochę mnie naprowadzić?(IMG:style_emoticons/default/smile.gif) Test stoi pod adresem http://www.tczew.net.pl/~asterf/inz/moj.php

Ten post edytował asterf 2.08.2010, 21:43:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
skarabe.pl
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 49
Dołączył: 29.07.2010

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


test.php:
  1. <?php
  2. $ilosc_pytan = 30;
  3. $sql = mysql_query("SELECT id,pytanie,obrazek FROM pytania ORDER BY RAND() LIMIT $ilosc_pytan");
  4. $i = 1;
  5. $tresc_pyt = array();
  6. $odp = array();
  7. $_SESSION['quiz'] = array();
  8. while($pytania = mysql_fetch_assoc($sql))
  9. {
  10. $pyt = explode("`", $pytania['pytanie']);
  11. $tresc_pyt[$i] = $pyt[0];
  12. $odpp = $pyt[1];
  13. $odp[$i] = array_slice($pyt, 1);
  14. shuffle($odp[$i]);
  15. $_SESSION['quiz'][$i] = array_search($odpp, $odp[$i]);
  16. $obrazek[$i] = $pytania['obrazek'];
  17. $i++;
  18. }
  19.  
  20. echo '<form method="post" action="wynik.php">';
  21. for($i = 1;isset($tresc_pyt[$i]);$i++)
  22. {
  23. if(!empty($obrazek[$i])) {
  24. echo '<img src="'.$obrazek[$i] . '"><br>';
  25. } else {
  26. echo '<br>';
  27. }
  28. echo "<b>$i. {$tresc_pyt[$i]}</b><br>";
  29. for($j = 0;isset($odp[$i][$j]);$j++)
  30. {
  31. echo "<input type=\"radio\" name=\"pytanie-{$i}\" value=\"{$j}\"> {$odp[$i][$j]}";
  32. if (isset($odp[$i][$j + 1])) {
  33. echo '<br>';
  34. }
  35. }
  36. echo '<br><hr><br>';
  37. }
  38. echo '<br><input type=submit name="submit" value="Gotowe!"></form>';


wynik.php:
  1. <?php
  2. if($_POST['submit'])
  3. {
  4. $poprawne=0;
  5. $bledy=0;
  6. for($i=1;isset($_SESSION['quiz'][$i]);$i++)
  7. {
  8. if ((string)$_SESSION['quiz'][$i] === $_POST['pytanie-' . $i]) {
  9. $poprawne++;
  10. } else {
  11. $bledy++;
  12. }
  13. }
  14. echo " <br>Ilość odpowiedzi poprawnych: $poprawne <br>";
  15. echo " <br>Ilość odpowiedzi błędnych: $bledy <br>Twój wynik to:";
  16. $wynik=(($poprawne/($poprawne + $bledy))*100);
  17. echo round($wynik, 2), '%';
  18.  
  19. unset($_SESSION['quiz']);
  20. }

EDIT: są dwa pozytywne efekty uboczne - 1) liczbą pytań sterujesz tylko z jednego miejsca - w klauzuli LIMIT w zapytaniu, 2) nie masz żadnych limitów co do liczby odpowiedzi w pytaniu (no, musi być przynajmniej jedna).

Ten post edytował skarabe.pl 3.08.2010, 19:32:45
Go to the top of the page
+Quote Post

Posty w temacie
- asterf   [MySQL][PHP]Test - pomoc w zliczeniu wyników   2.08.2010, 21:40:58
- - IceManSpy   Pierwsza rzecz co widzę to:[PHP] pobierz, plaintex...   2.08.2010, 22:18:32
- - asterf   To jest tak że gdybym chciał w tym samym pliku wyś...   2.08.2010, 22:47:34
- - muk4   Polecam jakiś kurs PHP. Co do formularzy: http://p...   2.08.2010, 23:02:59
- - skarabe.pl   W name musisz dać numer pytania - tylko w ten spos...   3.08.2010, 07:18:17
- - asterf   skarabe.pl o taką pomoc mi chodziło:) Możesz powie...   3.08.2010, 14:13:47
|- - skarabe.pl   Cytat(asterf @ 3.08.2010, 15:13:47 ) ...   3.08.2010, 14:22:31
- - asterf   Ok dzięki za pomoc Takie nazwy mam już i tak we ...   3.08.2010, 15:00:45
- - skarabe.pl   [HTML] pobierz, plaintext <input type="sub...   3.08.2010, 15:04:06
- - asterf   No to przeoczyłem! Dzięki zaczęło działać coś,...   3.08.2010, 15:17:54
|- - skarabe.pl   Cytat(asterf @ 3.08.2010, 16:17:54 ) ...   3.08.2010, 15:20:53
- - asterf   No to też zmieniłem dla pewności, przecież inaczej...   3.08.2010, 15:25:24
- - skarabe.pl   A ten fragment co wyświetla? [PHP] pobierz, plaint...   3.08.2010, 15:30:34
- - asterf   To takie sprawdzenie, no i wyświetla mi tylko to ś...   3.08.2010, 15:44:05
- - skarabe.pl   Ehhh, [PHP] pobierz, plaintext print_r($_POST...   3.08.2010, 15:46:48
- - asterf   Przepraszam, że nie zastosowałem się do regulaminu...   3.08.2010, 16:01:42
- - skarabe.pl   [PHP] pobierz, plaintext echo "<input type...   3.08.2010, 16:17:20
- - asterf   No też właśnie stwierdziłem, że mam tam nie tak zn...   3.08.2010, 16:47:00
- - skarabe.pl   Bo w $_POST masz z podkreślnikami, a w tablic...   3.08.2010, 18:17:24
- - asterf   No sugerowałeś ale ja nie bardzo wiedziałem jak za...   3.08.2010, 18:31:53
- - skarabe.pl   Wklej proszę cały kod - poprawię i napiszę dokładn...   3.08.2010, 18:35:47
- - asterf   Kurcze już jakoś niewierze, że to będzie śmigać ;]...   3.08.2010, 18:49:04
- - skarabe.pl   test.php: [PHP] pobierz, plaintext <?phpsession...   3.08.2010, 19:20:30
- - asterf   Działa, wielkie dzięki Nie wiem czym sobie zasłuż...   3.08.2010, 20:03:26
|- - skarabe.pl   Cytat(asterf @ 3.08.2010, 21:03:26 ) ...   3.08.2010, 20:09:50
- - asterf   session start(); jest w pliku który jest includowa...   3.08.2010, 20:18:21


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: 15.10.2025 - 23:55