2012-04-05 58 views
1

我有一个网站,里面有很多图片。目前我只有服务器上的所有图片,我使用php来获取目录中的文件,并将它们全部显示在表格中。但是,当我这样做时,图片按字母顺序显示,我不想要。我希望他们能够显示我的插入时间。我在想我可以创建一个数字字段设置为自动递增的表格,然后插入图片的文件名。并将照片留在服务器上。所以每次我插入一张图片时,它都会插入一个包含数字和文件名的行。所以当我显示时,我只是通过那个数字Desc来显示,这应该给我插入最新的图片。这是做这件事的最好方法吗?在我的数据库中实现图片表的最佳方式

谢谢

回答

0

你在正确的轨道上。我会使用时间戳(类型为DATETIME)来确定照片上传的时间,然后按照该时间排序。递增ID并不总是与插入时间相对应。

+0

我看不到需要这个。按照文件系统上文件的实际创建日期进行排序应该足够了。根本不需要另一张桌子。 – Icarus 2012-04-05 16:04:06

+0

拥有关于您输入文件系统的文件的信息表总是一个好主意。你对这些信息的处理是另一回事。是的,你可以按时间戳排序,但有一个表是一个更强大的解决方案。 – 2012-04-05 16:20:32

0

你可以通过auto_incremented id字段来做到这一点,或者你可以存储时间戳并以这种方式排序。任何一个都是可以选择的,只要确保避免潜在的主键违规。

2

听起来对我很好。如果你真的想获得技术,你可以使用一个时间戳字段并按它排序。但是,只要您在插入图像时自动增量,就好像您的想法可以正常工作。

+0

时间戳记数据类型也可以默认为current_timestamp。 – mqsoh 2012-04-05 16:26:04

0

filemtime()你得到一个文件的时间戳。因此,在获取文件(例如)readdir()后,可以使用uasort()或其他php分类功能之一来定义订购。没有数据库是必要的。

0

在数据库中存储一个指向该文件的指针将是最好的方法去处理它,并将图像存储在文件系统中。至于创建的日期,您可以使用DATETIME来跟踪它创建的时间,然后按照您希望的顺序查询它们。

0

我看不到需要这个。 PHP中必须有一种方法来获取所有文件列表并按创建的日期进行排序。由于这些文件将被上传到您的服务器,因此date_created时间将是在您的服务器上创建的日期;因此,不需要新的表格和数据库调用等。

0

如果您计划在系统中拥有数千(或更多)张照片,则需要为元数据使用数据库表,同时存储实际硬盘上的图像文件。

做10,000个I/O点击按日期排序文件是坚果。做一个SQL查询返回按日期排序的所有文件名列表会好得多,因为MySQL可能能够将整个表放入内存。

table image 
{ 
    id 
    user_id (if images belong to certain users) 
    path (the file system path and/or filename) 
    created (timestamp) 
} 
相关问题