Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用特定于用户的mysql保存的数据填写PHP/HTML表单的最佳方法?_Php_Html_Mysql_Database_Forms - Fatal编程技术网

用特定于用户的mysql保存的数据填写PHP/HTML表单的最佳方法?

用特定于用户的mysql保存的数据填写PHP/HTML表单的最佳方法?,php,html,mysql,database,forms,Php,Html,Mysql,Database,Forms,问题:如何获取PHP/HTML表单,用mysql数据库中以前提交的用户数据进行填充 好的,我已经在网上浏览了几个星期了,现在我想找一个教程或者一些线索来帮助我 我正在为桌面RPG游戏创建一个web表单。它是一个简单的表单,主要包含字段和下拉菜单,其中包含“角色名称”、“年龄”、“性别”等内容 我已经将它保存到mysql数据库中 我也有它,所以他们是一个外键链接数据到 用户已登录 现在,我有一个:$\u请求['Character'](Character是 表单),允许所有输入的数据位于相应的 提

问题:如何获取PHP/HTML表单,用mysql数据库中以前提交的用户数据进行填充

好的,我已经在网上浏览了几个星期了,现在我想找一个教程或者一些线索来帮助我

我正在为桌面RPG游戏创建一个web表单。它是一个简单的表单,主要包含字段和下拉菜单,其中包含“角色名称”、“年龄”、“性别”等内容

  • 我已经将它保存到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);
}