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. http://dentopolis.org/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.
<?php http://www.php.net/session_start(); ?> <!doctype html> <html lang="pl-PL"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="jquery/jquery.min.js"></script> <script src="bootstrap/js/bootstrap.bundle.min.js"></script> <link rel="stylesheet" href="bootstrap/css/bootstrap.min.css"> <link rel="icon" href="favicon.png" type="image/png"> <script> function checkanswer() { var x = document.getElementById("answer"); if (x.style.display === "none") { x.style.display = "block"; } else { x.style.display = "none"; } } </script> <title>pytajnik</title> </head> <body> <form action="answer.php" method="get"> <?php $user=$_GET['user']; $category=$_GET['category']; $questions=$_GET['questions']; $ask=$_GET['ask']; $order=$_GET['order']; $type=$_GET['type']; switch ($questions): case ($questions == 'hard'): #echo $questions; break; case ($questions == 'average'): # echo $questions; break; case ($questions == 'simple'): # echo $questions; break; endswitch; switch ($order): case ($order == 'random'): #echo $order; $orderx=' RAND()'; break; case ($order == 'ascending'): #echo $order; $orderx=' `pytajnik_pytania`.`id` ASC'; break; case ($order == 'descending'): #echo $order; $orderx=' `pytajnik_pytania`.`id` DESC'; break; endswitch; ?> <div style="text-align:center;"> 1/30 40% <br/> <?php $servername = "#############"; $username = "#############"; $password = "#############"; $dbname = "#############"; $conn = new mysqli($servername, $username, $password, $dbname); mysqli_set_charset( $conn, 'utf8' ); if ($conn->connect_error) { http://www.php.net/die("Connection failed: " . $conn->connect_error); } $sql = "SELECT * FROM `pytajnik_pytania` ORDER BY $orderx"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $questionid = $row['id']; $question = $row['question']; $answer = $row['answer']; } http://www.php.net/echo "<hr/>"; http://www.php.net/echo "<div class='row' style='height:150px;'>"; switch ($ask): case ($ask == 'question'): http://www.php.net/echo "<div class='col'>"; http://www.php.net/echo $question; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class='col'><div id='answer' style='display:none;'>"; http://www.php.net/echo $answer; http://www.php.net/echo "</div></div>"; break; case ($ask == 'answer'): http://www.php.net/echo "<div class='col'>"; http://www.php.net/echo $answer; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class='col'><div id='answer' style='display:none;'>"; http://www.php.net/echo $question; http://www.php.net/echo "</div></div>"; break; case ($ask == 'both'): $var = http://www.php.net/rand(1,2); if($var == 1) { http://www.php.net/echo "<div class='col'>"; http://www.php.net/echo $question; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class='col'><div id='answer' style='display:none;'>"; http://www.php.net/echo $answer; http://www.php.net/echo "</div></div>"; } else { http://www.php.net/echo "<div class='col'>"; http://www.php.net/echo $answer; http://www.php.net/echo "</div>"; http://www.php.net/echo "<div class='col'><div id='answer' style='display:none;'>"; http://www.php.net/echo $question; http://www.php.net/echo "</div></div>"; } break; endswitch; http://www.php.net/echo "</div>"; } else { } ?> <?php $con=mysqli_connect("#############","#############","#############","#############"); $sql="SELECT * FROM `pytajnik_pytania` INNER JOIN `pytajnik_odpowiedzi`"; if ($result=mysqli_query($con,$sql)) { $rowcount=mysqli_num_rows($result); # echo $rowcount; } #mysqli_close($con); ?> <br/><br/><br/> <button type='button' class='btn btn-primary btn-block' onclick='checkanswer()'>odpowiedź</button> <br/> <div class="row"> <div class="col"><button type='submit' name="odpowiedz" value="1" class='btn btn-danger btn-block'>trudne</button></div> <div class="col"><button type='submit' name="odpowiedz" value="2" class='btn btn-warning btn-block'>wiem</button></div> <div class="col"><button type='submit' name="odpowiedz" value="3" class='btn btn-success btn-block'>łatwe</button></div> </div> </div> <?php $con=mysqli_connect(""#############";",""#############";",""#############";",""#############";"); if (http://www.php.net/isset($_GET["submit"])){ $SQL ="INSERT INTO pytajnik_odpowiedzi (`id`, `session`, `datetime`, `questionid`, `button`, `user`) VALUES (NULL, $session, $datetime, $questionid, $button, $user)"; $result = http://www.php.net/mysql_query($SQL); } ?> </form> </body> </html>
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:
http://www.php.net/header("Location: stronaZpytaniem");
okay, wiem jak powrócić ale wtedy zapytanie sql powinno być inne i wykluczyć już wyświetlone pytania
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']).
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:
$sql = "SELECT * FROM `pytajnik_pytania` WHERE `id` NOT IN (SELECT questionid FROM `pytajnik_odpowiedzi`) ORDER BY $orderx"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $questionid = $row['id']; http://www.php.net/echo $questionid; $question = $row['question']; $answer = $row['answer']; }
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)