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

时间:2013-04-24 16:27:52

标签: php html mysql database forms

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

好的,我已经浏览互联网几个星期了,试图找到一个可以帮助我的教程或一些线程。

我正在为桌面RPG游戏创建一个Web表单。这是一个简单的表单,主要是字段和下拉菜单,包括“角色名称”,“年龄”,“性别”等。

  • 我已将它保存到将保存到mysql数据库的位置。

  • 我也有它,因此它们是将数据链接到的外键 用户已登录。

  • 现在,我有一个:$ _REQUEST ['Character'](字符是该字符的名称 形式)允许所有输入的数据在相应的 提交后的盒子,如果有错误或类似情况(使用 停留在所选项目上的下拉菜单除外 我现在正在读书。

但现在我想要它,以便如果用户已经创建了一个角色,当他们重新登录时,所有这些信息将被拉回并填入相应字段的表单中。

这样做的最佳方法是什么?或者任何人都可以指出我正确的方向另一个回答的话题,视频,你有什么,这会更好地向我解释这个?

我认为你们所有人都不需要任何代码,但是如果需要我可以发布一些代码,只有很多代码

1 个答案:

答案 0 :(得分:0)

我们举一个简单的例子。假设我们有一个表Characters,其中包含字段idnameage

为此表提供编辑表单的一种更简洁的方法(IMO)是让表单假设有一个包含这些字段的数组(让我们称之为$char)。主代码将从任何地方获取此数组,无论是来自表单字段还是来自数据库。

(注意,很多东西都被省略了。我不知道或关心你正在使用什么数据库,或者你如何进行验证;重要的部分是表单处理,无论数据库如何都可以。)

<form method="post">
 <input type="hidden" name="Character[id]" value="<?= intval($char['id']) ?>">
 <input name="Character[name]" value="<?= htmlentities($char['name']) ?>">
 <input name="Character[age]" value="<?= htmlentities($char['age']) ?>">
 <input type="submit">
</form>

提交表单时,$_POST['Character']将是一个数组,并包含表单提交的有关该字符的所有信息。

让我们有一个saveCharacter来获取该信息并将其保存为一行...
(伪代码行以...开头;片段看起来...like this...

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;
}

...和loadCharacter选择该行,并返回其内容与您在表单中的名称相同。 (保持表单和数据库字段名称一致在这里有很大帮助。如果两者使用相同的名称,您可以直接返回该行。)

function loadCharacter($id) {
    ... $result = result from: SELECT id, name, age FROM Characters WHERE id = ?
    ... return first (should be only) row of $result
}

(如果名称不同,则需要转换。您通常可以让DBMS为您执行此操作; google搜索“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的值放在适当的元素中。