2012-02-22 74 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