2012-07-12 4 views
0

내 프로젝트는PHP/MYSQL - 사용자의 사진 이전/다음 링크

이드가 그들에게 업로드 한 각 사용자에 속하는 사진을 가지고 사용자 계정 때, 각 사용자에 대해 다음과 이전 사진을 보여 드리고자을 가지고 I 다음에 올린 사진 사용자에게 (분명히) 탐색 할 수있는 친구 목록으로 이동하십시오. photo_id 순서로 다음/이전 사진 인 것이 좋을 것입니다.

다음 사진/이전 사진에 대해 어떻게 그런 종류의 쿼리를 작성 하시겠습니까?

내 테이블 구조는 같습니다.

CREATE TABLE IF NOT EXISTS `userphotos` (
    `photo_id` int(11) NOT NULL auto_increment, 
    `photo_ownerid` int(11) NOT NULL, 
    `photo_ispublic` int(11) NOT NULL, 
    `photo_name` varchar(100) NOT NULL, 
    `photo_caption` varchar(100) NOT NULL, 
    `photo_imagedata` longblob NOT NULL, 
    `album_id` int(11) NOT NULL, 
    PRIMARY KEY (`photo_id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=89 ; 

은 당신이 수행 할 작업에 대한 ID의

이전 이미지

SELECT field1 FROM tablename WHERE id < $currentid ORDER BY id DESC LIMIT 1 

다음 이미지

SELECT field1 FROM tablename WHERE ID > $currentid ORDER BY id ASC LIMIT 1 
+0

'PHP 이미지 갤러리'에서 인터넷 검색을하는 것이 좋습니다. 많은 시간을 절약 할 수 있습니다. – Smandoli

+0

이미 개별 사진을 보여주는 사용자 앨범이 있습니다. 그러나 내가 수행하고자하는 마지막 몇 단계를 완료하기 위해 탐색을 구현하기를 원할 것입니다. 다음은 '이미지 다운로드' '이미지 공유'및 '이미지 수정'입니다. 내가해야 할 일을보기 위해 예를 들어 말할 때 나는 그물 주위를보고있다. 누군가에게 깊이있는 설명을하기에 좋을 것이므로 나는 더 명확하게 이해할 수있을 것입니다. :) – dave

답변

4

그 쿼리가 작동합니다를 선택하려면이 같은 것을 사용합니다. 사용자가 소유 한 사진으로 탐색 할 사진을 제한하려면 소유자 ID도 추가해야하지만.

이전 이미지

SELECT field1 FROM tablename 
WHERE id < $currentId AND photo_ownerid = $ownerId 
ORDER BY id DESC LIMIT 1 

다음 이미지

SELECT field1 FROM tablename 
WHERE ID > $currentId AND photo_ownerid = $ownerId 
ORDER BY id ASC LIMIT 1 

그러나, 질문에 대한 코멘트에 암시로, 당신이 원하는 데이터베이스 매번 쿼리를보다 효율적 대안이있다 다음/이전 사진보기. 예를 들어 모든 사진을 한 번에 쿼리 한 다음 예를 들어 PrettyPhoto과 같은 자바 스크립트 라이브러리를 사용하여 사진을 깔끔하게 정리하고 탐색 할 수 있습니다.

+0

Varchair에 조언 해 주셔서 감사합니다. 그것은 매우 도움이되었습니다. : D – dave

+0

그래서 모든 사진을 쿼리 한 다음 자바 스크립트 라이브러리를 사용할 때. 사용자 앨범을 선택하여 모두를 쿼리 할 수 ​​있습니까? 내 앨범은 입니다'NOT은' 'name' 텍스트 NULL NOT albums' ( 'id'의 INT (11) NOT NULL AUTO_INCREMENT, 'description' 텍스트 NULL NOT, 'user_id'의 지능이있는 경우 (테이블 만들기 11) NOT NULL, 'is_public' int (11) NOT NULL, 프라이 머리 키 ('id') ) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 15;' – dave

관련 문제