PHPとMySQLを学んでいる高校生です。ユーザーがサインアップして画像のアップロードを開始できるシンプルな写真共有サイトを作成しようとしています。各ユーザーには、すべての写真を表示するプロファイルがあります。
現在、「ユーザー」と呼ばれるテーブルが 1 つしかありません: ユーザー名、電子メール、パスワード
写真用のテーブルをどのようにセットアップすればよいですか? また、各画像のファイルパスにリンクするにはどうすればよいですか?
ありがとう
PHPとMySQLを学んでいる高校生です。ユーザーがサインアップして画像のアップロードを開始できるシンプルな写真共有サイトを作成しようとしています。各ユーザーには、すべての写真を表示するプロファイルがあります。
現在、「ユーザー」と呼ばれるテーブルが 1 つしかありません: ユーザー名、電子メール、パスワード
写真用のテーブルをどのようにセットアップすればよいですか? また、各画像のファイルパスにリンクするにはどうすればよいですか?
ありがとう
ユーザーテーブルにIdという列を作成します(これは変更されません)。通常、これにはINT AUTOINCREMENT番号のようなものを使用して、データベースが自動的に割り当てるようにします。これはPRIMARYKEYとしてマークする必要があります。
写真というテーブルを作成します
Table photos
Id = autoincrement primary key
UserID = int (you can set this up as a foreign key, but to keep it simple, just make it indexed)
Title = varchar
Info = varchar
Filename = varchar
Table Photos
Id | UserId | Title | info | Filename | (add other columns to suit)
------------------------------------------------------------
1 | 1 | Duck | xyz | duck.jpg |
2 | 1 | Cat | xyz | cat.jpg |
3 | 2 | Mouse | xyz | mouse.jpg |
上記のデータからわかるように、写真1と2はユーザー1に属し、写真3はユーザー2に属しています。
ユーザー名「bob」のすべての写真を選択するには、次のようにします
SELECT Photos.Id, Photos.Filename
FROM Photos
JOIN Users ON Photos.UserId=Users.Id
WHERE Users.username = 'bob'
最初の質問は、ユーザーの写真をどこに保存していますか? 私はこれをお勧めします:
Table (User's):
Username | Password | Email
---------------------------
user1 | fdgfdg | fdfgdf
user2 | ffdgfd | fgdfgf
user3 | dgfdgg | fgdgdd
次に、ユーザーがサインアップするたびに、そのユーザーの名前と写真というタイトルのサブディレクトリを持つフォルダーを作成します。
ユーザーごとにテーブルを作成します。
Table user1
Photo | Title | info
----------------------------
duck.jpg | My Duck! | fgdf
cat.png | Le Cat | dfgd
次に、ユーザーがログインすると、すべてのタイトルを一覧表示し、それらを写真に動的にリンクします。
だから私はなるだろう
My Duck --> http://mysite.com/user1/photos/myduck.jpg
user1 がログインしたユーザー名の場合、写真が自動的に追加され、myduck.jpg がデータベースから取得されます。
ただし、これには 2 つの穴があります。 - ホットリンク - ユーザー名と写真のタイトルを知っている人は、許可を与えられなくても写真にアクセスできます。