За последние 24 часа нас посетили 36739 программистов и 1708 роботов. Сейчас ищут 1187 программистов ...

Цикл while

Тема в разделе "PHP для новичков", создана пользователем face2005, 7 мар 2019.

  1. face2005

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

    С нами с:
    31 янв 2015
    Сообщения:
    48
    Симпатии:
    0
    Добрый день! есть такой код:
    PHP:
    1.  <?php if(get_field('master_tatuaj_brovey')):  ?>      
    2.             <?php while(the_repeater_field('master_tatuaj_brovey')): ?>
    3.  
    4.                 <div class="workSlider inSlide item">
    5.                     <img src="<?php the_sub_field('img_tatuaj_brovey'); ?>" alt="<?php the_sub_field('name_tatuaj_brovey'); ?>" />
    6.                     <h3><?php the_sub_field('name_tatuaj_brovey'); ?></h3>
    7.                     <div class="priceWork"><?php the_sub_field('price_tatuaj_brovey'); ?></div>
    8.                </div>
    9.  
    10.             <?php endwhile; ?>
    11. <?php endif; ?>
    и получается что выводится все нормально, но прибавляется еще один блок с пустыми параметрами.

    HTML:
    1. <div class="workSlider inSlide item">
    2. <img src="" alt="">
    3. <h3></h3>
    4. <div class="priceWork"></div>
    5. </div>
    как заставить цикл не выводить этот последний блок?
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    а посмотри - что выдает
    скорее всего именно там и есть пустой элемент
     
    face2005 нравится это.
  3. face2005

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

    С нами с:
    31 янв 2015
    Сообщения:
    48
    Симпатии:
    0
    вроде получилось.. добавил условие <?php $name = get_sub_field('name_tatuaj_brovey'); if( !empty($name) ): ?>

    PHP:
    1.  <?php if(get_field('master_tatuaj_brovey')):  ?>      
    2.             <?php while(the_repeater_field('master_tatuaj_brovey')): ?>
    3.                    <?php $name = get_sub_field('name_tatuaj_brovey'); if( !empty($name) ): ?>
    4.                 <div class="workSlider inSlide item"><img src="<?php the_sub_field('img_tatuaj_brovey'); ?>" alt="<?php the_sub_field('name_tatuaj_brovey'); ?>" /><h3><?php the_sub_field('name_tatuaj_brovey'); ?></h3><div class="priceWork"><?php the_sub_field('price_tatuaj_brovey'); ?></div></div>
    5.                  <?php endif; ?>
    6.             <?php endwhile; ?>
    7. <?php endif; ?>
     
  4. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    правильнее - пустой элемент не формировать )))
     
    face2005 и Valick нравится это.
  5. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    @ADSoft, согласен. В крайнем случае если массив приходит извне ничего не стоит проверить его на пустые элементы, а по хорошему всё поля "отвалидировать" :) Ну или хотя бы htmlspecialchars приладить при выводе.
     
    face2005 нравится это.
  6. Вероломство

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

    С нами с:
    19 июн 2017
    Сообщения:
    626
    Симпатии:
    24
    может быть начать считать от 0, как это принято у ПРОГРАММИСТОВ?