在PHP项目中,我正在创建页面a,它在页面加载时从数据库中检索数据,然后允许用户更改数据和数据。更新。我必须使用input text
和option
控件来显示数据。编辑表单数据可能涉及很少POST
个请求。要从数据库加载数据并在POST
之间保留数据,我使用这种方法。
从数据库加载数据
$oClass = new DataClass();
$oClass ->GetRecordById($_REQUEST['id']);
$dataName = $oClass ->Name;
$dataYear = $oClass ->Year;
INPUT TEXTs
<input type="text" name="txtName" value="<?php echo isset($_POST['txtName']) ? $_POST['txtName'] : $dataName ?>" >
选项
$arrYears = GetYears();
foreach ($arrYears as $year) {
if (isset($_POST['ddlYear'])) {
if ($_POST['ddlYear'] == $year) {
echo '<option value="' . $year . '" selected="selected">' . $year . '</option>';
} else {
echo '<option value="' . $year . '">' . $year . '</option>';
}
} else {
if ($dataYear == $year) {
echo '<option value="' . $year . '" selected="selected">' . $year . '</option>';
} else {
echo '<option value="' . $year . '">' . $year . '</option>';
}
}
}
在帖子之间保留数据的方法是否比使用
更好if (isset($_POST['NAME']))
{$_POST['NAME']}
else
{$name}
答案 0 :(得分:0)
您是否有理由保留信息?如果用户提交表单,它将更新信息,因此需要再次提取,以便下一个人进入并更新或阅读。
上面虽然你指定$ year = $ oClass - &gt;年;但它没有被引用到任何地方。 foreach循环中的$ year是仅用于该foreach循环的局部范围变量,在该循环完成执行后它消失。
你可以做这样的事情。if (isset($_POST['txtName']))
{
$name = $_POST['txtName'];
}
else
{
$name = '';
}
<input type="text" name="txtName" value="<?php echo $name; ?>" />
由于foreach循环中选项之间的唯一区别在于是否应用了所选属性,因此可以将它们缩短为以下内容。
if (isset($_POST['ddlYear'])) {
echo '<option value="' . $year . ($_POST['ddlYear'] == $year) ? '" selected="selected"' : '' . '>' . $year . '</option>';
}
else {
echo '<option value="' . $year . ($movieyear == $year) ? '" selected="selected"' : '' . '>' . $year . '</option>';
}
另外,为了获得更快的答案,请提供最简单的工作用例,例如上面的示例包含$ _POST变量,这些变量未在任何地方定义,而其他像$ movieyear也未定义。