0

问题:我如何获得一个 PHP/HTML 表单来填写以前提交的在 mysql 数据库中找到的用户数据?

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

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

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

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

  • 现在,我有一个:$_REQUEST['Character'](Character 是表单的名称),它允许所有输入的数据在提交后出现在相应的框中,以防出现错误等(除了下拉菜单停留在所选项目上,我现在正在阅读)。

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

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

我认为大家不需要任何代码来查看,但如果需要我可以发布一些代码,其中有很多

4

1 回答 1

0

让我们举一个简单的例子。假设我们有一个 table ,Characters带有 fieldsid和。nameage

为该表提供编辑表单的一种更简洁的方法(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 为您执行此操作;谷歌搜索“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' 值放入适当的元素中。

于 2013-04-24T20:09:10.963 回答