[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перелистывание фоток по нажатию
web-monster
Вообщем нужно реализовать систему перелистывания фоток по нажатию на фото.

Как сделать подскажите!

Делаю так не работает Desc выбирает последнюю фотку этого пользователя:

$resko = mysql_query("SELECT id,user FROM photo WHERE user='$user' AND id!='$id'",$link);
$row=mysql_fetch_array($resko);
$next = $row["id"];




Спустя 10 минут, 20 секунд (30.01.2010 - 00:46) Ice написал(а):
щас смутно соображаю, но что если
AND id = $id + 1

Или там айдишник не цифровой?

Спустя 11 минут, 36 секунд (30.01.2010 - 00:58) web-monster написал(а):
Цифровой но дело в том что id для этого пользователя могут идти 1,3,19,25 и.т.д

Подробнее:

есть user1, user2, user3

все грузят фотки

user1 загрузил вчера с id 5, после него остальные ещё грузили, и вот сегодня он ещё грузит но уже id 17 к примеру.

Вот нужно сделать чтобы по клике на фотку переключал на след. фотку по порядку

Спустя 4 минуты, 49 секунд (30.01.2010 - 01:03) dr_Lev написал(а):

$imageIndex = $_GET['imageIndex'];
$resko = mysql_query("SELECT id,user FROM photo WHERE user='$user' LIMIT $imageIndex, 1",$link);
$row=mysql_fetch_array($resko);
$next = $imagesIndex+1;

Спустя 9 минут, 8 секунд (30.01.2010 - 01:12) web-monster написал(а):
Чёт не работает. Действия внутри while происходят)

$id = id фотки

$imageIndex = $id;
$resko = mysql_query("SELECT id,user FROM photo WHERE user='$komy' LIMIT $imageIndex, 1",$link);
$rew=mysql_fetch_array($resko);
$next = $imagesIndex+1;

Спустя 5 минут, 21 секунда (30.01.2010 - 01:17) dr_Lev написал(а):
$imageIndex = 0
while(...){
............
$resko = mysql_query("SELECT id,user FROM photo WHERE user='$komy' LIMIT $imageIndex, 1",$link);
$rew=mysql_fetch_array($resko);
$next = $row['id'];
$imageIndex++;
............

}

Спустя 9 минут, 31 секунда (30.01.2010 - 01:27) web-monster написал(а):
Скидывает на первый id всё время.

Конструкция вида:

  
$imageIndex = 0;
while(.выбор фотки по id.){
............
$id Этой фотки
$komy кому эта фотка

$resko = mysql_query("SELECT id,user FROM photo WHERE user='$komy' LIMIT $imageIndex, 1",$link);
$rew=mysql_fetch_array($resko);
$next = $rew['id'];
$imageIndex++;
//скидывает на id 1


<a href=photo?id=$next> следующая фотка</a>
............

}

Спустя 8 минут, 18 секунд (30.01.2010 - 01:35) dr_Lev написал(а):
Сори, не заметил название переменной...
Цитата
$rew=mysql_fetch_array($resko);
$next = $row['id'];
замени на
Цитата
$rew=mysql_fetch_array($resko);
$next = $rew['id'];


Спустя 2 минуты, 27 секунд (30.01.2010 - 01:38) web-monster написал(а):
Это я уже косякнул, там исправленно всё) Всё ровно не работает

Спустя 2 минуты, 31 секунда (30.01.2010 - 01:40) web-monster написал(а):
Я так понимаю что он прибавит только после выполнения скрипта, а нужно сразу чтобы +1 значение iD , при клике на следующий от того значения id переход на следующий.. А вообще незнаю) Бошка взрывается)

Спустя 20 минут, 43 секунды (30.01.2010 - 02:01) dr_Lev написал(а):
можешь дать полную картину цикла?

Спустя 1 час, 26 минут, 12 секунд (30.01.2010 - 03:27) sergeiss написал(а):
Извращенцы smile.gif Тут просто сделать.

select id, user from photo where user='current_user_name' and id > current_id limit 1

Надо просто сказать БД, что хотим выбрать одну запись для определенного юзера, с id больше, чем текущий. Мы не указываем его в явном виде!!! А только говорим, что он больше текущего. А БД пусть сама определяет, какой он.

Если надо выбрать несколько id, то тогда надо еще сделать ORDER BY, и в лимите указать количество в явном виде.

Спустя 8 часов, 6 минут, 22 секунды (30.01.2010 - 11:33) Shurick написал(а):
Если я верно вник в тему задачи - почему бы не добавить одну ячейку к примеру pos. при добавлении опеределенным пользователем pos+1


list($pos)=$db->sql_fetchrow($db->sql_query("select max(pos) from `photo` where `user`=".$user));
$pos +=0; $pos++;


INSERT INTO `photo` (`user`, `pos`) VALUES ('".$user."', '".(int)$pos."')

При выборке все будет проще


select id, user from photo where user='current_user_name' and pos > current_pos limit 1


Для запроса можно передавать ид пользователя

<a href=photo?uid=$uid&?pos=$pos> следующая фотка</a>

я бы ид пользователя записал в сессию

ну эт как вариант...

Спустя 45 минут, 47 секунд (30.01.2010 - 12:19) web-monster написал(а):
sergeiss хороший метод работает, но что делать когда последний id фотки? Тогда следующая пустая... Как вернуть на начало?

Спустя 4 минуты, 58 секунд (30.01.2010 - 12:24) web-monster написал(а):
Сделал вот так:

$resko = mysql_query("SELECT id,user FROM photo WHERE user='$komy' and id > $id limit 1",$link);
$rew=mysql_fetch_array($resko);
$next = $rew['id'];
if($next == "")
{
$resko = mysql_query("SELECT id,user FROM photo WHERE user='$komy' ORDER by id ASC limit 1",$link);
$rew=mysql_fetch_array($resko);
$next = $rew['id'];
}
else
{
$next = $next;
}


Рабоатет) Правда в обратном порядке)

Спустя 4 минуты, 28 секунд (30.01.2010 - 12:29) sergeiss написал(а):
Shurick - а зачем еще одно поле в таблице, если уже есть id? Которые и так всегда идут в порядке возрастания? Да еще и автоинкрементные?
Тогда получаем, что всё реализовано в одном "моём" запросе, а увеличение id происходит автоматически.

К тому же (очень существенно!) в "твоем" случае (через получение максимума и добавление к нему единицы) можно получить один нехороший "казус": у разных юзеров может оказаться один и тот же pos. Ситуация редкая, но возможная. А при использовании автоинкрементных полей эта проблема отсутствует (за счет "правильных" алгоритмов).

web-monster - а ты подумай smile.gif Если айди был уже последний, то что получим? Правильно, пустой ответ, в котором нету ни одной строки.
Тогда надо составить другой запрос, возвращающий айди фотографии, минимальный для данного пользователя.

PS. Пока я писал, ты уже сделал smile.gif Это хорошо.

Только больее правильно будет проверять айди не на равенство пустой строке, а смотреть именно количество строк.

И $next=$next - это полный "индуизм" biggrin.gif Убери этот else вообще.

Спустя 8 минут, 29 секунд (30.01.2010 - 12:37) web-monster написал(а):
Да ты прав с else индуизм получился)))
Спасибо за помощь! wink.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.