1

写真がたくさん載っているサイトがあります。現在、私はサーバー上にすべての写真を持っているだけで、phpを使用してディレクトリ内のファイルを取得し、それらすべてをテーブルに表示しています。ただし、これを行うと、写真がアルファベット順に表示されますが、これは望ましくありません。挿入時間を表示したい。自動インクリメントに設定された数値フィールドと、挿入された画像のファイル名を使用してテーブルを作成できると考えていました。サーバーに写真を残すだけです。そのため、画像を挿入するたびに、番号とファイル名を含む行が挿入されます。したがって、表示するときは、その番号の Desc で表示するだけです。これにより、挿入された最新の写真が表示されます。これはこれを行うための最良の方法ですか?

ありがとう

4

7 に答える 7

2

私にはいいですね。本当に技術的なことを知りたい場合は、タイムスタンプ フィールドを使用して、それによって並べ替えることができます。ただし、画像を挿入するときに自動インクリメントする限り、アイデアはうまくいくようです。

于 2012-04-05T15:59:15.250 に答える
0

システムに何千枚 (またはそれ以上) の写真を保存する予定がある場合は、実際の画像ファイルをハード ドライブに保存する際に、メタデータ用のデータベース テーブルを使用する必要があります。

ファイルを日付順にソートするために 10,000 回の I/O ヒットを実行するのは大変なことです。MySQL はおそらくテーブル全体をメモリに収めることができるため、1 つの SQL クエリを実行して日付順に並べられたすべてのファイル名のリストを返す方がはるかに優れています。

table image
{
    id
    user_id (if images belong to certain users)
    path (the file system path and/or filename)
    created (timestamp)
}
于 2012-04-05T16:05:52.503 に答える
0

これの必要性がわかりません。PHP には、ファイルのすべてのリストを取得し、作成日でソートする方法が必要です。このファイルはサーバーにアップロードされるため、date_created 時刻はサーバーで作成された日付になります。したがって、新しいテーブルやデータベースの呼び出しなどは必要ありません。

于 2012-04-05T16:01:44.593 に答える
0

ファイルのタイムスタンプをfilemtime()取得します。uasort()したがって、(たとえば)でファイルを取得した後、または他のphpソート関数の1つを使用して順序を定義することができますreaddir()。そのためのデータベースは必要ありません。

于 2012-04-05T16:00:09.477 に答える
0

ファイルへのポインタをデータベースに格納することが、ファイル システムに画像を保存するための最良の方法です。作成された日付については、作成さ DATETIMEれた時間を追跡し、必要な順序でクエリを実行するために使用できます。

于 2012-04-05T16:00:13.440 に答える
0

あなたは正しい軌道に乗っています。タイムスタンプ (タイプDATETIME) を使用して、写真がいつアップロードされたかを正確に判断し、それで並べ替えます。増加する ID は、常に挿入時に対応するとは限りません。

于 2012-04-05T15:57:36.780 に答える
0

auto_incremented id フィールドでそれを行うことも、タイムスタンプを保存してそのように並べることもできます。どちらでも問題ありませんが、潜在的な主キー違反を回避していることを確認してください。

于 2012-04-05T15:58:23.803 に答える