2015-12-29 6 views
5

Tworzę formularz, który przynosi pytania i odpowiedzi z bazy danych, mam kilka pytań, ale chcę odpowiedzieć na jedno pytanie na każdej stronie i następnie przejdź do następnego pytania. Jak mogę to zrobić? Potrzebuję wskazówek.Jak utworzyć formularz z tym, który wybiera pytania i zapisuje odpowiedzi z/do bazy danych

Mój kod do wniesienia pytania i odpowiedzi wygląda następująco:

echo "<form method='post'>"; 
 
\t $sql= "SELECT pid, qid, question_link FROM question ORDER BY qid ASC LIMIT 1"; 
 

 
$result = $mysqli->query($sql); 
 

 
if ($result->num_rows > 0) { 
 
    while($row = $result->fetch_array()) { 
 
\t $pid1= $row['pid']; 
 
\t $qid1= $row['qid']; 
 
\t 
 
\t echo $row['question_link']."<br>"; 
 
\t } 
 
    
 
} 
 

 
\t $sql1= "SELECT pid, qid, aid, answer, points FROM answer_det WHERE pid=$pid1 AND qid=$qid1"; 
 

 
$result1 = $mysqli->query($sql1); 
 

 
if ($result1->num_rows > 0) { 
 
    while($row = $result1->fetch_array()) { 
 
\t \t $answer= $row['answer']; 
 
\t \t $aid= $row['aid']; 
 
\t echo "<input type='radio' name='answers' value='".$answer."'/>".$answer."<br>"; 
 
\t } 
 
    
 
} 
 

 
echo "<input type='submit' value='Submit'></form>";

powinienem stworzyć kolejną stronę PHP, który zapisuje dane do bazy danych i pokazuje następne pytanie? czy jest jakaś funkcja, która może to zrobić?

Odpowiedz

1

zależy od przypadku. Jeśli chcesz, aby użytkownik zatrzymał się po drodze, a może następnym razem powróci i skończy, to DB jest dobrym rozwiązaniem. w przeciwnym razie możesz użyć sesji do przechowywania swoich postępów.

<?php 
session_start(); 
if(isset($_POST['name'])){ 
    //store answers in session 
    $new = (!empty($_SESSION['session_name']))? $_SESSION['session_name'].'|'.$_POST['name'] : $_POST['name']; 
    //split session into an array 
    $_SESSION['session_name'] = $new; 
} 
else if(isset($_POST['clear'])){ 
    if(!empty($_SESSION['session_name'])){ 
     unset($_SESSION['session_name']); 
     echo "cleared"; 
    } 
    else 
     echo "Nothing to Clear"; 
} 
if(!empty($_SESSION['session_name'])){ 
    var_dump($_SESSION['session_name']); 
} 
//finish the procees here befor storing into database; 
//use foreach to itterate btw arrays and match anwers 
//$_SESSION['session_name'] = explode('|', $_SESSION['session_name']); 
//answer table $answers = array('a','b','c','d','e'); 
/* foreach($_SESSION['session_name'] as $key => $ans){ 
    if($ans == $answer[$key]){ 
     //right procesesor 
    } 
    else{ 
     //wrong procesesor 
    } 
} */ 
//handle the right and wrong process get to total score the store in db 


?> 
<form method="post" action="index.php"> 
    <input name="name" type="text" placeholder=""> 
    <input type="submit" value="submit"> 
</form> 
<form method="post" action="index.php"> 
    <input type="submit" name="clear" value="clear"> 
</form> 

SIMPLE BASIC demo jak sesja może otrzymać pracę bez zapytań db za każdym razem.

+0

Nie chcę, aby użytkownicy wracali. Wykonają test tylko raz i nie mogą wrócić do poprzedniego pytania –

+0

, a następnie użyć sesji, aby zapisać swoje postępy. –

+0

jak masz na myśli korzystanie z sesji? nie jestem dobry w sesji, ale czy powinienem zapisać wszystko w sesjach, a następnie zapisać go w DB na końcu testu? –

Powiązane problemy