php
1<?php 2session_start(); 3require('./dbconnect.php'); 4 5if(isset($_SESSION['id']) && $_SESSION['time'] + 3600 > time()){ 6 $_SESSION['time']=time(); 7 8 $members=$db->prepare('SELECT * FROM members WHERE id=?'); 9 $members->execute(array($_SESSION['id'])); 10 $member=$members->fetch(); 11}else{ 12 header('Location:login.php'); 13 exit(); 14} 15 16if(!empty($_POST)){ 17 if($_POST['message']!=''){ 18 $message = $db->prepare('INSERT INTO posts SET member_id=?,message=?,created=NOW()'); 19 $message->execute(array( 20 $member['id'], 21 $_POST['message'] 22 )); 23 24 header('Location:index2.php'); 25 exit(); 26 } 27 28} 29 30$posts=$db->query('SELECT m.name,m.picture,p.*FROM members m,posts p 31WHERE m.id=p.member_id ORDER BY p.created DESC'); 32 33?> 34 35<!DOCTYPE html> 36<html lang="en"> 37<head> 38 <meta charset="UTF-8"> 39 <title>Document</title> 40</head> 41<style> 42 body{ 43 text-align: center; 44 45 } 46 47 h2{ 48 padding: 15px; 49 } 50</style> 51<body> 52<h2>ひとこと掲示板</h2> 53 <form action="" method="post"> 54 <dl> 55 <dt><?php echo htmlspecialchars($member['name'],ENT_QUOTES) ;?>さん、メッセージをどうぞ</dt> 56 <dd> 57 <textarea name="message" cols="50" rows="5"></textarea> 58 </dd> 59 </dl> 60 <div> 61 <input type="submit" value="投稿する"> 62 </div> 63 </form> 64<?php foreach($posts as $post):?> 65 <div class="msg"> 66 <img src="./member_picture/<?php htmlspecialchars($post['picture'],ENT_QUOTES);?>"width="48" height="48" alt="<?php echo 67 htmlspecialchars($post['name'],ENT_QUOTES) ; ?>"/> 68 69 <p><?php echo htmlspecialchars($post['message'],ENT_QUOTES); ?><span class="name"> 70 (<?php echo htmlspecialchars($post['name'],ENT_QUOTES); ?>) 71 </span></p> 72 </div> 73<?php endforeach;?> 74 75</body> 76</html>
よくわかるphpの教科書で勉強をしているのですが、以下のコードの部分が理解できないです。
「$posts=$db->query('SELECT m.name,m.picture,p.*FROM members m,posts p
WHERE m.id=p.member_id ORDER BY p.created DESC');」
m.name,m.pictureのm.や p.createdのp.の役割がよくわかりません。
メッセージの情報を取り出していることは分かったのですが、コードの書き方が理解できません。
_________________________________
調べたこと
よくわかるphpの教科書を読みました。
Googleで色々と検索してみましたが、解決できるような記事が見つかりませんでした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/18 14:34