用特定于用户的mysql保存的数据填写PHP/HTML表单的最佳方法?
问题:如何获取PHP/HTML表单,用mysql数据库中以前提交的用户数据进行填充 好的,我已经在网上浏览了几个星期了,现在我想找一个教程或者一些线索来帮助我 我正在为桌面RPG游戏创建一个web表单。它是一个简单的表单,主要包含字段和下拉菜单,其中包含“角色名称”、“年龄”、“性别”等内容用特定于用户的mysql保存的数据填写PHP/HTML表单的最佳方法?,php,html,mysql,database,forms,Php,Html,Mysql,Database,Forms,问题:如何获取PHP/HTML表单,用mysql数据库中以前提交的用户数据进行填充 好的,我已经在网上浏览了几个星期了,现在我想找一个教程或者一些线索来帮助我 我正在为桌面RPG游戏创建一个web表单。它是一个简单的表单,主要包含字段和下拉菜单,其中包含“角色名称”、“年龄”、“性别”等内容 我已经将它保存到mysql数据库中 我也有它,所以他们是一个外键链接数据到 用户已登录 现在,我有一个:$\u请求['Character'](Character是 表单),允许所有输入的数据位于相应的 提
- 我已经将它保存到mysql数据库中
- 我也有它,所以他们是一个外键链接数据到 用户已登录
- 现在,我有一个:$\u请求['Character'](Character是 表单),允许所有输入的数据位于相应的 提交后出现错误或类似情况时的方框(带有 保留在所选项目上的下拉菜单除外 我现在正在读这本书)
我不认为需要任何代码供大家查看,但如果需要,我可以发布一些代码,其中有很多代码,让我们举一个简单的例子。假设我们有一个表
Characters
,其中包含id
、name
和age
字段
为该表提供编辑表单的一种更简洁的方法(IMO)是让表单假设有一个数组(我们称之为$char
)包含这些字段。主代码将从任何地方获取此数组,无论是从表单字段还是从数据库
(注意,省略了很多内容。我不知道或不关心您使用的是什么数据库,也不关心您如何进行验证;重要的部分是表单处理,不管数据库是什么,它都能工作。)
…和一个loadCharacter
来选择该行,并返回与表单中相同名称的内容。(保持表单和数据库字段名称的一致性在这里有很大帮助。如果两者使用相同的名称,您可以直接返回行。)
(如果名称不同,则需要进行转换。通常可以让DBMS为您进行转换;有关详细信息,请在谷歌上搜索“SQL列别名”。)
以及启动这一切的代码
if (isset($_POST['Character'])) {
$char = saveCharacter($_POST['Character']);
}
elseif ( ...the user already has a character id... ) {
$char = loadCharacter(...character id...);
}
else {
// first time on the page, and there's no saved character
// give $char the right field names, to prevent notices
$char = array('id' => null, 'name' => null, 'age' => null);
}
当您包含上面的表单时,它将把
$char
的值放入适当的元素中。获取从数据库返回的数组,并将其粘贴到$\u REQUEST['Character']
。。。?这是最简单的方法,如果您的表单还记得到目前为止发布的值……只需假设该行是一个发布的表单。(这假设您在进入数据库的过程中没有对数据进行太多的篡改。如果您这样做,您将不得不将其推回表单post form。)嗯,我没有考虑尝试填充数组。我看到的所有关于数组的“教程”通常都是让它获取数组,然后只打印出值,而不是填写表单/表格。我要试一试。字段的值就是每个字段的名称,就像字符名是“CharacterName”,我需要更多的值来填充所有内容吗?如果您将$\u REQUEST['Character']['CharacterName']
放入名为CharacterName
的字段中,可能就这么简单。如果字段名不同,可以使用列别名使列名与表单字段名匹配。但我通常更喜欢让表单字段名与列名匹配,这使得抓取一个DB行并将其用作表单数据集几乎很简单。我试着这样写:value=,在字符名的标记中,但它没有做任何事情。我想我只是在这方面比我应该做的要复杂得多。
function saveCharacter($char) {
if (empty($char['id'])):
... do insert
... $char['id'] = last insert ID
else:
... do update
endif;
// return the saved char; inserting would have added an ID
return $char;
}
function loadCharacter($id) {
... $result = result from: SELECT id, name, age FROM Characters WHERE id = ?
... return first (should be only) row of $result
}
if (isset($_POST['Character'])) {
$char = saveCharacter($_POST['Character']);
}
elseif ( ...the user already has a character id... ) {
$char = loadCharacter(...character id...);
}
else {
// first time on the page, and there's no saved character
// give $char the right field names, to prevent notices
$char = array('id' => null, 'name' => null, 'age' => null);
}