Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generator testów wielokrotnego wyboru
Forum PHP.pl > Forum > Przedszkole
Bojakki
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!
uli
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.
Bojakki
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.
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.