更改给定玩家 ID 的数据库条目来自 Javascript

Changing database entry given player ID from Javascript

我正在编写一个具有三个不同级别的 javascript 游戏,可以从 index.html 页面中的 html 表单访问。我还有一个存储在数据库中的玩家列表,我需要:

  1. 阻止玩家访问他们已经完成的关卡,并且
  2. 阻止玩家开始新关卡直到所有其他玩家都完成当前关卡

我想实现这个的方法是创建两个名为“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”列中的每个条目都更改为 1 时,我将禁用 html 表单中的级别 1 选项并“解锁”级别 2 选项。第二层和第三层也是如此。

但是,我不确定如何使用 javascript 和 php 来做到这一点。我在 javascript 中有一个计数器记录玩家的移动。当移动归零时,关卡结束并显示最终分数:

if (moves==0){
    document.getElementById('endgame_screen').style.display = "flex";
    document.getElementById('score').innerHTML = points
}

我还在同一 javascript 文件中存储了级别和 ID 表单选项:

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'");
?>

但这当然是最低限度,从这里你可以玩你的变量,你可以处理 return 值,等等。还要注意我们的 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