更改给定玩家 ID 的数据库条目来自 Javascript
Changing database entry given player ID from Javascript
我正在编写一个具有三个不同级别的 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”列中的每个条目都更改为 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;
我正在编写一个具有三个不同级别的 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”列中的每个条目都更改为 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;