如何在SQL二进制树中选择正确的节点?

时间:2014-04-27 10:51:17

标签: php sql

我正在构建一个带有20个问题风格游戏的简单网页。提出第一个问题,用户回答是或否回答下一个问题。我不确定如何使用我的查询指向下一个所需节点。

我有用于选择答案和提交按钮的单选按钮。我认为我需要用$_GET的单选按钮交出一些东西,但我真的很挣扎。我假设我需要一种方法来了解用户在哪个节点上找到正确的答案节点。

<form action="play.php" method="GET">
    <input type="submit" name="start" value="start game">
</form>
<?php
$query="SELECT `message`, `parentID`,`answerYesID`, `answerNoID`, `nodeID` FROM `creature`";
$where="";
$current=1;
function output($query, $where, $dbconn) {
    $result=mysqli_query($dbconn, $query.$where);
    while($row=mysqli_fetch_assoc($result)) {
        echo("<tr><td>{$row['message']}</td></tr><br>");
        echo "</table>";
    }
}

echo '<form action="play.php" method="GET">
        <input type="radio" name="answer" value ="`answerYesID`">yes
        <input type="radio" name="answer" value="`answerNoID`">no
        <input type="submit" name="submit" value="submit">
    </form>';
if(isset($_GET['start'])) {
    $where="WHERE `parentID` is NULL";
    output($query, $where, $dbconn);
}
if(isset($_GET['submit']) && $_GET['answer'] == "answerYesID") {
    $where="WHERE `nodeID` = ".$_GET['answer'];
    output($query, $where, $dbconn);
}
?>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

您可以为每个问题提供问题ID,并根据此问题ID获取数据
将ID列设为 auto_increment
使用 GET 方法获取ID,而下一个按钮只增加一个

$next=$_GET['id']+1;

并确保此数字不超过20(问题数量)

$next%=20;

现在for的动作属性将是

action="play.php?id=<?php echo $next;?>"