Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> skrypt do odpytywania
dentopolis
post 19.11.2019, 19:05:12
Post #1





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


cały czas pracuję nad kolejnymi funkcjami skryptu do odpytywania. działające funkcje: wybranie ucznia z bazy, wybranie kategorii, wybranie zakresu stopnia trudności pytań od łatwych (wszystkie)/od średnich (średnie i trudne)/ od trudnych (trudne), wybranie kolejności zadawanych pytań: rosnąco/malejąco/losowo, wybranie sposobu zadawania pytań: pytanie jest pytaniem/odpowiedź jest pytaniem/losowo. pytajnik

mam natomiast najważniejsze pytanie żeby skrypt działał tzn. kiedy wybrane zostają w pliku index.php określone parametry testu, odczywytane są one za pomocą GET przez poniższy kod w test.php. jak zmienić mój kod żeby zapamiętany został wybrany zakres pytań i pozostałe parametry odpytywania? chcę żeby po kliknięciu któregokolwiek przycisku oceny "trudne", "wiem", "łatwe" zapisał odpowiedź i wczytał kolejne pytanie zgodnie z tymi parametrami testu.

  1. <?php
  2. ?>
  3. <!doctype html>
  4. <html lang="pl-PL">
  5. <head>
  6. <meta charset="utf-8">
  7. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  8. <script src="jquery/jquery.min.js"></script>
  9. <script src="bootstrap/js/bootstrap.bundle.min.js"></script>
  10. <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
  11. <link rel="icon" href="favicon.png" type="image/png">
  12. <script>
  13. function checkanswer() {
  14. var x = document.getElementById("answer");
  15. if (x.style.display === "none") {
  16. x.style.display = "block";
  17. } else {
  18. x.style.display = "none";
  19. }
  20. }
  21. </script>
  22. <title>pytajnik</title>
  23. </head>
  24. <body>
  25. <form action="answer.php" method="get">
  26. <?php
  27.  
  28.  
  29. $user=$_GET['user'];
  30. $category=$_GET['category'];
  31. $questions=$_GET['questions'];
  32. $ask=$_GET['ask'];
  33. $order=$_GET['order'];
  34. $type=$_GET['type'];
  35.  
  36.  
  37. switch ($questions):
  38. case ($questions == 'hard'):
  39. #echo $questions;
  40. break;
  41. case ($questions == 'average'):
  42. # echo $questions;
  43. break;
  44. case ($questions == 'simple'):
  45. # echo $questions;
  46. break;
  47. endswitch;
  48.  
  49.  
  50.  
  51. switch ($order):
  52. case ($order == 'random'):
  53. #echo $order;
  54. $orderx=' RAND()';
  55. break;
  56. case ($order == 'ascending'):
  57. #echo $order;
  58. $orderx=' `pytajnik_pytania`.`id` ASC';
  59. break;
  60. case ($order == 'descending'):
  61. #echo $order;
  62. $orderx=' `pytajnik_pytania`.`id` DESC';
  63. break;
  64. endswitch;
  65.  
  66. ?>
  67.  
  68. <div style="text-align:center;">
  69. 1/30 40%
  70. <br/>
  71.  
  72. <?php
  73. $servername = "#############";
  74. $username = "#############";
  75. $password = "#############";
  76. $dbname = "#############";
  77.  
  78. $conn = new mysqli($servername, $username, $password, $dbname);
  79.  
  80. mysqli_set_charset( $conn, 'utf8' );
  81. if ($conn->connect_error) {
  82. die("Connection failed: " . $conn->connect_error);
  83. }
  84. $sql = "SELECT * FROM `pytajnik_pytania` ORDER BY $orderx";
  85. $result = $conn->query($sql);
  86.  
  87. if ($result->num_rows > 0) {
  88. while($row = $result->fetch_assoc()) {
  89.  
  90. $questionid = $row['id'];
  91. $question = $row['question'];
  92. $answer = $row['answer'];
  93.  
  94. }
  95.  
  96.  
  97. echo "<hr/>";
  98. echo "<div class='row' style='height:150px;'>";
  99. switch ($ask):
  100. case ($ask == 'question'):
  101. echo "<div class='col'>";
  102. echo $question;
  103. echo "</div>";
  104. echo "<div class='col'><div id='answer' style='display:none;'>";
  105. echo $answer;
  106. echo "</div></div>";
  107. break;
  108. case ($ask == 'answer'):
  109. echo "<div class='col'>";
  110. echo $answer;
  111. echo "</div>";
  112. echo "<div class='col'><div id='answer' style='display:none;'>";
  113. echo $question;
  114. echo "</div></div>";
  115. break;
  116. case ($ask == 'both'):
  117. $var = rand(1,2);
  118. if($var == 1)
  119. {
  120. echo "<div class='col'>";
  121. echo $question;
  122. echo "</div>";
  123. echo "<div class='col'><div id='answer' style='display:none;'>";
  124. echo $answer;
  125. echo "</div></div>";
  126. }
  127. else
  128. {
  129. echo "<div class='col'>";
  130. echo $answer;
  131. echo "</div>";
  132. echo "<div class='col'><div id='answer' style='display:none;'>";
  133. echo $question;
  134. echo "</div></div>";
  135. }
  136. break;
  137. endswitch;
  138. echo "</div>";
  139. } else {
  140. }
  141. ?>
  142.  
  143. <?php
  144. $con=mysqli_connect("#############","#############","#############","#############");
  145. $sql="SELECT * FROM `pytajnik_pytania` INNER JOIN `pytajnik_odpowiedzi`";
  146. if ($result=mysqli_query($con,$sql))
  147.  
  148. {
  149.  
  150. $rowcount=mysqli_num_rows($result);
  151. # echo $rowcount;
  152.  
  153. }
  154. #mysqli_close($con);
  155. ?>
  156.  
  157.  
  158.  
  159. <br/><br/><br/>
  160.  
  161. <button type='button' class='btn btn-primary btn-block' onclick='checkanswer()'>odpowiedź</button>
  162.  
  163. <br/>
  164.  
  165. <div class="row">
  166. <div class="col"><button type='submit' name="odpowiedz" value="1" class='btn btn-danger btn-block'>trudne</button></div>
  167. <div class="col"><button type='submit' name="odpowiedz" value="2" class='btn btn-warning btn-block'>wiem</button></div>
  168. <div class="col"><button type='submit' name="odpowiedz" value="3" class='btn btn-success btn-block'>łatwe</button></div>
  169. </div>
  170.  
  171. </div>
  172. <?php
  173. $con=mysqli_connect(""#############";",""#############";",""#############";",""#############";");
  174.  
  175. if (isset($_GET["submit"])){
  176. $SQL ="INSERT INTO pytajnik_odpowiedzi (`id`, `session`, `datetime`, `questionid`, `button`, `user`) VALUES (NULL, $session, $datetime, $questionid, $button, $user)";
  177. $result = mysql_query($SQL);
  178. }
  179. ?>
  180. </form>
  181. </body>
  182. </html>


Go to the top of the page
+Quote Post
Tomplus
post 20.11.2019, 09:33:02
Post #2





Grupa: Zarejestrowani
Postów: 1 825
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

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


Pytanie, dlaczego INSERT dodajesz na koniec kodu? a nie na początku?
W takim wypadku może okazać się że użytkownikowi wyświetli się dwa razy to samo pytanie.

A co do powrotu do strony z pytaniem to:
  1. header("Location: stronaZpytaniem");


Go to the top of the page
+Quote Post
dentopolis
post 20.11.2019, 09:39:03
Post #3





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


okay, wiem jak powrócić ale wtedy zapytanie sql powinno być inne i wykluczyć już wyświetlone pytania
Go to the top of the page
+Quote Post
viking
post 20.11.2019, 10:02:14
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1113
Dołączył: 30.08.2006

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


Zależy jak chcesz to zrobić? Czy globalnie dla użytkownika - wtedy tworzysz nową tabelkę typu wyświetlone_pytania a do selecta dodajesz ...where id_pytania not in(select id from wyświetlone_pytania where user_id=?), czy wystarczy per sesja - wtedy do tablicy w sesji typu $_SESSION['wyswietlone_pytania'] dodajesz id pobranego pytania i w zapytaniu ...where id_pytania not in(?); gdzie ? to jakieś implode(',', $_SESSION['wyswietlone_pytania']).

Ten post edytował viking 20.11.2019, 10:03:47


--------------------
Go to the top of the page
+Quote Post
dentopolis
post 20.11.2019, 20:43:39
Post #5





Grupa: Zarejestrowani
Postów: 252
Pomógł: 0
Dołączył: 14.08.2016

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


tak jak mówiłeś viking - od tej pory wybrane zmienne są zapisywane w sesji, w tym id obecnie wyświetlanego pytania. po kliknięciu któregoś z przycisków np.średnie odpowiedź jest zapisywana do bazy i potrawię przez header("Location: test.php") powrócić do dalszego rozwiązywania testu (chwilowo to wyłączyłem) tylko mam pytanie jak to zapisać "w tablicy" żeby odjął to pytanie..i odejmował każde kolejne już wyświetlone.obecne zapytanie:

  1. $sql = "SELECT * FROM `pytajnik_pytania` WHERE `id` NOT IN (SELECT questionid FROM `pytajnik_odpowiedzi`) ORDER BY $orderx";
  2. $result = $conn->query($sql);
  3.  
  4. if ($result->num_rows > 0) {
  5. while($row = $result->fetch_assoc()) {
  6.  
  7. $questionid = $row['id'];
  8. echo $questionid;
  9. $question = $row['question'];
  10. $answer = $row['answer'];
  11.  
  12. }

skrypt
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: 19.03.2024 - 09:03