2012-04-05 22 views
1

私はそこにたくさんの写真があるウェブサイトを持っています。現在のところ、私はただの写真をサーバー上に持っており、私はディレクトリ内のファイルを取得し、それらをすべて1つのテーブルに表示するためにPHPを使用します。しかし、私がこれをすると、私が望まないアルファベット順の画像が表示されます。私は彼らに私の挿入時間を表示させたい。私は、自動増分に設定された数字フィールドと挿入された画像のファイル名を持つテーブルを作成できると思っていました。写真をサーバー上に残しておきます。だから毎回私は画像を挿入すると、番号とファイル名の行が挿入されます。だから私が表示するとき、私はちょうどその数字Descで、私に最新の挿入された写真を与える必要があります表示します。これを行うにはこれが最善の方法ですか?私のデータベースにピクチャテーブルを実装する最も良い方法

ありがとうございました

答えて

0

あなたは正しい軌道に乗っています。私はタイムスタンプ(タイプDATETIME)を使用して、画像がいつアップロードされたかを正確に判断し、それをソートします。増分IDは、挿入時間と必ずしも一致しない。

+0

私はこれを必要としません。ファイルシステム上のファイルの実際の作成日によるソートで十分です。別のテーブルは必要ありません。 – Icarus

+0

あなたがファイルシステムに入力したファイルに関する情報の表を持つことは、常に良い考えです。あなたはその情報を使って何をするかはもう一つのことです。はい、タイムスタンプでソートできますが、テーブルを持つ方がより堅牢なソリューションです。 –

0

あなたはauto_incremented idフィールドでそれを行うことができます。あるいは、タイムスタンプを保存してそのように並べ替えることができます。いずれのオプションも大丈夫です。プライマリキーの潜在的な違反を回避していることを確認してください。

2

いいですね。あなたが本当にテクニカルになりたければ、タイムスタンプフィールドを使用して、それを注文することができます。しかし、あなたのイメージを挿入すると自動的にインクリメントする限り、あなたの考えはうまくいくように思えます。

+0

タイムスタンプデータ型は、デフォルトでcurrent_timestampに設定することもできます。 – mqsoh

0

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

0

データベース内のファイルへのポインタを格納することは、ファイルシステム内のイメージを持ち歩くための最良の方法です。作成された日付については、DATETIMEを使用して、作成された時間を記録しておき、それを望む順序で照会することができます。

0

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

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) 
} 
関連する問題