我目前正在使用Javascript,PHP和MySQL构建Web应用程序(媒体播放器)。它将用于上传视频并将其存储到播放列表中,然后用户可以使用该播放列表按所需顺序放置视频。
上传的文件保存在MySQL数据库中(id,标题,文件名和位置,......)。问题是,如何保存用户放置播放列表的顺序?
我不认为在数据库中添加“位置”字段是个好主意,因为每次更新都会运行太多查询。我想到了一个“下一个”字段,它指向列表中下一个视频的id,每次更新“只”需要最多3个查询(对吗?)。
是否有更好的方法来存储播放列表的顺序?它并不特别必须在数据库中,它也可以是一个文本文件。
建议?
谢谢!
答案 0 :(得分:1)
我认为'位置'字段可以。您可以在更改曲目位置后使用一个语句更新它,如下所示:
UPDATE track SET position=(CASE
WHEN position > :oldPos AND position <= :newPos THEN position - 1
WHEN position < :oldPos AND position >= :newPos THEN position + 1
WHEN position = :oldPos THEN :newPos
ELSE position
) WHERE playlist_id = :playlist_id
当插入新轨道时,只需将oldPos设置为较大的值(大于列表中的任何位置,例如列表长度+ 1)和:newPos到插入轨道位置,删除轨道集时:oldPos要删除跟踪位置和:newPos到一个很大的价值。
答案 1 :(得分:0)
堆栈方法(即使用下一个字段)不是一个好主意,因为如果您需要在播放列表中插入视频,那么您需要追逐下一个。
最简单的方法是使用位置字段。当您重新订购时,您将更改与堆栈方法相同的信息量,但所需的计算量将会少得多。
答案 2 :(得分:0)
我想我会为每个用户创建一个目录并保存包含播放列表的XML文件(存储文件的路径和名称)或将它们存储在数据库中(用户,播放列表(id,id_user,名称),媒体( id,description,path),x_playlists_media(id,id_playlist,id_media,position)。