今まではユーザ情報を仮置きを表示していましたが、 今回はこれを現在ログインしているユーザごとに変えるような処理をしていきましょう!
現在、ログインしているユーザの情報を表示する。
- functions.phpにgetUserData関数を確認する。
- index.phpでユーザの情報を表示する。
...
...
function getTimeline($pdo){
$sql = 'SELECT * FROM posts ORDER BY `created_at` DESC';
$statement = $pdo->prepare($sql);
$statement->execute();
if ($rows = $statement->fetchAll(PDO::FETCH_ASSOC)) {
return $rows;
} else {
return exit;
}
}
//ここからなければ追記
function getUserData(PDO $pdo, $id)
{
$sql = 'SELECT * FROM users WHERE id=:id';
$statement = $pdo->prepare($sql);
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
if ($row = $statement->fetch()) {
return $row;
} else {
throw new Exception('ユーザデータを取得できません');
}
}
//ここまで
...
...
なければ、追加しておきましょう。
以前にした、 投稿一覧の表示の作成 で記述したgetUserData関数です。
$sql = 'SELECT * FROM users WHERE id=:id';
$statement = $pdo->prepare($sql);
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
の部分でデータベースからデータを取得しています。
http://qiita.com/tabo_purify/items/2575a58c54e43cd59630
こちらのサイトである程度わかりやすく記述されていますので、見てみてください。
では、index.phpでユーザ情報を表示してみましょう。
<?php
...
...
if (isset($_GET['delete_post_id'])) {
$delete_post_id = $_GET['delete_post_id'];
$delete_post_data = getPostData($db, $delete_post_id);
if($user_id == $delete_post_data['user_id']){
deletePost($db, $delete_post_id);
header('Location: '.$_SERVER['SCRIPT_NAME']);
exit;
}
}
//ここから追記
$user_data = getUserData($db, $user_id);
$screen_name = $user_data["screen_name"];
$user_name = $user_data["user_name"];
$comment = $user_data["comment"];
//ここまで追記
...
...
?>
...
...
<!-- ここから編集 -->
<!-- ユーザ情報表示領域 -->
<div class="col-sm-4 col-sm-pull-8">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">ユーザ情報</h3>
</div>
<div class="panel-body">
<h4 class="leader">
<?php print $user_name ?>
</h4>
<p class="small text-muted">@
<?php print $screen_name ?>
</p>
<p>
<?php print $comment ?>
</p>
</div>
</div>
</div>
<!-- ここまで -->
...
...
ユーザ情報の表示部分はすでにあるはずなので、 それを編集してください。
解説していきましょう。
<?php
...
...
$user_data = getUserData($db, $user_id);
$screen_name = $user_data["screen_name"];
$user_name = $user_data["user_name"];
$comment = $user_data["comment"];
...
...
?>
まず、HTML部分で使いやすい様にgetUserData
で得たuser情報をそれぞれ変数に代入しておきます。
データベースの情報は連想配列で取得しているので、$user_data[取得したい要素]
で取得できますね。
...
...
<!-- ユーザ情報表示領域 -->
<div class="col-sm-4 col-sm-pull-8">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">ユーザ情報</h3>
</div>
<div class="panel-body">
<h4 class="leader">
<?php print $user_name ?>
</h4>
<p class="small text-muted">@
<?php print $screen_name ?>
</p>
<p>
<?php print $comment ?>
</p>
</div>
</div>
</div>
...
...
先ほどphp上で変数に代入したので、
HTML部分でその変数を扱うには、
phpのコードを埋め込む必要がありますね。
<?php ?>
でphpのコードを埋め込みます。
今回はprint
を用いました。
if文などを用いてもし変数が代入されてなければ、
仮置きを表示するようになどしても良いでしょう。
お疲れ様です。