Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]Rozwiązywanie testu i system sprawdzania...
k0b3
post 5.04.2007, 10:35:04
Post #1





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


Witam.

Mam do zrobienia system testów z języków obcych. Nie chce go opierać o mysql, nie wiem jak się do tego zabrać. Czytałem coś o tablicach, ale nie wiem jak to wykorzystać. Zrobiłem coś o własną marną wiedzę, wydaje mi się że kod sprawdzania można zamieścić w jednej linijce, a nie jak to ja zrobiłem winksmiley.jpg

Mam kilkanaście różnych pytań w takiej formie (sorki za idiotyczne pytania w "formularzu" poniżej, ale to ma tylko zobrazować zasadę działania) :

<form action.... >
1. Czy słońce jest gorące? |A ›|<- tu jest pole <select name="1">
A. Tak B.Nie

2. Wlazł |A ›| na płotek...
A. Piesek B.Kotek C.Mysz

|Sprawdź test|
</form>

Po kliknięciu sprawdź przechodzi mi do skryptu z systemem sprawdzenia...

  1. <?
  2. $test= $_GET['test'];
  3.  
  4.  
  5. if ($test=="de") {
  6.  
  7. $de1 = $_POST['1'];
  8. $de2 = $_POST['2'];
  9.  
  10. if($de1=='A') {
  11. echo gratulacje;
  12. $del1wyn = 1;
  13. } else {
  14. $del1wyn = 0;
  15. echo blad;
  16. }
  17.  
  18. if($de2=='B') {
  19. echo gratulacje;
  20. $del2wyn = 1;
  21. } else {
  22. $de21wyn = 0;
  23. echo blad;
  24. }
  25.  
  26. $wynik = (($del1wyn + $del2wyn)/2)*100;
  27.  
  28. echo $wynik.'%';
  29.  
  30. }
  31. ?>


Skrypt spełnia swoje założenia, ale wydaje mi się (jak już wspomniałem) za dużo kodu o coś tak małego.
Chciałbym aby skrypty sprawdzający zaznaczał mi poprawnie rozwiązane zadanie przy nim lub też jakiś krzyżyk przy błędnym rozwiązaniu...

Pozdrawiam i z góry dziękuje za pomoc smile.gif
Go to the top of the page
+Quote Post
rojmarek
post 5.04.2007, 12:09:09
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 10.09.2005

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


no powinieneś sobie zrobić jakąś tablice, np:

zadania.php:
  1. <?php
  2. $zadania = array();
  3. $zadania[] = array(
  4. "question_begin" => "Czy słońce jest gorące?",
  5. "question_end" => "",
  6. "answers" => array(
  7. "A" => "TAK",
  8. "B" => "NIE"
  9. ),
  10. "correct" => "A"
  11. );
  12. $zadania[] = array(
  13. "question_begin" => "Wlazł ",
  14. "question_end" => " na płotek",
  15. "answers" => array(
  16. "A" => "kotek",
  17. "B" => "młotek"
  18. ),
  19. "correct" => "A"
  20. );
  21. ?>


taka tablice z pytaniami zapisuejesz sobie w mysql, albo w jakimś pliku, a potem ją zczytujesz...
pytania.php:
  1. <?php
  2. include('zadania.php');
  3. foreach ($zadania as $num=>$zad){
  4. echo ($num+1) . ". " . $zad['question_begin'] . "<select name='" . $num . "'>";
  5. foreach ($zad['answers'] as $key=>$answ){
  6. echo "<option value='" . $key . "'>" . $key . ". " . $answ . "</option>";
  7. }
  8. echo $zad['question_end'];
  9. }
  10. ?>


wyniki.php
  1. <?php
  2. include('zadania.php');
  3. foreach ($zadania as $num=>$zad){
  4. echo ($num+1) . ". " . $zad['question_begin'] . $zad['answers']['correct'] . $zad['question_end'];
  5. if ($_GET[$num] == $zad['answers']['correct']) {
  6. echo "OK";
  7. }
  8. else{
  9. echo "Źle! Twoja odpowiedz: " . $zad['answers'][$_GET[$num]];
  10. }
  11. }
  12. ?>


liczenie poprawnych, i dzielenie to juz sobie sam dopisz...
pozdr

edit:
nie ma tych przyciskow formularzy itp, no i nie spawdzane, ale powinno chodzic...

Ten post edytował rojmarek 5.04.2007, 12:13:10
Go to the top of the page
+Quote Post
k0b3
post 5.04.2007, 23:11:11
Post #3





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


cos nie tak... wyswietla sie tresć pierwszego pytania... Drugiego nie ma...
Go to the top of the page
+Quote Post
rojmarek
post 6.04.2007, 08:24:58
Post #4





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 10.09.2005

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


Cytat(kobemat @ 5.04.2007, 22:11:11 ) *
cos nie tak... wyswietla sie tresć pierwszego pytania... Drugiego nie ma...

widocznie jest błąd.
a probowales sam wymyslic co jest nietak?
podpowiem, ze pytanie drugie pokazuje sie w kodzie, jest tylko niewidoczne na stronie

pytania.php:
  1. <?php
  2. echo $zad['question_end'];
  3. ?>

zamień na
  1. <?php
  2. echo "</select>" . $zad['question_end'] . "<br />";
  3. ?>


edit:
w systemie jest jeszcze jeden błąd, ale w sumie z nim system moze działać...

Ten post edytował rojmarek 6.04.2007, 08:29:15
Go to the top of the page
+Quote Post
k0b3
post 6.04.2007, 12:10:56
Post #5





Grupa: Zarejestrowani
Postów: 138
Pomógł: 0
Dołączył: 1.08.2006
Skąd: Kielce

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


A można wiedzieć jaki?

Test źle jest sprawdzany... Czy jest konieczna metoda GET w sprawdzeniu? Można jakość tę funkcje zapisać metodą POST?

Gdy biorę metodą GET (przy którejkolwiek odpowiedzi) dostaje info:

Cytat
1. Czy słońce jest gorące?Zle! Twoja odpowiedz: TAK
2. Wlazl na plotekZle! Twoja odpowiedz: mlotek


Gdy biorę metodą POST, zawsze sie zgadzają...
Go to the top of the page
+Quote Post
rojmarek
post 6.04.2007, 15:25:31
Post #6





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 10.09.2005

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


Cytat(rojmarek @ 5.04.2007, 11:09:09 ) *
zadania.php:
  1. <?php
  2. if ($_GET[$num] == $zad['answers']['correct'])
  3. ?>

strasznie czlowieku leniwy jestes...
błąd jest w cytowanej linijce. przejrzyj strukturę w której trzymane są pytania
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: 20.07.2025 - 03:51