「PHPとMySQLを使いGETメソッドで受け取ったデータを取得&表示」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
前回記事[[PHPとMySQLでデータの取得]]からリンクで飛んできたページを作っていきたいと思います。6月4日記事
#contents
~
~
----
~
*GETメソッドの注意点
GETメソッドはqueryの内容がURLに表示されているため、適切に処理する必要があります。
*クエリ条件
idでかつ公開中(2)のデータの場合のみ表示させ、そうでない場合は、「この記事はありません。」的なエラー処理をしていきたいと思います。
すると
mysql> SELECT * FROM information WHERE id = '受け取ったID番号' AND status = '2';
というようなクエリになると思います。
*コード
受け取った値が数値のもののみを許可する必要があります。
fillter関数を使ってもよいですし、PDOのbindParamで、数値のチェックをしてもいいと思います。
関数の勉強もかねて両方行っていきましょうか?あまり意味ないとは思いますが・・・
~
&u(){ファイル名(information.php)}
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>更新情報</title>
</head>
<body>
<?php
$dsn = 'mysql:dbname=データベース名;host=localhost;port=3306';
$user = 'ユーザ名';
$password = 'ユーザパスワード';
try{
//成功時対応
$dbh = new PDO($dsn, $user, $password);
$id = $_GET['id'];
$filter_id = filter_var($id ,FILTER_SANITIZE_NUMBER_INT,FILTER_NULL_ON_FAILURE);
//echo $filter_id;
$stmt = $dbh -> prepare("SELECT * FROM information WHERE id = :id AND status = '2'");
$stmt->bindParam(':id', $filter_id, PDO::PARAM_INT);
$stmt->execute();//実行
$result = $stmt->fetch();
echo '<dl><dt>記事ID</dt><dd>';
echo htmlspecialchars($result['id']).'<br>';
echo '</dd><dt>日付</dt><dd>';
echo htmlspecialchars($result['info_date']).'<br>';
echo '</dd><dt>投稿種類</dt><dd>';
switch($result['type']){
case 1:
echo 'ニュース';
break;
case 2:
echo '更新情報';
break;
case 3:
echo '入荷情報';
break;
case 4:
echo 'その他';
break;
default :
echo 'その他';
}
echo '</dd><dt>タイトル</dt><dd>';
echo htmlspecialchars($result['title']).'<br>';
echo '</dd><dt>内容</dt><dd>';
echo nl2br(htmlspecialchars($result['info_text'])).'<br>';
echo '</dd><dt>URL</dt><dd>';
echo htmlspecialchars($result['url']).'<br>';
echo '</dd></dl>';
echo '<a href="index.php">ホームに戻る</a>';
}catch (PDOException $e){//失敗時対応
print('Connection failed:'.$e->getMessage());
die();
}
$dbh = null;
?>
</body>
</html>
前回記事[[PHPとMySQLでデータの取得]]からリンクで飛んできたページを作っていきたいと思います。6月4日記事
#contents
~
~
----
~
*GETメソッドの注意点
GETメソッドはqueryの内容がURLに表示されているため、適切に処理する必要があります。
*クエリ条件
idでかつ公開中(2)のデータの場合のみ表示させ、そうでない場合は、「この記事はありません。」的なエラー処理をしていきたいと思います。
すると
mysql> SELECT * FROM information WHERE id = '受け取ったID番号' AND status = '2';
というようなクエリになると思います。
*コード
受け取った値が数値のもののみを許可する必要があります。
fillter関数を使ってもよいですし、PDOのbindParamで、数値のチェックをしてもいいと思います。
関数の勉強もかねて両方行っていきましょうか?あまり意味ないとは思いますが・・・
~
&u(){ファイル名(information.php)}
<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>更新情報</title>
</head>
<body>
<?php
$dsn = 'mysql:dbname=データベース名;host=localhost;port=3306';
$user = 'ユーザ名';
$password = 'ユーザパスワード';
try{
//成功時対応
$dbh = new PDO($dsn, $user, $password);
$id = $_GET['id'];
$filter_id = filter_var($id ,FILTER_SANITIZE_NUMBER_INT,FILTER_NULL_ON_FAILURE);
//echo $filter_id;
$stmt = $dbh -> prepare("SELECT * FROM information WHERE id = :id AND status = '2'");
$stmt->bindParam(':id', $filter_id, PDO::PARAM_INT);
$stmt->execute();//実行
$result = $stmt->fetch();
echo '<dl><dt>記事ID</dt><dd>';
echo htmlspecialchars($result['id']).'<br>';
echo '</dd><dt>日付</dt><dd>';
echo htmlspecialchars($result['info_date']).'<br>';
echo '</dd><dt>投稿種類</dt><dd>';
switch($result['type']){
case 1:
echo 'ニュース';
break;
case 2:
echo '更新情報';
break;
case 3:
echo '入荷情報';
break;
case 4:
echo 'その他';
break;
default :
echo 'その他';
}
echo '</dd><dt>タイトル</dt><dd>';
echo htmlspecialchars($result['title']).'<br>';
echo '</dd><dt>内容</dt><dd>';
echo nl2br(htmlspecialchars($result['info_text'])).'<br>';
echo '</dd><dt>URL</dt><dd>';
echo htmlspecialchars($result['url']).'<br>';
echo '</dd></dl>';
echo '<a href="index.php">ホームに戻る</a>';
}catch (PDOException $e){//失敗時対応
print('Connection failed:'.$e->getMessage());
die();
}
$dbh = null;
?>
</body>
</html>
~
~
次ページは[[PHPとMySQLを使って更新情報の再編集ページを作る]]です。