2010-01-19 152 views
1

我想在步驟中進行多問題輪詢。 我希望問題依次顯示,問題應該從數據庫中提取。php輪詢循環查詢

我正在成功從數據庫中提取一個問題。但是我想讓它工作的方式是當用戶點擊提交一個問題時,它應該讓用戶進入下一個問題。

$query = "SELECT qid, qtitle FROM questions where qid = $qid"; 
$result = mysql_query($query) or die("ERROR: $query.".mysql_error()); 
// if records are present 
if (mysql_num_rows($result) > 0) { 
$row = mysql_fetch_object($result); 

// get question ID and title 
$qid = $row->qid; 
    echo '<div id=ques>'; 
echo '<h2>'.$row->qtitle .'</h2>'; 
    echo '</div>'; 

有人可以幫我循環和構造這種類型的查詢嗎?

我不想爲問題製作單獨的頁面。

回答

1

您可以將問題編號存儲在論壇的隱藏字段中。

if (isset($_POST["qnum"])) { 
    $questionNum = (integer) $_POST["qnum"]; 
} else { 
    $questionNum = 0; 
} 

$query = "SELECT qid, qtitle FROM questions where qid = $qid"; 
$result = mysql_query($query) or die("ERROR: $query.".mysql_error()); 
// if records are present 
if (mysql_num_rows($result) > $questionNum) { 
    for ($_i = 0; $_i < $questionNum; $_i += 1) 
     $row = mysql_fetch_object($result); 

    // get question ID and title 
    $qid = $row->qid; 
    echo '<input type="hidden" value="$qnum" />'; 
    echo '<div id=ques>'; 
    echo '<h2>'.$row->qtitle .'</h2>'; 
    echo '</div>'; 
} 

這是假設你在HTML表單。如果沒有,您可以將它們存儲在$ _SESSION變量中。

0

我會這樣做的方式是發佈下一個問題ID作爲您的窗體上的隱藏字段(我假設你有一個窗體供用戶輸入他們的答案?)。

第一次加載頁面時,你不會有問題ID,所以你只需抓住第一個問題。然後在同一頁面中,您將編寫一個查詢以獲取下一個問題ID。你會把它放在你的隱藏領域:

<input type="hidden" name="questionID" value="<?php echo $nextID ?>"> 

當頁面重新提交時,你有一個$ _POST ['questionID']; 變量,您可以使用它來生成下一個問題。

0

可能最簡單的方法來做,因爲你提到你不想使用多個頁面,可能會列出頁面上的所有問題,但隱藏除第一個以外的所有問題。然後,當用戶點擊「下一個」時,它隱藏第一個,並顯示第二個,依此類推。

$query = "SELECT qid, qtitle FROM questions ORDER BY qid ASC"; 
$result = mysql_query($query) or die("Error: $query.".mysql_error()); 

while ($row = mysql_fetch_object($result)) { 
    echo "<div class='question' id='$row->qid'><h2>$row->qtitle</h2></div>"; 
} 

echo "<button type='button' id='button'>Next</button>"; 

然後你就可以使用jQuery寫一些像這樣的代碼:

$(function() { 
    $current_question = 1; 
    $(".question").each (function() {$(this).hide();}) 
    $("#"+current_question).show(); 

    $("#button").click(function() { 
     $("#"+current_question).hide(); 
     current_question++; 
     $("#"+current_question).show(): 
    }) 
)}