如何保存媒体播放器播放列表的顺序


PHP/MySQL: How to save media player playlist order

我目前正在使用Javascript, PHP和MySQL构建web应用程序(媒体播放器)。它将用于上传视频并将其存储到播放列表中,然后用户可以使用该播放列表将视频按所需的顺序放置。

上传的文件保存在MySQL数据库(id,标题,文件名和位置,…)。问题是,如何保存用户放置播放列表的顺序?

我不认为在数据库中添加"位置"字段是一个好主意,因为每次更新都会运行太多的查询。我想到了一个"next"字段,它指向列表中下一个视频的id,每次更新"只"需要最多3个查询(对吧?)。

是否有更好的方法来存储播放列表的顺序?不一定要在数据库中,也可以是文本文件

建议吗?

谢谢!

我认为一个'position'字段就可以了。您可以在更改轨道位置后用一条语句更新它,如下所示:

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设置为大值

堆栈方法(即使用下一个字段)不是一个好主意,因为如果你需要在播放列表的中间插入视频,那么你需要通过你的下一个。

最简单的方法就是使用位置字段。当您重新排序时,您将改变与堆栈方法相同的信息量,但所需的计算量要少得多。

我想我会为每个用户创建一个目录并保存包含播放列表的XML文件(存储文件的路径和名称)或将它们存储在DB中(用户,播放列表(id,id_user,名称),媒体(id,描述,路径),x_playlists_media(id,id_playlist,id_media,位置)。