За последние 24 часа нас посетили 60460 программистов и 26374 робота. Сейчас ищут 1993 программиста ...

Чередование

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

  1. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    там цикл for закоментирован.. так что не виляет)
     
  2. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    PHP:
    1. <?php
    2.                 $l = 0;
    3.                 $counts = count($data);
    4.             ?>
    5.             <?php foreach ($data as $key => $value) { ?>
    6.      
    7.         <div class="news">
    8.         <div class="row">
    9.         <?php
    10.         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 $l++; ?>
    19. <?php } ?>      
    20. <?php } ?>
    пробуйте так
    --- Добавлено ---
    а цикл фор должен быть закомментирован?
     
  3. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    PHP:
    1. if (!empty($data)) {
    2.     $i = 0;
    3.     foreach ($data as $key => $value) {
    4.         echo '
    5. <div class="news">
    6.    <div class="row">
    7.        <div class="r_'. ( $i%2 == 0 ? '1' : '2' ) .'">
    8.            <div class="image"><img alt="" src="' . $value->image . '" /></div>
    9.            <div class="text">' . $value->intro_text . '</div>
    10.            <div class="autor">' . $value->author . '</div>
    11.        </div>
    12.    </div>
    13. </div>';
    14.         $i++;
    15.     }
    16. }
    по идее этот код должен выводить все правильно)) Вы посмотрите на объект на свой, который Вы в цикле проходите.. может там что то не правильно
     
  4. swear

    swear Новичок

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

    так же 4 новости, 2 третьих и 2 четвертых.

    По сути тут есть же foreach то for наверно не нужен. Хотя я могу очень ошибаться. Просто тут есть еще переменная $key но в коде дальше она не упоминается, видимо она тоже где-то должна принимать участие...
     
  5. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.724
    Симпатии:
    358
    в данном случае key не нужна.. можно ее убрать из foreach))
    проверяйте входящий объект.. может в нем проблема.. цикл должен выводить все по очереди.
     
  6. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    что содержит массив $data и как он устроен? имеется в виду что в индексе и что в значении?
    --- Добавлено ---
    @swear запустите у себя этот код
    PHP:
    1. <?php
    2.     foreach ($data as $key => $value)
    3.     {
    4.     echo " $key _ $value <br>";
    5.     }
    6. ?>
    и покажите что в итоге выдаст браузер
     
  7. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    все гениальное просто. помог добрый человек. в папке models стояла строчка $this->items_per_page = 2; вот и все
     
  8. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    добавил ; упустил сперва
    --- Добавлено ---
    ктож знал?
     
  9. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    если вот это поставить без всего со старыми настройками то просто пустоту показывает, ничего на странице нет
     
  10. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    значит надо сделать ресет массива...
    но я так понял - тема закрыта
     
  11. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    в общем конечный код
    i++ внизу стоит чтобы классы чередовались, если ее не ставить то класс будет только 1

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

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    в таком варианте, да, согласен, но был код где еще присутствовал цикл фор, правда он был закомментирован, и непонятно с какой целью, или того что он должен стоять, а с ним код не правильно работает, или просто он там не нужен. я предположил что он нужен и обратил внимание на то что используется снова переменная $i которая уже занята циклом foreach. А в конечном итоге дало даже не в цикле оказалось!
    надеюсь с этим вопросов не возникнет
     
  13. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    здесь for не нужен, т.к. цикл для перебора массива есть foreach, i в цикле массива не используется она нужна для подсчета классов,

    в конечном итоге там надо было еще добавить кнопочку и все идеально стало. там стояло ограницение как раз для кнопки, т.е. выводилось 2 новости при нажатии на кнопку подгружались еще 2 новости и т.д.
     
  14. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    вот как рас там и нудно уже использовать тогда другую переменную, конечно если там-это внутри цикла foreach. если за пределами foreach то можно и $i использовать
    --- Добавлено ---
     
  15. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    PHP:
    1.      
    2. <?php foreach ($data as $key => $value) { ?>
    3.         <?php
    4.         { echo '<div class="r_'. ($i%2==0?'1':'2') .'"> ';?>
    5.                 <div class="image"><img alt="" src="<?php echo $value->image; ?>" /></div>
    6.                 <div class="text"><?php echo $value->intro_text; ?></div>
    7.                 <div class="autor"><?php echo $value->author; ?></div>
    8.         <?php echo '</div> ';}?>
    9.     <?php $i++; ?>
    10. <?php } ?>
    тут как раз i в foreach стоит и все работает хорошо
     
  16. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    73
    Симпатии:
    2
    @swear потому что в foreach нет цикла фор, а там стояло ограничение для кнопки! где там? может я неправильно понял, но я решил что там -это в цикле фор, который стоит внутри цикла foreach.
    --- Добавлено ---
    PHP:
    1. [LIST=1]
    2. [*]<?php if (!empty($data)) { ?>
    3. [*]   <?php
    4. [*]     $i = 0;
    5. [*]     $counts = count($data);
    6. [*]   ?>
    7. [*]   <?php foreach ($data as $key => $value) { ?>
    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 } ?>
    19. [*]<?php } ?>
    20. [/LIST]
     
  17. swear

    swear Новичок

    С нами с:
    19 май 2017
    Сообщения:
    19
    Симпатии:
    2
    "Там" это во фреймворке, на котором сайт сделан. $this->items_per_page = 2;

    Потом когда кнопку поставила все заработало.

    Просто первый раз с этим столкнулась.