0

私のプロジェクトには、写真をアップロードした各ユーザーに属する写真を持つユーザーアカウントがあります

ユーザーごとに次の写真と前の写真を表示したいので、友達の写真リストに移動すると、次にアップロードされた写真に(明らかに)ナビゲートできます。これらが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
4

1 に答える 1

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などの JavaScript ライブラリを使用して、写真をきちんと整理してナビゲートすることができます。

于 2012-07-12T05:41:14.330 に答える