За последние 24 часа нас посетили 60259 программистов и 26280 роботов. Сейчас ищут 1892 программиста ...

Чередование

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

  1. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    Уважаемые. Нужна помощь.
    Только начинаю осваивать PHP и пытаюсь сделать чередование..

    Т.е. надо сделать так чтобы было:

    HTML:
    1. <div class="r-1"></div>
    2. <div class="r-2"></div>
    3. <div class="r-1"></div>
    4. <div class="r-2"></div>
    В начале я решила что надо вот такое

    PHP:
    1. <?php if (!empty($data)) { ?>
    2.        <?php
    3.               $i = 0;
    4.               $counts = count($data);
    5.        ?>
    6. ........
    7. <?php } ?>
    Т.е. мы задаем переменные для счета.

    Затем видимо надо использовать foreach

    Но как реализовать сам счет не понимаю.
     
  2. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    PHP:
    1. for($n=0; $n < 10; $n++){
    2.   if($n%2==0)
    3.     echo 'Число четное';
    4.   else
    5.     echo 'Число нечетное';
    6. }
     
    denis01 нравится это.
  3. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    Сделала вот так

    PHP:
    1. <?php for($i=0;$i<10;$i++)
    2.         {echo '<div class="r_'.($i%2==0?'1':'2').'">
    3.                       <div class="image"><img alt="" src='.$value->image.' /></div>
    4.                 </div>'; }
    5. ?>
     
    denis01 и Алекс8 нравится это.
  4. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    умничка))
     
    swear нравится это.
  5. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    Не то получается. Блоков тут получается 10, а надо чтобы было столько сколько, например, отзывов на сайте 5, 6, 25.

    Как вот так это организовать?
     
  6. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    вместо 10 подставить свое значение)) например это count($data)
    я для примера привел)
     
    swear нравится это.
  7. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    А вообще такие вещи делаются через одну строчку в css
     
    Fell-x27 и mahmuzar нравится это.
  8. Abyss

    Abyss Старожил

    С нами с:
    12 дек 2015
    Сообщения:
    1.294
    Симпатии:
    216
    Адрес:
    Default city
  9. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    @swear, к примеру для table будет так
    Код (CSS):
    1. .table > tbody > tr:nth-of-type(2n+1) {
    2.     background-color: #f9f9f9;
    3. }
     
  10. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    Через CSS не вариант, мне надо чтобы на всех браузерах работало.
    На CSS тамвсе элементарно.
    Код (CSS):
    1.    
    2. r:nth-of-type(2n+1) { float: left; }
    3. r:nth-of-type(2n) { float: right; }
     
  11. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    @swear, а в каких браузерах интересно это не будет работать?
     
  12. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    В эксплорере ниже 9, в андроиде ниже 2,1, в ios ниже 2. В общем в CSS3 оно работает. мне надо чтобы и на древних компах все было идеально.
    --- Добавлено ---
    В общем проблема с чередованием в следующем. Сам цикл чередования отрабатывает.
    НО этот цикл должен быть выведен внутри массива.
    Я предположила так. Но выводит интересно 2 первых новости 2 раза, 2 вторых новости 2 раза и все.

    PHP:
    1. <?php if (!empty($data)) { ?>
    2.    <?php
    3.      $i = 0;
    4.      $counts = count($data);
    5.    ?>
    6.    <?php foreach ($data as $key => $value) { ?>
    7.      <div class="news">
    8.      <div class="row">
    9.      <?php for( $i=0; $i < $counts; $i++)
    10.        {echo '<div class="r_'. ($i%2==0?'1':'2') .'"> ';?>
    11.          <div class="image"><img alt="" src="<?php echo $value->image; ?>" /></div>
    12.          <div class="text"><?php echo $value->intro_text; ?></div>
    13.          <div class="autor"><?php echo $value->author; ?></div>
    14.        <?php echo '</div> ';  }?>
    15.      </div>
    16.      </div>
    17.    <?php } ?>  
    18. <?php } ?>

    А всего-то их там как минимум 15.
     
  13. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    о_О
     
  14. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    За что купила за то и продаю nth-of-type
     
  15. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    @swear, это я видел. Я про то что нафиг такое старье поддерживать))).
     
  16. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    вот так вот хотят.

    меня больше сейчас беспокоит как этот цикл вписать в массив :(
     
  17. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    Уважаемые!! Помогите. Научите! Реально надо. Без благодарности не останетесь ;););)
     
  18. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    я помогу с удовольствием)) но не могу понять задачу)) как это цикл внутри массива)) ??
     
  19. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    В общем как-то вот так получилось, но оно работает, но не так как надо

    PHP:
    1.         <?php if (!empty($data)) { ?>
    2.             <?php
    3.                 $i = 0;
    4.                 $counts = count($data);
    5.             ?>
    6.             <?php foreach ($data as $key => $value) { ?>
    7.        
    8.         <div class="news">
    9.         <div class="row">
    10.         <?php //for( $i=0; $i < $counts; $i++)
    11.         { echo '<div class="r_'. ($i%2==0?'1':'2') .'"> ';?>
    12.                 <div class="image"><img alt="" src="<?php echo $value->image; ?>" /></div>
    13.                 <div class="text"><?php echo $value->intro_text; ?></div>
    14.                 <div class="autor"><?php echo $value->author; ?></div>
    15.         <?php echo '</div> ';}?>
    16.     </div>
    17.     </div>
    18.     <?php $i++; ?>
    19. <?php } ?>        
    20. <?php } ?>
    --- Добавлено ---
    Foreach выводит массив с данными, а затем оно должно оформляться чередованием классов r_1 и r_2

    Вот этот вот "шедевр" выводит только 2 новости при чем 2 вторые новости, т.е. не 1,2 а 3 и 4
     
    #19 swear, 21 май 2017
    Последнее редактирование: 21 май 2017
  20. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    $i используется и в
    PHP:
    1.  <?php
    2.                 $i = 0;
    3.                 $counts = count($data);
    4.             ?>
    и тут
    PHP:
    1. for( $i=0; $i < $counts; $i++)
    попробуйте где-то поменять $i на допустим $ii или на любую другую.
    --- Добавлено ---
    например
    PHP:
    1. for( $ii=0; $ii < $counts; $ii++)
     
  21. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    поменяла $i=0 на $l = 0, в результате выводит так же 3 и 4 новость, но 2 раза третью и 2 раза четвертую )))
     
  22. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    PHP:
    1. { echo '<div class="r_'. ($ii%2==0?'1':'2') .'"> ';?>
    2.                 <div class="image"><img alt="" src="<?php echo $value->image; ?>" /></div>
    3.                 <div class="text"><?php echo $value->intro_text; ?></div>
    4.                 <div class="autor"><?php echo $value->author; ?></div>
    5.         <?php echo '</div> ';}
     
  23. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    то же самое получилось (((
     
  24. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    и тут тоже поменяли?
    Код (Text):
    1. ($ii%2==0?'1':'2')
     
  25. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    там тоже :(

    код то просто и задача простая, но что то я совсем туплю