За последние 24 часа нас посетили 55835 программистов и 1625 роботов. Сейчас ищут 1023 программиста ...

Вывод элемента после определенного кол-ва блоков

Тема в разделе "PHP для новичков", создана пользователем AlexsaiL, 26 дек 2016.

  1. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    Подскажите пожалуйста, вот у меня идет список блоков с товарами, по 3 блока в строку, я вывожу блок с банером один раз после первых 3-х блоков с товаром, если блоков с товаром больше 3 единиц. как мне сделать чтобы при меньшем разрешении экрана банер выводился один раз после двух блоков с товаром?

    PHP:
    1. $i=0;
    2.         $tt=0;
    3.         $number=1;
    4.         echo '<div class="row product_row_16">';
    5.          while($row = sql_a($res)) {
    6.              $object_type_keep=$object_type;
    7.             if ($object_type==115){
    8.                 $t='SELECT * FROM `link_gr-of-prod_with_prod` WHERE ID_PRODUCT='.$row[ID];
    9. $resj11 = sql($t);
    10.                
    11.                 while($row12 = sql_a($resj11)) {
    12.                     if ($row12[ID_GROUP_OF_PRODUCTS]==115){
    13.                     }else{
    14.                        
    15.                         $object_type=$row12[ID_GROUP_OF_PRODUCTS];
    16.                     }
    17.                 }
    18.             }
    19.  
    20.              if ($filter){
    21.                      if (product_filter($lang,$filter,$row[ID])){
    22.                         echo '<div class="product-item_16 w-1-3_16">';
    23.                         show_shot_product_description_n_16($number, $object_type,$folder_id, $row[ID], 0,$lang,$filterold,$find_);
    24.                          $i++;
    25.                     }
    26.              }
    27.              else {
    28.                      echo '<div class="product-item_16 w-1-3_16">';
    29.                     if($find_==-66){
    30.                         show_shot_product_description_n_16($number, $object_type,$folder_id, $row[ID], 0,$lang,$filterold,$find_);  
    31.                     }else{
    32.                          show_shot_product_description_n_16($number, $object_type,$folder_id, $row[ID], 0,$lang,$filterold,$find_);
    33.                     }
    34.                     $i++;
    35.                 echo '</div>';
    36.                
    37.              }
    38.              $object_type=$object_type_keep;
    39.              if ($i>2){
    40.                  $i=0;
    41.                  if ($tt==0){
    42.                    
    43.                      $promo_pr=promo_product($object_type,2);
    44.                      //echo $promo_pr;
    45.                      if ($promo_pr==0){
    46.                      }else{
    47.                          echo '<div class="product-item_16 w-1-1_16">';
    48.                         show_shot_product_description_long_16($number, $object_type,$folder_id, $promo_pr, 0,$lang,$filterold,$find_);
    49.                         echo '</div></div>';
    50.                      }
    51.                    
    52.                  }
    53.                  $tt=1;
    54.              }
    55.  
    56.         }
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    думаю это можно и на CSS сделать, ты же не собрался на PHP узнавать разрешение экрана?
     
  3. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    да пробовал на css сделать, что то не получается, что только не пробовал
     
  4. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Можно ещё на javascript у него больше возможности по манипуляции html и css
     
    AlexsaiL нравится это.
  5. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Три волшебных слова - CSS, Flexbox, @media
     
    AlexsaiL нравится это.
  6. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    пробовал применять flexbox, не реагировало, попробую еще раз, видимо ошибка где то в стилях. спасибо
     
  7. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    спасибо, все сделал с помощью flexbox, применил для родителя display: flex; flex-wrap: wrap; а для дочерних:
    item_16:first-child {order:0;}
    item_16:nth-child(2) {order:1;}
    item_16:nth-child(3) {order:3;}
    item_16:nth-child(4) {order:2;}

    flex-wrap: wrap; -забыл первый раз прописать и не получалось)
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    order указывает, к слову, не абсолютный, а относительный порядок. То есть, если все элементы имеют order:0, то элементы с order:1 будут в самом конце. Это как бы не номер в массиве, а то насколько дальше от начала будет элемент или группа элементов, если у всех одинаковый order. Так, элементы с order:4 будут ближе к концу, а order:2 ближе к середине. В 90% случаев достаточно выставить order всего паре элементов, для которых менеджмент позиции действительно нужен.
     
    AlexsaiL нравится это.
  9. AlexsaiL

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

    С нами с:
    23 дек 2016
    Сообщения:
    327
    Симпатии:
    23
    а вы можете порекомендовать материал(видео книги) по освоению ООР в РНР где меньше воды и все просто и понятно?
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ищите по форуму, тысячу раз поднимался этот вопрос.
     
  11. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    пропала та тема