0

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

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

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

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

建议?

谢谢!

4

3 回答 3

2

我认为“位置”字段可以。您可以在更改轨道位置后使用一条语句对其进行更新,如下所示:

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 值很大。

于 2011-10-26T10:37:39.243 回答
0

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

于 2011-10-26T11:20:51.703 回答
0

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

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

于 2011-10-26T10:40:47.840 回答