ではSELECT文を
$sql = "SELECT subject,sendtime,m_name FROM mails,members WHERE m_from=members.id AND m_to=:m_to ORDER BY sendtime DESC";
①外からやってきたものなので、m_to=$_SESSION[id]とかにはしない。
できるけどしない。プレースホルダを使いましょう。
②文字として宣言しているので""でSELECT文を囲いましょう。
逆に言えばprepare()のかっこのなかにだらだらと書いてもいいんだけど、
長いのでいったん文字として変数に格納している。
だから""で全体を囲う必要がある。
出力時にはループの必要あり
3項目を書き出す
件名/送信者名/日時
--->mypage.php
<?php
session_start();
if(empty($_SESSION["login"])){
header("Location: login.php");
exit();
}
require_once("config.php");
$sql = "SELECT subject,sendtime,m_name FROM mails,members WHERE m_from=members.id AND m_to=:m_to ORDER BY sendtime DESC";
$stmt=$pdo->prepare($sql);
$stmt->bindValue("m_to",$_SESSION["id"],PDO::PARAM_INT);
$stmt->execute();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>マイページ</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="container">
<h1><?php echo htmlspecialchars($_SESSION["m_name"],ENT_QUOTES); ?>の受信トレイ</h1>
<div id="m_list">
<table>
<tr>
<th>件名</th><th>送信者名</th><th>送信日時</th>
</tr>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC)): ?>
<tr>
<td><?php echo htmlspecialchars($row["subject"],ENT_QUOTES); ?></td>
<td><?php echo htmlspecialchars($row["m_name"],ENT_QUOTES); ?></td>
<td><?php echo $row["sendtime"]; ?></td>//これはサニタイズ不要なので
</tr>
<?php endwhile; ?>
</table>
</div>
</div>
<script src="js/script.js"></script>
</body>
</html>
次回の授業につづく。
公開領域にこれ設置するのもできる。
固定IPにしてそこから以外のリクエストを排除して
イントラ状態に(たぶん?)することができる
もっともそうするならファイルがめちゃ増えるので、それならクラスにするらしい。
メソッドだけを呼び出すようにするといいらしい。
パーシャルファイル
部分ファイルのこと
全体としてはファイル部分を多くせず共有部分を多くする。テンプレートの分割。