Php 更新记录的流程表
我构建了一个表单,它是一个字段表,表示mysql数据库中的多条记录。该表是基于一些关系表动态生成的: 我想创建一个保存按钮,如果在一次单击中对给定记录的任何字段进行了更改,该按钮将更新表 我的问题是,如何在不创建围绕每个表行的单独表单标记的情况下做到这一点?最好的方法是什么?是否可以只使用html和php,还是需要javascript 我希望避免插入带有编辑按钮的附加列 以下是生成表的代码I:Php 更新记录的流程表,php,mysql,sql,html,forms,Php,Mysql,Sql,Html,Forms,我构建了一个表单,它是一个字段表,表示mysql数据库中的多条记录。该表是基于一些关系表动态生成的: 我想创建一个保存按钮,如果在一次单击中对给定记录的任何字段进行了更改,该按钮将更新表 我的问题是,如何在不创建围绕每个表行的单独表单标记的情况下做到这一点?最好的方法是什么?是否可以只使用html和php,还是需要javascript 我希望避免插入带有编辑按钮的附加列 以下是生成表的代码I: function subjectResourcesForm($connection, $subjec
function subjectResourcesForm($connection, $subjectId) {
echo "<h2>ONLINE RESOURCES</h2>";
echo "<div id='subject_resources_" . $section_row[$ID] . "'>\n";
$resource_query = selectResourcesBySubject($subjectId);
$resource_result = mysqli_query($connection, $resource_query);
if ( mysqli_num_rows($resource_result) != 0 ) {
echo "<table>";
echo "<tr>";
echo "<td>Position</td>";
echo "<td>Label</td>";
echo "<td>Link</td>";
echo "<td>Visibility</td>";
echo "</tr>";
while($resource_row = mysqli_fetch_assoc($resource_result)) {
echo "<tr>";
echo "<td><input type=\"text\" " .
"name=\"resourceItemPosition_" . $resource_row['id'] .
"\" value=\"" . $resource_row['position'] . "\" />";
echo "</td>";
echo "<td><input type=\"text\" " .
"name=\"resourceItemTitle_" . $resource_row['id'] .
"\" value=\"" . $resource_row['resourceTitle'] . "\" />";
echo "<td><input type=\"text\" " .
"name=\"resourceItemLink_" . $resource_row['id'] .
"\" value=\"" . $resource_row['link'] . "\" />";
echo "<td><select name=\"resourceItemDisplay_" . $resource_row['id'] . "\">";
if ( $resource_row['display'] == $TRUE ) {
echo "<option value=\"1\" selected>Visible</option>";
echo "<option value=\"0\">Hidden</option>";
} else {
echo "<option value=\"1\">Visible</option>";
echo "<option value=\"0\" selected>Hidden</option>";
}
echo "</select></td>";
echo "</tr>";
}
echo "</ul>";
} else {
echo "No Resources Found!";
}
// Save Button
echo "<tr>" .
"<td colspan=\"2\">" .
"<button type=\"button\">Save Changes</button>" .
"</td>" .
"</tr>";
// Insert Button
echo "<tr>" .
"<td colspan=\"2\">" .
"<button type=\"button\">Add Item</button>" .
"</td>" .
"</tr>";
echo "</table>";
echo "</div><!-- End of subject_resources_" . $section_row[$ID] . "-->\n";
// Free Result
mysqli_free_result($resource_result);
}
我不知道在不使用JavaScript的情况下如何做到这一点,但这里有一个用JavaScript实现这一点的方法 首先,在每行中添加一个隐藏字段,用于跟踪行是否已更新:
echo '<input type="hidden" name="resourceItemUpdated_' . $resource_row['id'] . '" value="0" />';
echo';
然后,使用onchange
事件,在修改行上的任何其他字段时,将隐藏字段的值设置为1
最后,在PHP中,循环遍历行,仅当隐藏字段的值为1时才更新数据库
此解决方案通过将所有数据发送到服务器浪费了一点带宽,但它完成了任务
echo '<input type="hidden" name="resourceItemUpdated_' . $resource_row['id'] . '" value="0" />';