データベースからセレクトメニューを生成する

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>データベースからセレクトメニューを生成したい</title>
</head>
<body>
<form method="post" action="">
<?php
// データベース設定
$dbServer = 'localhost';
$dbUser   = 'user';
$dbPass   = 'password';
$dbName   = 'sample';

$flag = TRUE;
// MySQLデータベースに接続
if (!$link = mysql_connect($dbServer, $dbUser, $dbPass)) {
  $flag = FALSE;
}
// データベース選択
else if (!mysql_select_db($dbName, $link)) {
  $flag = FALSE;
}
// 文字エンコードの指定(PHP5以降かつMySQL 4.1以降)
else if (!mysql_set_charset('utf8', $link)) {
  $flag = FALSE;
}

if ($flag === TRUE) {
# SQL文を代入します。
  $sql = 'SELECT * FROM area';
# クエリを発行します。
  $query = mysql_query($sql, $link);

  echo '<select name="area">' . "\n";
# 実行結果を連想配列で取得し、while構文で処理します。
  while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
    echo '  <option value="' . h($row['id']) . '">' . h($row['area']) . '</option>' . "\n";
  }
  echo '</select>' . "\n";

  if (isset($_POST['area'])) {
    $id = $_POST['area'];
# 取得済みになったクエリの結果を元に戻します。
    mysql_data_seek($query, 0);
# 再度while構文で処理します。
    while ($row = mysql_fetch_array($query, MYSQL_ASSOC)) {
      if ($row['id'] == $id) {
        echo '選択した地域は: ' . h($row['area']);
      }
    }
  }
} else {
  echo 'データベースエラー';
}

function h($string) { // HTMLでのエスケープ処理をする関数
  return htmlspecialchars($string, ENT_QUOTES);
}
?>
<br />
<input type="submit" value="送信する" />
</form>
</body>
</html>