从数据库加载数据&在回发之间保留数据

时间:2012-02-22 18:47:21

标签: php

在PHP项目中,我正在创建页面a,它在页面加载时从数据库中检索数据,然后允许用户更改数据和数据。更新。我必须使用input textoption控件来显示数据。编辑表单数据可能涉及很少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}

1 个答案:

答案 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也未定义。