Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Inner join QUIZ
NajpierwSieNaucz
post 25.08.2014, 14:12:06
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 8.06.2014

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


Witam!

Próbuję utworzyć prosty quiz z podziałem pytań na kilka kategorii użytkowników. Powiedzmy przywileje 1,2,3 dają różny zbiór pytań dodatkowych. Wiem, że mogę utworzyć to na tabelach pytanie i odpowiedź dla 1 pytanie i odpowiedź dla 2 i je wyświetlać odpowiednio, aczkolwiek chciałbym zrobić to przy użyciu inner join. Prosta metoda GET czyli w pasku adresu dawałbym informacje o danym użytkowniku. Tabele wyglądałyby następująco:

Pytanie:
nr_pyt
tresc_pytania
odp_1
odp_2
odp_3

Odpowiedź:
nr_odp
odp_1
odp_2
odp_3

Pytania1:
odp_1
odp_2
odp_3

Pytania2:
odp_1
odp_2
odp_3

I teraz pytanie jak współdzielić id pytania tak aby nie tworzyć dodadkowych tabel typu OdpowiedzPytania1.

Aktualne rozwiązanie z dwoma tabelami
  1. ? Quiz.php
  2. <div id="mybody">
  3. <div id="textmybody">
  4. <h1>Test kompetencji</h1>
  5. <form action="wyniki.php" method="post">
  6. <?php
  7. $sql = "SELECT pytania.nr_pyt, pytania.zapytanie, pytania.odp_1, pytania.odp_2, pytania.odp_3, odpowiedzi.odp_1, odpowiedzi.odp_2, odpowiedzi.odp_3, odpowiedzi.odp_tag
  8. FROM pytania, odpowiedzi
  9. WHERE pytania.nr_pyt = odpowiedzi.nr_odp";
  10. $result = mysql_query($sql, $con);
  11.  
  12. while ($data = mysql_fetch_row($result)) {
  13. echo "<b>Pytanie $data[0]: $data[1] </b><br>
  14. <input type='radio' name='$data[8]' value='$data[5]'>$data[2]<br>
  15. <input type='radio' name='$data[8]' value='$data[6]'>$data[3]<br>
  16. <input type='radio' name='$data[8]' value='$data[7]'>$data[4]<br>";}?><br>
  17.  
  18. <input type="submit" value="Sprawdź wyniki!">
  19. </form>
  20. </div>
  21.  
  22. ? wyniki.php
  23. <?php
  24. $score = 0;
  25. if ($_POST['q1'] == 'yes')
  26. $score++;
  27. if ($_POST['q2'] == 'yes')
  28. $score++;
  29. if ($_POST['q3'] == 'yes')
  30. $score++;
  31. if ($_POST['q4'] == 'yes')
  32. $score++;
  33.  
  34. ?>
  35.  
  36.  
  37.  
  38. <div id="mybody">
  39.  
  40. <div id="textmybody">
  41. <h1>Twój wynik:</h1>
  42.  
  43. <?php
  44. echo '<b>Twój wynik to:! ' . $score . '/4</b><br><br>';
  45. if ($score < 2)
  46. echo 'Radzę wrócić do lekcji!</br></br>';
  47. else if ($score == 4)
  48. echo 'Świetnie!</br></br>';
  49. else
  50. echo 'Dobrze</br></br>';
  51. if ($_POST['q1'] == 'no')
  52. echo '</br>Prawidłowa odpowiedź na pytanie pierwsze: 5';
  53. if ($_POST['q2'] == 'no')
  54. echo '</br>Prawidłowa odpowiedź na pytanie drugie: 1,5 km2';
  55. if ($_POST['q3'] == 'no')
  56. echo '</br>Prawidłowa odpowiedź na pytanie trzecie: Vasco da Gama';
  57. if ($_POST['q4'] == 'no')
  58. echo '</br>Prawidłowa odpowiedź na pytanie czwarte: gubernatora generalnego oraz biskupstwa';
  59. ?>
  60.  
  61.  
  62. </div>
  63.  
  64. </div>


Ten post edytował NajpierwSieNaucz 25.08.2014, 14:14:12
Go to the top of the page
+Quote Post
Pyton_000
post 25.08.2014, 14:47:05
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Kod
Pytania
id  |  tresc_pytania  |  id_kategorii_pytania

Odpowiedźi
id  |  id_pytania  |  tresc_opowiedzi  |  czy_prawdziwe
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: 8.05.2025 - 05:59