2011-10-26 5 views
0

현재 Javascript, PHP 및 MySQL을 사용하여 웹 응용 프로그램 (미디어 플레이어)을 제작 중입니다. 동영상을 업로드하고 재생 목록에 저장 한 다음 사용자가 원하는 순서대로 동영상을 올리는 데 사용할 수 있습니다.PHP/MySQL : 미디어 플레이어 재생 목록 순서를 저장하는 방법

업로드 된 파일은 MySQL 데이터베이스 (ID, 제목, 파일 이름 및 위치 등)에 저장됩니다. 질문은 사용자가 재생 목록을 넣는 순서를 어떻게 저장할 수 있습니까?

너무 많은 쿼리가 각 업데이트와 함께 실행되므로 데이터베이스에 "위치"필드를 추가하는 것이 좋습니다. 목록에서 다음 비디오의 ID를 가리키는 "다음"필드를 생각했는데 각 업데이트에 대해 최대 3 개의 쿼리가 필요했습니다 (맞습니까?).

재생 목록의 순서를 저장하는 더 좋은 방법이 있습니까? 특별히 데이터베이스에있을 필요는 없으며 텍스트 파일 일 수도 있습니다.

제안 사항?

감사합니다.

+0

다음 필드가 있으면 관리하기가 조금 복잡해지며 위치 필드가 있습니다. 쿼리 실행 – Dev

답변

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 : 큰 값.

+0

네,하지만 그 후에도 모든 비디오의 위치를 ​​변경해야합니다. – Timothy

+0

재생 목록에서 비디오를 이동할 때 이전 위치와 새 위치 사이의 비디오 트랙 위치를 변경하면됩니다. UPDATE가 여전히 작동하는 비디오를 추가하거나 제거하면 params 중 하나를 li보다 큰 값으로 설정하면됩니다. 그것은 나중에 트랙의 모든 위치를 업데이트 할 것입니다. – socha23

+0

흠, 이것이 정확하다고 생각합니다. 고마워요! – Timothy

0

스택 방식 (예 : 다음 입력란 사용)은 재생 목록 중간에 동영상을 삽입해야하는 경우 다음 장면을 쫓아 가야하기 때문에 좋은 생각이 아닙니다.

가장 쉬운 방법은 위치 필드를 사용하는 것입니다. 다시 주문하면 스택 접근 방식과 동일한 양의 정보가 변경되지만 계산이 훨씬 줄어들 것입니다.

+0

재생 목록 중간에 동영상을 삽입하면 3 개의 '다음'속성 만 변경하면됩니다. - 이전에 이동 한 동영상 중 하나 - 이전에 사용한 동영상 중 하나 동영상 이동 전에 - 이동 한 동영상 이전의 동영상 중 하나 여기에 뭔가가 누락 되었습니까? – Timothy

0

나는 각 사용자에 대한 디렉토리를 만들고 재생 목록이 포함 된 XML 파일 (경로 및 파일 이름 저장)을 저장하거나 DB (사용자, 재생 목록 (id, id_user, 이름), 미디어)에 저장한다고 생각합니다. (id, description, path), x_playlists_media (id, id_playlist, id_media, position).

관련 문제