Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Generator testów wielokrotnego wyboru
Bojakki
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Prawie skonczylem pisac taki test. mam problem tylko z 1 rzecza.
Mam taki kod:
  1. <?php
  2. if(!isset($_REQUEST['submit2']))
  3. { $uzytkownik=$_SESSION['user_logged'];
  4. //$uzytkownik = mysql_real_escape_string($_REQUEST['uzytkownik']);
  5. $trudnosc = $_REQUEST['trudnosc'];
  6. $przedmiot = $_REQUEST['przedmiot'];
  7. $pytania = $_REQUEST['pytania'];
  8. $myquery = mysql_query("INSERT INTO testy (id_uzytkownika, trudnosc, id_przedmiotu) VALUES ('{$uzytkownik}','{$trudnosc}','{$przedmiot}')");
  9. $ida = mysql_insert_id();//to
  10. echo 'Test numer '.$ida;
  11. $c=0;
  12. $query = mysql_query("SELECT * FROM pytania WHERE id_przedmiotu=$przedmiot AND trudnosc=$trudnosc
     ORDER BY RAND() LIMIT $pytania"
    ) or die(mysql_error());
  13. echo '<form name="formularz" method="post" action="generuj_test.php?krok=2&id='.$id.'&q='.$pytania.'">';
  14. while($row = mysql_fetch_row($query))
  15. {
  16. $c++;
  17. $idpytania = $row[0];//to
  18. $pytanie = $row[1];
  19. $odp1 = $row[2];
  20. $odp2 = $row[3];
  21. $odp3 = $row[4];
  22. $odpp1 = $row[5];//to
  23. $odpp2 = $row[6];//to
  24. $odpp3 = $row[7];//to
  25.  
  26. echo '<font size="4"><b>'.$idpytania.'.</b></font><br>';
  27. echo '<b>'.$pytanie.'</b><br>';
  28.  
  29. echo '<input type="checkbox" value="1" name="odpu1"> '.$odp1.'<br>';
  30. echo '<input type="checkbox" value="1" name="odpu2"> '.$odp2.'<br>';
  31.  echo '<input type="checkbox" value="1" name="odpu3"> '.$odp3.'<br>';
  32.  
  33.  if ($_POST['odpu1']==1) $odpu1=1; else $odpu1=0;
  34. if ($_POST['odpu2']==1) $odpu2=1; else $odpu2=0;
  35. if ($_POST['odpu3']==1) $odpu3=1; else $odpu3=0;
  36. }
  37. echo '<input type="submit" name="submit2" value="ZatwierdĽ" /></form>';
  38.  }
  39. else
  40. {
  41.  // Tutaj nie wiem co zrobic by pytania sie wyslaly
  42.  $myquery=mysql_query("INSERT INTO odpowiedzi (id_testu, id_pytania, odpu1, odpu2, odpu3) VALUES ('{$ida}','{$idpytania}','{$odpu1}','{$odpu2}','{$odpu3}')");
  43.  
  44.  echo '<a href="test.php?id='.$id.'">Zobacz wynik</a>';
  45. }
  46. ?>


Chodiz o to ze test generuje losowe pytania w liczbie wczesniej ustalonej. I probuje by po zatwierdzeniu swoich odpowiedzi kazda z wygenerowanych odpowiedzi poszla do tabeli 'odpowiedzi' O ile $idtestu jest zawsze takie same o tyle nie wiem jak wrzucic pozostale dane bo te dla kazdej odpowiedzi beda inne.

zapytanie ma taka postac:
$myquery=mysql_query("INSERT INTO odpowiedzi (id_testu, id_pytania, odpu1, odpu2, odpu3) VALUES ('{$ida}','{$idpytania}','{$odpu1}','{$odpu2}','{$odpu3}')");
chce jednak by wykonalo sie tyle razy ile jest wygenerowanych pytan i oczywiscie tak by $idpytania mialo taki id jak losowe wybrane pytanie i odpwoiednio wybrane odpowiedzi uzytkownika dla tego pytania.

Wie moze ktos jak to mozna zrobic?

Z gory dziekuje za pomoc!


--------------------
Go to the top of the page
+Quote Post
uli
post
Post #2





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

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


1-sza normalizacja.

tabela odpowiedzi:

id | id_testu | pytanie | odpowiedz

np.

1 | 1 | p1 | 1
2 | 1 | p1 | 3

w ten sposób masz w teście 1 w pytaniu 'p1' zaznaczone opcje 1,3


W ten sposób masz do każdego testu możliwość wsadzenia dowolnej liczby pytań i odpowiedzi na nie.

Ten post edytował uli 4.01.2008, 13:37:31


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
Bojakki
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

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


Ale Ja bardzo podobna tabele mam. Chodiz mi o to ze sa np. ktos wygenerowal test numer 28, sa w nim wygenrowane 2 pytania, pierwsze ma id=3, a drugie ma id=15. Uzytkownik na pytanie 1 udzielil odpowiedz a) (czyli 1) a na drugie odpowiedz c) (czyli 3). I teraz jak to wrzucic do tej tabeli by ta wygladala tak:
[id][id_testu][id_pytania][odpowiedz_uzytkownika]
[1][28][3][1]
[2][28][15][3]
I nie wiem jak mozna to wrzucic do tabel czyli co wrzucic miedzy linie 40 i 45 mojego kodu.

Ten post edytował Bojakki 4.01.2008, 15:30:30


--------------------
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 Aktualny czas: 21.08.2025 - 12:35