簡體   English   中英

PHP的測驗有問題和答案在兩個不同的結果集

[英]php quiz having questions and answers in two different resultset

我正在做一個測驗,其中包含問題及其選項。 問題和選項都來自結果集中的數據庫。 我在循環和結果集中遇到問題。

1-我無法從每個問題中選擇選項。 每當我從問題1中選擇選項時,我就無法從問題2中選擇選項。

2-我的頁面正在重新加載,等於測驗中的問題數量。 例如,我在測驗中有兩個問題,然后頁面被重新加載兩次,如果有5個問題,則頁面被重新加載了5次。

if(@$_GET['q']== 'quiz' && @$_GET['step']== 2) {
$eid=@$_GET['eid'];
$sn=@$_GET['n'];
$total=@$_GET['t'];
$a=1;
$b=0;
$q=mysqli_query($con,"SELECT count(*) FROM questions WHERE eid='$eid'" );
while($row=mysqli_fetch_array($q) ){
    $b=$row['count(*)'];
}
echo '<div class="panel" style="margin:5%">';
for($a=1;$a<=$b;$a++){
$q=mysqli_query($con,"SELECT * FROM questions WHERE eid='$eid' AND sn='$a' " );
while($row=mysqli_fetch_array($q) )
{
$qns=$row['qns'];
$qid=$row['qid'];
echo '<b>Question &nbsp;'.$a.'&nbsp;:<br />'.$qns.'</b><br />';
$q=mysqli_query($con,"SELECT * FROM options WHERE qid='$qid' " );
echo '<form action="update.php?q=quiz&step=2&eid='.$eid.'&n='.$sn.'&t='.$total.'&qid='.$qid.'" method="POST"  class="form-horizontal">
<br />';
while($row=mysqli_fetch_array($q) )
{
$option=$row['option'];
$optionid=$row['optionid'];
echo'<input type="radio" name="ans" value="'.$optionid.'">'.$option.'<br />';
}
echo '<br /><br />';
}
}
echo'<br /><button type="submit" class="btn btn-primary"><span class="glyphicon glyphicon-lock" aria-hidden="true"></span>&nbsp;Submit</button></form></div>';
}

感謝您的幫助。

因此,在蝙蝠的右邊,我看到了一些問題。

輕松的SQL注入是最重要的。 您使用GET請求,因此可以從URL中獲取信息。 我可以簡單地轉義引號,結束查詢並直接從URL運行刪除操作。 您在設置$q時執行此操作。

如何防止PHP中進行SQL注入?

無需對count() MySQL語句執行while循環。 它返回一行。

您設置$a ,然后再次為for循環設置它。 查看foreach循環...

很抱歉,我無法為您提供代碼。 由於存在其他邏輯錯誤,因此需要完全重做。 您需要了解html <form>並且只能提交一個表單。 另外,在HTML中,元素的ID必須唯一。 這可能是您只能提交一個問題答復的原因。 另外,您有許多表格,因此一旦找到答案的方法,您將只提交其中一個表格。

似乎您似乎試圖用盡可能少的代碼行來完成所有操作,但是您還不了解自己在做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM