2011-11-23 47 views
0

所以我有一個動態創建的播放列表,用戶通過搜索歌曲來創建。我想這樣做,當頁面刷新所有的歌曲留在那裏。在會話中存儲數組?我應該怎麼做?

什麼是存儲播放列表的最佳方式?

我一直在使用Persist.js但像存儲陣列的嘗試:

[["title":"song name", "artist":"someartist"], ["title":"another song", "artist":"one more"]] 

總是讓數組顯示爲:

["title", "song name", "artist", "someartist", "title"...] 

不是我想要的。另外,如果播放列表變大,是不是最好的想法。

那麼,創建一個服務器會話會更好嗎?或者只是將所有歌曲存儲到數據庫中?

謝謝。

回答

1

您可以將該數組另存爲一個JSON對象,該對象只存儲爲一個字符串。通過這種方式,您可以輕鬆將其存儲爲會話變量。

$_SESSION['test'] = json_encode($myArray); 

$loadedArray = json_decode($_SESSION['test']); 

我建議將其存儲在數據庫中,如果你想存放的任何時間長度的名單,特別是如果你不知道這個名單可以有多大得到。或者,您可以在陣列長度上設置一個上限,並在第一個20之後丟棄所有曲目。

1

您也可以將它們存儲爲URL哈希值,然後在頁面加載時讀取它們並加載歌曲。

如果歌曲正在通過PHP加載,您可以將它們設置爲Cookie,然後讓PHP讀取cookie。

此外,如果他們正在通過PHP加載,並且你不想使用cookie,你可以讓php迴應一個內聯腳本(這樣它會在整個頁面加載之前執行),如果其中有散列值URL將用戶重定向到散列值已轉換爲GET值的頁面,然後PHP可以讀取該值。