2012-02-22 72 views
0

在PHP项目中,我创建的页面a从页面加载中的数据库检索数据,然后允许用户更改数据&更新。我必须使用input textoption控件来显示数据。编辑表单数据可能会涉及很少的POST请求。要从数据库加载数据并在POST之间保留数据,我使用这种方法。从数据库从数据库加载数据并在回发之间保留数据

加载数据

$oClass = new DataClass(); 
$oClass ->GetRecordById($_REQUEST['id']); 
$dataName = $oClass ->Name; 
$dataYear = $oClass ->Year; 

输入文字

<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

是否有一个原因,你需要保留的信息?如果用户提交表单,它将更新信息,因此需要再次提取下一个进入和更新或阅读的人员。

上面虽然分配了$ year = $ oClass - > Year;但它没有被引用到任何地方。 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还没有定义。

+0

“$ year”中存在拼写错误,修正了它。感谢你的回答... – Nalaka526 2012-02-23 02:45:19