やりたいこと
ブログサービスを考えた際の
マイページに飛んだとき、もしaさんでログインしてたら、aさんが投稿した記事のみを取得して、表示させたい マイページに飛んだとき、もしbさんでログインしてたら、bさんが投稿した記事のみを取得して、表示させたい
を実装したい。
説明
プログラミングの練習にブログサービスのようなものを作成しようと思っています。PHPとMySQLを用いてユーザー登録のロジックを組むところまでは理解ができました。ただ、ここからユーザー毎に投稿した記事を判別して取得させるというロジックが理解できていません。下記はsqlコマンドをdb上で実行した際の、ユーザーデータの、テーブルです。
ユーザーログインをした場合、idとパスワードでログイン認証を行い、ログインが成功するとidに紐づけられてたnameが画面に出力されます。
SELECT * from userData; +----+---------+--------------------------------------------------------------+ | id | name | password | +----+---------+--------------------------------------------------------------+ | 1 | a | $2y$10$gPhPlmB3CVAUMS5K3OREie5Jg4AKPfe1ig8Q8En0/DGrH0qjGo8s6 | | 2 | b | $2y$10$6c.OFCkSf2GlsCYqZoyDaOye.4.2ZGraaW7PQe/CpZL7W7BGj5MBq | | 3 | c | $2y$10$KEBJDyk7VV3Hd.lcMuaR5e1AUaGCM9St5W.m1eYxHzPbCnppg3/YO | +----+---------+--------------------------------------------------------------+
ユーザーログインした状態、例えばaさんでログインしている状態で、ブログを書いたとします。このブログの記事は、dbのどこに保存されるべきなのでしょうか。userDataというこのテーブルに、txt_dataというカラムを新たに作って、そこに入れるわけにはいかないとなると、ユーザーデータと記事の紐づけ方が分かりません。
マイページに飛んだとき、もしaさんでログインしてたら、aさんが投稿した記事のみを取得して、表示させたい マイページに飛んだとき、もしbさんでログインしてたら、bさんが投稿した記事のみを取得して、表示させたい
ということを実装したいのですが、どのような考え方をすればいいのか解らないないのです。
自分の想定
三つのカラム(|id| name| password)を持つuserDataテーブルとは別に、textDataというテーブルを作り、このテーブルには二つのカラム(|id|text)を持たせます。aさんで記事を書いてブログを投稿したときは、aさんのid(プライマリーキー)を判別し、そのidとテキストデータを一緒にtextDataテーブルにインサートします。
マイページで、aさんでログインした場合は、マイページにリダイレクトした直後に、aさんのidを取得し、php内でsql分のselectコマンドを実行して、textDataテーブルのidカラムと、ユーザーデータのidに一致する行を全て取得して、textDataテーブルのtextカラムを順番に取得して表示させる。
このようなロジックを今書きながら考えていたのですが、もっとまともな方法があれば、教えてください。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。