[英]How would I generate an HTML form based on table data from two different tables using PHP?
我正在嘗試編寫一個PHP腳本,該腳本將使用“ field_definitions”表作為輸入字段的源來創建HTML表單,並根據先前存儲的“ user_data”表中的結果設置每個字段的默認值。 (基於當前登錄的用戶……我具有身份驗證系統設置,並使用會話變量運行。)
我的桌子是這樣的...
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
連接表t1
和t2
。 N是NULL(不存在)記錄。 Ljn
是左聯接, Rjn
是右聯接, Ijn
是INNER JOIN(經常省略INNER關鍵字),而Fjn
是FULL JOIN
t1.x: 1 2 3 4 5 NN
t2.x: NNN 4 5 6 7
Ljn : ^_______^----
Rjn : -----^______^
Ijn : -----^__^----
Fjn : ^___________^
您可以通過where子句中的t1.x IS NULL
或t1.x IS NOT NULL
來檢查記錄是否不存在。
希望它會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.