我正在建立一个单一任务的游戏,用户对计算机问题回答是或否,计算机将猜测该动物。它使用自引用数据库作为后端,并在php中编码。
我认为最好的方法是创建一个名为$ currentnode的变量来跟踪游戏在当前问题方面的位置,并用它来决定下一个问题。
我试图在这上面使用一个switch语句,该语句应该由yes或no按钮触发。该开关应该使用currentnode并将其与case匹配并更新where子句并运行查询以选择来自数据库的正确问题。 我已经开始在yes按钮上使用Isset并为所有yes答案构建一个开关,但是当按下yes按钮时,我无法触发switch语句。
我的目标是按下是或否按下每个按钮,应输入一个switch语句,currrentnode与添加到查询中的相应where子句匹配并运行。
非常感谢任何帮助。
$query = "SELECT `message`, `nodeID` FROM `creature`";//basic query that will be used at all times
$where = "";//empty where clause, will be altered
$currentnode;//used to store current state
//function created to be re used after an answer is given
function output($query,$where,$dbconn){
$result = mysqli_query($dbconn, $query.$where);
while($row = mysqli_fetch_assoc($result)) {
echo "{$row['message']}
{$row['nodeID']}<br>";}
echo '<form action="play.php" method="GET">
<input type="submit" name="yes" value="yes">
<input type="submit" name="no" value="no">
<input type = "submit" name = "restart" value = "restart game">
</form>';}
?>
<form action="play.php" method="POST">
<input type="submit" name="start" value="Start Game">
</form>
<?php
$currentnode = '0';
if ( isset( $_POST['start'] ))
{
$currentnode = 1;
$where = "WHERE `nodeID` = '1'";
output($query,$where,$dbconn);
echo 'current node is '; echo $currentnode;
}
if (isset ($_GET['yes'])){
switch ($currentnode){
case 1: $where = "WHERE `nodeID` = '2'"; output($query,$where,$dbconn);
break;
case 2: $where = "WHERE `nodeID = '3'"; output($query,$where,$dbconn);
break;
}
}
?>
</body>
</html>