Здравствуйте. Я на сайте создаю слайдер для фотографий. Фотографии берутся из базы данных. Циклом это всё выводится и каждой фотографии присваивается id равно id изображения. JavaScript при клике на изображение запускает следующую картинку) Раньше у меня было так: при нажатии к этому id добавляется 1 и выводится) Но что делать есть id идут не подряд или какое-то одно было удалено??? Выходит что всё теряется...
Угу, по этому не по ID в таком случае выводят, а по смещению. Сортируете фотки, напрмиер по ID Код (Text): order by id а выводите так Код (Text): $num = isset($_GET['num']) ? (int)$_GET['num'] : 0; $sql = "select ... order by `id` limit {$num}, 1"; передаёте порядковый номер фото в переменной num напрмиер.
Ну да, а это будет то Зачем делать костыли, если можно воспользоватся нормальным способом? На это есть какие то веские причины?)
Я всёравно не понял) в вид из php приходит уже массив с айди, автором, и ссылкой на картинку. И таких значений масса) Вот как их не по id выводить, а по ключу?
Ну так раз у Вас массив, то к его элементам можно обращаться последовательно. Зависит ещё от того какого вида у вас массив.
Ну ключами массива что то является? Или у вас вообще json? Пример приведите хотя бы из двух элементов.
Ну вот к примеру дамп: Код (Text): array(5) { [0]=> array(3) { ["id"]=> string(1) "3" ["sender"]=> string(1) "1" ["photo_name"]=> string(37) "http://img.videla.ru/wallpaper/17.jpg" } [1]=> array(3) { ["id"]=> string(1) "4" ["sender"]=> string(1) "1" ["photo_name"]=> string(58) "http://legocomp.ru/wp-content/uploads/2011/07/dfdfffd4.jpg" } [2]=> array(3) { ["id"]=> string(1) "5" ["sender"]=> string(1) "1" ["photo_name"]=> string(116) "http://4.bp.blogspot.com/-q6K-Nhhk180/T4veQPi6MDI/AAAAAAAAAgk/NXendDh3nPE/s1600/summer-at-lonely-beach-1440x9001.jpg" } [3]=> array(3) { ["id"]=> string(1) "6" ["sender"]=> string(1) "1" ["photo_name"]=> string(43) "http://www.1zoom.ru/big2/1/121539-aleni.jpg" } [4]=> array(3) { ["id"]=> string(1) "8" ["sender"]=> string(1) "1" ["photo_name"]=> string(94) "http://f2.foto.rambler.ru/preview/r/668x434/4cd24a57-9685-4d17-124d-4a62843f068d/лето_.jpg" } }
ну у вас элементы по пордяку идёт, id отдельно передаётся, значит так и обращайтесь к массиву по номеру элемента.
Ну смотря что за цикл. Вообще не понятно. Тема в разделе пхп. А слайдер вы горите что берёт сразу готовый массив, то есть из js. Так вам где нужно взять номер? В JS? Просто считайте элементы массива i++ вот и будет номер.
Тогда возвращаемся в самое начало. Я предложил использовать смещение, на что вы ответили. я так понял что массив выдаётся сразу в JS. Вообщем без полного понимания картины как оно сейчас работает и без кода - сложно что то посоветовать.
Понял) Вот мой контроллер: Код (Text): public function action_hpass() { $userful = new Model_Useful; $auth = Auth::instance(); $au = $auth->get_user(); $data['user_photos'] = $userful->user_photos($au); } Вот Useful.php: Код (Text): public function user_photos($au) { $getPhotos = DB::select() ->from('photos') ->where('sender', '=', $au) ->execute() ->as_array(); return $getPhotos; } И вот вид: Код (Text): <?foreach($user_photos as $k=>$user_photo){?> <? $auth = Auth::instance(); $au = $auth->get_user(); $getName = DB::select() ->from('likes') ->where('file_id', '=', $user_photos[$k]['id']) ->where('user_id', '=', $au) ->execute() ->as_array(); $count = count($getName); ?> <? $rty[] = $user_photos[$k]['id']; ?> <script> function open_window_<?=$user_photos[$k]['id']?>(){ document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'inline-block'; $("body").addClass("scroll_no"); } function close_window_<?=$user_photos[$k]['id']?>(){ document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none'; $("body").removeClass("scroll_no"); } function like_guidance_<?=$user_photos[$k]['id']?>(){ document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block'; } function like_abduction_<?=$user_photos[$k]['id']?>(){ document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.display = 'none'; } function record_guidance_<?=$user_photos[$k]['id']?>(){ document.getElementById('record_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block'; } function record_abduction_<?=$user_photos[$k]['id']?>(){ document.getElementById('record_com_<?=$user_photos[$k]['id']?>').style.display = 'none'; } function com_guidance_<?=$user_photos[$k]['id']?>(){ document.getElementById('com_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block'; } function com_abduction_<?=$user_photos[$k]['id']?>(){ document.getElementById('com_com_<?=$user_photos[$k]['id']?>').style.display = 'none'; } function open_next_window_<?=$user_photos[$k]['id']?>(){ <? $auth = Auth::instance(); $au = $auth->get_user(); // Доделать вывод первого id так же как и конечного!!!!!! и всё супер:)! $qwsa = DB::select() ->from('photos') ->where('sender', '=', $au) ->order_by('id', 'DESC') ->limit("1") ->execute() ->as_array(); foreach($qwsa as $qaz){ $qwsaaa = $qaz['id']; } // echo "Начальное значение: " . $rty[0] . ", Конечное значение: " . $qwsaaa; ?> if(<?=$user_photos[$k]['id']?> == <?=$qwsaaa?>) { document.getElementById('look_<?=$rty[0]?>').style.display = 'inline-block'; document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none'; } else { <?$na = $user_photos[$k]['id'] + 1;?> document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none'; document.getElementById('look_' + <?=$na?>).style.display = 'inline-block'; } } function dispatch_like_<?=$user_photos[$k]['id']?>() { var photo_id = '<?=$user_photos[$k]['id']?>'; $.ajax({ type: "POST", data: {photo_id: photo_id}, url: "/ajax/dispatch_like", dataType: "json", success: function(data) { if(data == "no"){ $("#like_<?=$user_photos[$k]['id']?>").addClass("like_ok_view"); $("#like_<?=$user_photos[$k]['id']?>").removeClass("like_view"); document.getElementById('like_com_<?=$user_photos[$k]['id']?>').innerHTML = "Удалить отметку"; document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.right = "-143"; } else{ $("#like_<?=$user_photos[$k]['id']?>").addClass("like_view"); $("#like_<?=$user_photos[$k]['id']?>").removeClass("like_ok_view"); document.getElementById('like_com_<?=$user_photos[$k]['id']?>').innerHTML = "Отметить как нравится"; document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.right = "-175"; } } }) } </script> <!--<body onkeydown="alert(event.keyCode);">--> <img id="photo<?=$user_photos[$k]['id']?>" onclick="open_window_<?=$user_photos[$k]['id']?>()" height="100px" src="<?=$user_photo['photo_name']?>"> <div class="look_window" id="look_<?=$user_photos[$k]['id']?>"> <span style="display: inline-block; position: relative; text-align: left; width: 100%;"> <!-- <span style="display: inline-block; margin-right: 5px"><img style="display: inline-block; position: absotule; margin: 10px" src="http://cdn1.iconfinder.com/data/icons/iphone_toolbar_icons/iphone_toolbar_icons/arrowleft.png"></span> <span style="display: inline-block; margin-left: 5px"><img style="display: inline-block; position: absotule; margin: 10px" src="http://cdn4.iconfinder.com/data/icons/iphone_toolbar_icons/iphone_toolbar_icons/arrowright.png"></span> --> </span> <p> <span style="position: relative; z-index: 100;" id="mail"> <img id="open_photo_<?=$user_photos[$k]['id']?>" onclick="open_next_window_<?=$user_photos[$k]['id']?>()" style="max-height: 600px; max-width: 1100px;" src="<?=$user_photo['photo_name']?>"> <!--Добавить верхние стрелки--> <span id="like_<?=$user_photos[$k]['id']?>" onclick="dispatch_like_<?=$user_photos[$k]['id']?>()" class="<?if($count > 0){?>like_ok_view<?}else{?>like_view<?}?>" onmouseover="like_guidance_<?=$user_photos[$k]['id']?>()" onmouseout="like_abduction_<?=$user_photos[$k]['id']?>()" style="position: absolute; right: -40px; padding: 10px; display: inline-block;"> <img src="http://png-4.findicons.com/files//icons/1686/led/16/heart_empty.png"> </span> <span id="like_com_<?=$user_photos[$k]['id']?>" class="like_view_com" style="position: absolute; right: <?if($count > 0){?>-143<?}else{?>-175<?}?>px; margin-top: 6px; padding: 5px; color: #ffffff; display: none;"> <?if($count > 0){?>Удалить отметку<?}else{?>Отметить как нравится<?}?> </span> <span id="record_<?=$user_photos[$k]['id']?>" class="record_view" onmouseover="record_guidance_<?=$user_photos[$k]['id']?>()" onmouseout="record_abduction_<?=$user_photos[$k]['id']?>()" style="position: absolute; right: -40px; padding: 10px; display: inline-block; margin-top: 40px"> <img src="http://png-4.findicons.com/files//icons/1155/diagona/16/129.png"> </span> <span id="record_com_<?=$user_photos[$k]['id']?>" class="record_view_com" style="position: absolute; right: -188px; margin-top: 46px; padding: 5px; color: #ffffff; display: none"> Добавить запись на стену </span> <span id="com_<?=$user_photos[$k]['id']?>" class="com_view" onmouseover="com_guidance_<?=$user_photos[$k]['id']?>()" onmouseout="com_abduction_<?=$user_photos[$k]['id']?>()" style="position: absolute; right: -40px; padding: 10px; display: inline-block; margin-top: 80px"> <img src="http://png-2.findicons.com/files//icons/1689/splashy/16/comments.png"> </span> <span id="com_com_<?=$user_photos[$k]['id']?>" class="com_view_com" style="position: absolute; right: -172px; margin-top: 86px; padding: 5px; color: #ffffff; display: none;"> Оставить комментарий </span> </span> <!--ADD!!!--> <span onclick="close_window_<?=$user_photos[$k]['id']?>()" style="cursor: default; position: absolute; right: 10px; top: 10px; width: 100%; height: 100%;"> <img src="http://s.futubrast.com/5c901b0/img/overlay.png"> </span> <span onclick="close_window_<?=$user_photos[$k]['id']?>()" style="cursor: pointer; position: absolute; right: 10px; top: 10px;"> <img src="http://s.futubrast.com/5c901b0/img/overlay.png"> </span> </p> </div> <?}?>