За последние 24 часа нас посетили 17574 программиста и 1649 роботов. Сейчас ищут 858 программистов ...

Слайдер

Тема в разделе "PHP для новичков", создана пользователем antonhristovsky, 30 май 2012.

  1. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Здравствуйте. Я на сайте создаю слайдер для фотографий. Фотографии берутся из базы данных. Циклом это всё выводится и каждой фотографии присваивается id равно id изображения. JavaScript при клике на изображение запускает следующую картинку) Раньше у меня было так: при нажатии к этому id добавляется 1 и выводится) Но что делать есть id идут не подряд или какое-то одно было удалено??? Выходит что всё теряется...
     
  2. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Угу, по этому не по ID в таком случае выводят, а по смещению.
    Сортируете фотки, напрмиер по ID
    Код (Text):
    1. order by id
    а выводите так
    Код (Text):
    1. $num = isset($_GET['num']) ? (int)$_GET['num'] : 0;
    2. $sql = "select ... order by `id` limit {$num}, 1";
    передаёте порядковый номер фото в переменной num напрмиер.
     
  3. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    это всё не то...можно ли как-то это сделать с помощью ключа в цикле???
     
  4. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Ну да, а это будет то :)
    Зачем делать костыли, если можно воспользоватся нормальным способом? На это есть какие то веские причины?)
     
  5. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Я всёравно не понял) в вид из php приходит уже массив с айди, автором, и ссылкой на картинку. И таких значений масса) Вот как их не по id выводить, а по ключу?
     
  6. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Ну так раз у Вас массив, то к его элементам можно обращаться последовательно.
    Зависит ещё от того какого вида у вас массив.
     
  7. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Многомерный
     
  8. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Ну ключами массива что то является? Или у вас вообще json? Пример приведите хотя бы из двух элементов.
     
  9. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Ну вот к примеру дамп:
    Код (Text):
    1. 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" } }
     
  10. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    ну у вас элементы по пордяку идёт, id отдельно передаётся, значит так и обращайтесь к массиву по номеру элемента.
     
  11. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Но как этот номер взять в цикле?
     
  12. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Ну смотря что за цикл.
    Вообще не понятно. Тема в разделе пхп. А слайдер вы горите что берёт сразу готовый массив, то есть из js.
    Так вам где нужно взять номер? В JS?
    Просто считайте элементы массива i++ вот и будет номер.
     
  13. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Нет номер нужно взять в php
     
  14. Easy

    Easy Активный пользователь

    С нами с:
    15 июл 2011
    Сообщения:
    286
    Симпатии:
    0
    Тогда возвращаемся в самое начало. Я предложил использовать смещение, на что вы ответили.
    я так понял что массив выдаётся сразу в JS.
    Вообщем без полного понимания картины как оно сейчас работает и без кода - сложно что то посоветовать.
     
  15. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Понял) Вот мой контроллер:
    Код (Text):
    1. public function action_hpass()
    2.     {
    3. $userful = new Model_Useful;
    4.        
    5.         $auth = Auth::instance();
    6.         $au = $auth->get_user();
    7.        
    8.         $data['user_photos'] = $userful->user_photos($au);
    9. }
    Вот Useful.php:
    Код (Text):
    1. public function user_photos($au)   
    2.     {
    3.         $getPhotos = DB::select()
    4.                     ->from('photos')
    5.                     ->where('sender', '=', $au)
    6.                     ->execute()
    7.                     ->as_array();
    8.        
    9.         return $getPhotos;
    10.     }
    И вот вид:
    Код (Text):
    1. <?foreach($user_photos as $k=>$user_photo){?>
    2.  
    3. <?
    4.     $auth = Auth::instance();
    5.     $au = $auth->get_user();
    6.    
    7.     $getName = DB::select()
    8.             ->from('likes')
    9.             ->where('file_id', '=', $user_photos[$k]['id'])
    10.             ->where('user_id', '=', $au)
    11.             ->execute()
    12.             ->as_array();
    13.    
    14.     $count = count($getName);
    15. ?>
    16.  
    17. <?
    18. $rty[] = $user_photos[$k]['id'];
    19. ?>
    20.     <script>
    21.         function open_window_<?=$user_photos[$k]['id']?>(){
    22.             document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'inline-block';
    23.            
    24.             $("body").addClass("scroll_no");
    25.         }
    26.         function close_window_<?=$user_photos[$k]['id']?>(){
    27.             document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none';
    28.            
    29.             $("body").removeClass("scroll_no");
    30.         }
    31.        
    32.         function like_guidance_<?=$user_photos[$k]['id']?>(){
    33.             document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block';
    34.         }
    35.         function like_abduction_<?=$user_photos[$k]['id']?>(){
    36.             document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.display = 'none';
    37.         }
    38.        
    39.         function record_guidance_<?=$user_photos[$k]['id']?>(){
    40.             document.getElementById('record_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block';
    41.         }
    42.         function record_abduction_<?=$user_photos[$k]['id']?>(){
    43.             document.getElementById('record_com_<?=$user_photos[$k]['id']?>').style.display = 'none';
    44.         }
    45.        
    46.         function com_guidance_<?=$user_photos[$k]['id']?>(){
    47.             document.getElementById('com_com_<?=$user_photos[$k]['id']?>').style.display = 'inline-block';
    48.         }
    49.         function com_abduction_<?=$user_photos[$k]['id']?>(){
    50.             document.getElementById('com_com_<?=$user_photos[$k]['id']?>').style.display = 'none';
    51.         }
    52.        
    53.         function open_next_window_<?=$user_photos[$k]['id']?>(){
    54.             <?
    55.                 $auth = Auth::instance();
    56.                 $au = $auth->get_user();
    57.                 // Доделать вывод первого id так же как и конечного!!!!!! и всё супер:)!
    58.                 $qwsa = DB::select()
    59.                     ->from('photos')
    60.                     ->where('sender', '=', $au)
    61.                     ->order_by('id', 'DESC')
    62.                     ->limit("1")
    63.                     ->execute()
    64.                     ->as_array();
    65.                
    66.                 foreach($qwsa as $qaz){
    67.                     $qwsaaa = $qaz['id'];
    68.                 }
    69.                 // echo "Начальное значение: " . $rty[0] . ", Конечное значение: " . $qwsaaa;
    70.             ?>
    71.            
    72.             if(<?=$user_photos[$k]['id']?> == <?=$qwsaaa?>)
    73.             {
    74.                 document.getElementById('look_<?=$rty[0]?>').style.display = 'inline-block';
    75.                 document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none';
    76.             }
    77.             else
    78.             {
    79.                 <?$na = $user_photos[$k]['id'] + 1;?>
    80.                
    81.                 document.getElementById('look_<?=$user_photos[$k]['id']?>').style.display = 'none';
    82.                 document.getElementById('look_' + <?=$na?>).style.display = 'inline-block';
    83.             }
    84.         }
    85.        
    86.         function dispatch_like_<?=$user_photos[$k]['id']?>()
    87.         {
    88.             var photo_id = '<?=$user_photos[$k]['id']?>';
    89.            
    90.             $.ajax({
    91.                 type: "POST",
    92.                 data: {photo_id: photo_id},
    93.                 url: "/ajax/dispatch_like",
    94.                 dataType: "json",
    95.                 success: function(data)
    96.                 {
    97.                     if(data == "no"){
    98.                         $("#like_<?=$user_photos[$k]['id']?>").addClass("like_ok_view");
    99.                         $("#like_<?=$user_photos[$k]['id']?>").removeClass("like_view");
    100.                         document.getElementById('like_com_<?=$user_photos[$k]['id']?>').innerHTML = "Удалить отметку";
    101.                         document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.right = "-143";
    102.                     }
    103.                     else{
    104.                         $("#like_<?=$user_photos[$k]['id']?>").addClass("like_view");
    105.                         $("#like_<?=$user_photos[$k]['id']?>").removeClass("like_ok_view");
    106.                         document.getElementById('like_com_<?=$user_photos[$k]['id']?>').innerHTML = "Отметить как нравится";
    107.                         document.getElementById('like_com_<?=$user_photos[$k]['id']?>').style.right = "-175";
    108.                     }
    109.                 }
    110.             })
    111.         }
    112.     </script>
    113.     <!--<body onkeydown="alert(event.keyCode);">-->
    114.    
    115.     <img id="photo<?=$user_photos[$k]['id']?>" onclick="open_window_<?=$user_photos[$k]['id']?>()" height="100px" src="<?=$user_photo['photo_name']?>">
    116.    
    117.     <div class="look_window" id="look_<?=$user_photos[$k]['id']?>">
    118.         <span style="display: inline-block; position: relative; text-align: left; width: 100%;">
    119.         <!--
    120.             <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>
    121.             <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>
    122.         -->
    123.         </span>
    124.        
    125.         <p>
    126.             <span style="position: relative; z-index: 100;" id="mail">
    127.                 <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']?>">
    128.                
    129.                 <!--Добавить верхние стрелки-->
    130.                 <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;">
    131.                     <img src="http://png-4.findicons.com/files//icons/1686/led/16/heart_empty.png">
    132.                 </span>
    133.                
    134.                 <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;">
    135.                     <?if($count > 0){?>Удалить отметку<?}else{?>Отметить как нравится<?}?>
    136.                 </span>
    137.  
    138.                 <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">
    139.                     <img src="http://png-4.findicons.com/files//icons/1155/diagona/16/129.png">
    140.                 </span>
    141.                
    142.                 <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">
    143.                     Добавить запись на стену
    144.                 </span>
    145.                
    146.                 <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">
    147.                     <img src="http://png-2.findicons.com/files//icons/1689/splashy/16/comments.png">
    148.                 </span>
    149.                
    150.                 <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;">
    151.                     Оставить комментарий
    152.                 </span>
    153.             </span>
    154.             <!--ADD!!!-->
    155.             <span onclick="close_window_<?=$user_photos[$k]['id']?>()" style="cursor: default; position: absolute; right: 10px; top: 10px; width: 100%; height: 100%;">
    156.                 <img src="http://s.futubrast.com/5c901b0/img/overlay.png">
    157.             </span>
    158.            
    159.             <span onclick="close_window_<?=$user_photos[$k]['id']?>()" style="cursor: pointer; position: absolute; right: 10px; top: 10px;">
    160.                 <img src="http://s.futubrast.com/5c901b0/img/overlay.png">
    161.             </span>
    162.         </p>
    163.     </div>
    164. <?}?>
     
  16. antonhristovsky

    antonhristovsky Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    11
    Симпатии:
    0
    Ну, так кто-то мне поможет???