我正在写一个javascript游戏,有三个不同的级别,可以从index.html页面的html形式访问。我也有一个列表的球员存储在数据库中,我需要:
- 阻止玩家进入他们已经完成的关卡,并且
- 阻止玩家开始一个新的关卡直到所有其他玩家完成当前关卡
我认为实现这一点的方法是创建两个名为"level_1"的数据库列。和";level_2"在关卡开始时设置为0,并在关卡完成后更改为1,如下所示:
*beginning of game
player_ID level_1 level_2
1 0 0
2 0 0
3 0 0
*level one is completed
player_ID level_1 level_2
1 1 0
2 1 0
3 1 0
*level two is completed
player_ID level_1 level_2
1 1 1
2 1 1
3 1 1
当列"level_1"我将禁用html表单中的1级选项和"解锁"。第2级选项。这同样适用于第二层和第三层。
然而,我不确定如何使用javascript和php做到这一点。我有一个记录玩家移动的javascript计数器。当移动到零时,关卡结束,并显示最终分数:
if (moves==0){
document.getElementById('endgame_screen').style.display = "flex";
document.getElementById('score').innerHTML = points
}
我还将关卡和id表单选项存储在同一个javascript文件中:
var level = sessionStorage.getItem('level');
var id = sessionStorage.getItem('id');
我一直在努力做的是从游戏javascript文件中打开php文件,并根据级别和id更新数据库条目。我知道最好的方法是像这样获取php文件:
fetch("levels.php", {method="POST"}
,但后来我卡住了,因为我不是很熟悉SQL和PHP语法,我不知道如何通过PHP发送级别和id数据,也不知道如何更新数据库。我也不知道如何禁用另一个html页面上的表单选择(我的猜测是触发另一个PHP文件时,表单打开检查是否有任何零在两个数据库列,并相应地更新表单)。
任何帮助都是感激的!
你必须用PHP编写至少一个最小的脚本来与数据库交互。
最小值为:
<?php
$con = mysqli_connect("localhost","user","password","dbname");
mysqli_query($con, "UPDATE table SET level=1 WHERE user='johndoe'");
?>
但这当然是最小的,从这里你可以玩你的变量,你可以处理返回值,等等。还要注意我们的SQL注入。
你必须学习一点MySQL才能做到这一点。这里有几个简单的例子可以帮助你:
从数据库中检索信息:
SELECT * FROM table_name;
https://www.w3schools.com/sql/sql_select.asp
在数据库中创建一个新记录:
INSERT INTO table_name VALUES (value1, value2, value3, ...);
https://www.w3schools.com/sql/sql_insert.asp
更新数据库中的记录:
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;
https://www.w3schools.com/sql/sql_update.asp
删除数据库中的一条记录:
DELETE FROM table_name WHERE condition;
https://www.w3schools.com/sql/sql_delete.asp