gpt4 book ai didi

php - 我如何使用 PHP 根据来自两个不同表的表数据生成 HTML 表单?

转载 作者:行者123 更新时间:2023-11-29 00:47:55 24 4
gpt4 key购买 nike

我正在尝试编写一个 PHP 脚本,该脚本将使用“field_definitions”表作为输入字段的来源创建一个 HTML 表单,并根据先前存储的“user_data”表中的结果设置每个字段的默认值。 (基于当前登录的用户……我有一个身份验证系统设置并使用 session 变量运行。)

我的 table 是这样的...

users TABLE
user_id user_email user_firstname user_lastname user_password
1 johndoe@mail.com John Doe password

field_definitions TABLE
field_id field_type field_length field_name field_desc field_section
1 text 40 color What is your favorite color? 1

user_data TABLE
response_id user_id field_id user_response
1 1 1 Blue

我创建了一个代码块,它返回我的“field_definitions”表中的行并将它们存储在一个数组中。我可以使用 foreach 循环根据数组中的每一行生成表单,但我不知道如何从另一个表中提取第二组信息作为默认值。

$dbc = mysqli_connect(sqlhost, sqluser, sqlsecret, sqldb);

$field_definitions_query = "SELECT * FROM field_definitions WHERE field_section = '1'";

$field_definitions_data = mysqli_query($dbc, $field_definitions_query);

$field_definitions = array();

while ($row = mysqli_fetch_array($field_definitions_data)) {
array_push($field_definitions, $row);
}
echo '<form enctype="multipart/form-data" method="post" action="' . $_SERVER['PHP_SELF'] . '">';

foreach ($field_definitions as $row) {
echo '<label for="' . $row[field_name] . '">' . $row[field_desc] . ':</label>';
echo '<input type="' . $row[field_type] . '" id="' . $row[field_name] . '" name="' . $row[field_name]. '" value="temp" /><br />';
}

echo '<input type="submit" value="Save" name="submit" /></form>';

我是否需要创建另一个表数据的第二个数组,然后以某种方式合并这两个数组?

我的通用方法是否可行,或者是否有更好的方法?

我是 PHP 和一般编程的初学者,不想尝试和征服任何框架;为了学习,我正在尝试用我自己的代码实现这一目标。

最佳答案

考虑使用 SQL JOIN 构造。如果是 MySQL,它将是这样的:select t1.*, t2.user_response from field_definitions t1 left join user_data t2 using (field_id) where t2.user_id = %USER_ID% or t2.user_id is null。然后你可以逐行获取数据到单个数组/散列/任何东西。有关 JOIN 的更多详细信息,请参阅您的 SQL 手册。

简而言之。我们通过字段 x 连接表 t1t2。 N 是 NULL(不存在)记录。 Ljn 是 LEFT JOIN,Rjn 是 RIGHT JOIN,Ijn 是 INNER JOIN(INNER 关键字经常被省略)和 Fjn 是完全连接

t1.x: 1 2 3 4 5 N N

t2.x: N N N 4 5 6 7

Ljn : ^_______^----

Rjn : -----^______^

Ijn : -----^__^-----

Fjn : ^___________^

你可以通过where子句中的t1.x IS NULLt1.x IS NOT NULL检查记录是否不存在。

希望对您有所帮助。

关于php - 我如何使用 PHP 根据来自两个不同表的表数据生成 HTML 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9808639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com