mysqlでテーブル間の情報参照の上、リンクを表示する
会員制掲示板をphp+mysqlで作ってます。
ユーザーごとに投稿が表示されるのですが、 自分の投稿以外は「投稿編集」「投稿削除」できないようにしたいです。 (※「投稿編集」「投稿削除」のリンクを表示させない)
例:testuserでログインしたらtestuser以外のユーザーの投稿は 「投稿編集」「投稿削除」のリンクを表示させない
【posts】テーブルのuser_idは【users】テーブルのidの値が入るようになってます。 その値同士が同じであれば「投稿編集」「投稿削除」のリンクを表示するという構成です。
実装はしたものの、正常に動作しません。 どこが間違っているのかご教示願います。
テーブル情報はこんな感じ。
【users】テーブル
create table users (
id int primary key auto_increment,
name varchar(255),
email varchar(255),
created_at datetime,
password varchar(255)
);
【posts】テーブル
create table posts (
id int primary key auto_increment,
user_id int,
name varchar(255),
title varchar(255),
content text,
created_at datetime,
updated_at datetime
);
サンプルコードは以下です。
<?php
session_start();
require_once('config.php');
require_once('functions.php');
if (empty($_SESSION['id'])) {
header('Location: login.php');
exit;
}
//var_dump($_SESSION['id']);
//var_dump($_SESSION['name']);
$dbh = connectDatabase();
$sql = "select * from posts";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$posts = $stmt->fetchAll(PDO::FETCH_ASSOC);
//var_dump($posts);
$dbh = connectDatabase();
$sql = "select * from users";
$stmt = $dbh->prepare($sql);
$stmt->execute();
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>ELITES Blog</title>
<link type="text/css" rel="stylesheet" href="reset.css">
<link type="text/css" rel="stylesheet" href="style.css">
</head>
<body>
<div id="wrapper">
<nav>
<ul>
<li class="on"><a href="index.php">ホーム</a></li>
<li class="on"><a href="list.php">日記一覧</a></li>
<li class="on"><a href="add.php">日記追加</a></li>
<li class="on"><a href="logout.php">ログアウト</a></li>
</ul>
</nav>
<h1>ELITES Blog</h1>
<h2>ELITES 公式開発ブログ</h2>
<h3>投稿されたブログ一覧</h3>
<?php if (count($posts)) : ?>
<?php foreach($posts as $post) : ?>
<ul>
<li class="link"><a href="detail.php?id=<?php echo h($post['id'])?>"><?php echo h($post['title'])?>(作成日:<?php echo h($post['updated_at'])?>)</a>
<?php if (h($users['id']) == h($post['user_id'])) : ?>
|[<a href="edit.php?id=<?php echo h($post['id'])?>">編集</a>]|[<a href="delete.php?id=<?php echo h($post['id'])?>">削除</a>]
<?php endif ?>
</li>
</ul>
<?php endforeach ?>
<?php else : ?>
投稿された日記はありません。
<?php endif ?>
<footer>
<p><a href="http://nowall.co.jp">株式会社 NOWALL</a></p>
<small>2015 NOWALL,Inc. All Right Reserved.</small>
</footer>
</div>
</body>
</html>