ブログシステムの構築(4)

編集画面を作る

  • 記事を投稿後に編集したい場合に使用する画面です
「edit.php」を作成
  • 「admin」フォルダーに「edit.php」を作成します
  • フォームは、「input.php」と同じ内容です


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>記事編集画面</title>
<link href="../css/base.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<h1>Blogシステム管理画面</h1>
<h2>記事編集画面</h2>
<p><a href="index.php">一覧画面にもどる</a></p>
<p>記事の内容を編集して、[更新]ボタンをクリックしてください。</p>
<form action="" id="formMain" name="formMain" method="POST">
<p class="formtitle">タイトル</p>
<p>
<input name="subject" type="text" id="subject" value="" size="50" maxlength="255" />
</p>
<p class="formtitle">内容</p>
<p>
<textarea name="digest" cols="50" rows="5" id="digest"></textarea>
</p>
<p class="formtitle">続き</p>
<p>
<textarea name="document" cols="50" rows="20" id="document"></textarea>
</p>
<p>
<input type="submit" name="Submit" value="更新" />
</p>
</form>
</body>
</html>

レコードセットを作成

  • データを編集する場合、編集対象のデータを取り出すためのレコードセットをつくる必要があります。


  • レコードセット名:entry_edit
  • 接続:MyBlogDatabase
  • テーブル:entry_tabale


フィルター

  • フィルター:entry_id
  • URLパラメータ:entry_id


「テスト」

  • テスト値を入力


※指定した「ID番号」が表示されます。文字化けは問題ありません。

各テキストフィールドをレコードセットと関連づける



非表示フィールドの作成
  • データを更新するためには、そのデータを管理するための「ID」もフォームの中に含める必要があります。
  • 「更新ボタン」横に「非表示フィールド」を挿入します





<?php require_once('../Connections/MyBlogDatabase.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_entry_edit = "-1";
if (isset($_GET['entry_id'])) {
  $colname_entry_edit = $_GET['entry_id'];
}
mysql_select_db($database_MyBlogDatabase, $MyBlogDatabase);
$query_entry_edit = sprintf("SELECT * FROM entry_table WHERE entry_id = %s", GetSQLValueString($colname_entry_edit, "int"));
$entry_edit = mysql_query($query_entry_edit, $MyBlogDatabase) or die(mysql_error());
$row_entry_edit = mysql_fetch_assoc($entry_edit);
$totalRows_entry_edit = mysql_num_rows($entry_edit);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>記事編集画面</title>
<link href="../css/base.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<h1>Blogシステム管理画面</h1>
<h2>記事編集画面</h2>
<p><a href="index.php">一覧画面にもどる</a></p>
<p>記事の内容を編集して、[更新]ボタンをクリックしてください。</p>
<form action="" id="formMain" name="formMain" method="POST">
<p class="formtitle">タイトル</p>
<p>
<input name="subject" type="text" id="subject" value="<?php echo $row_entry_edit['subject']; ?>" size="50" maxlength="255" />
</p>
<p class="formtitle">内容</p>
<p>
<textarea name="digest" cols="50" rows="5" id="digest"><?php echo $row_entry_edit['digest']; ?></textarea>
</p>
<p class="formtitle">続き</p>
<p>
<textarea name="document" cols="50" rows="20" id="document"><?php echo $row_entry_edit['document']; ?></textarea>
</p>
<p>
<input type="submit" name="Submit" value="更新" />
<input name="entry_id" type="hidden" id="entry_id" value="<?php echo $row_entry_edit['entry_id']; ?>" />
</p>
</form>
</body>
</html>
<?php
mysql_free_result($entry_edit);
?>

編集画面のプレビュー

  • フィルターのテスト時のパラメータの値「4」を呼び出します


http://localhost/blog/admin/edit.php?entry_id=4