2012-02-22 28 views
0

PHPプロジェクトでは、ページロード時にデータベースからデータを取得し、ユーザーがデータを変更できるようにするページを作成しています&更新。データを表示するには、input textoptionのコントロールを使用する必要があります。フォームデータを編集するには、ほとんどの場合POSTリクエストが必要です。データベースからデータをロードし、データをPOSTの間に保持するには、この方法を使用します。データベースからデータベースからデータをロードし、ポストバック間にデータを保持

データのロード

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

INPUTテキスト

<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ループのローカルスコープ変数だけです。ループの実行が終了すると、そのループは消えます。

このようなことができます。 foreach文のオプションの唯一の違いは、選択した属性が適用されるかどうかではありませんので

if (isset($_POST['txtName'])) 
{ 
    $name = $_POST['txtName']; 
} 
else 
{ 
    $name = ''; 
} 

<input type="text" name="txtName" value="<?php echo $name; ?>" /> 

次にそれらの両方を短縮することができます。また、迅速な答えはたとえば上記の例のための最も簡単な作業ユースケースを、提供してください取得する

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>'; 
} 

はどこにも定義されていないと$ movieyearのような他の人にも定義されていない$ _POST変数があります。

+0

'$ year'の入力ミスが修正されました。答えをありがとう... – Nalaka526

関連する問題