Цикл foreach. Как сделать, чтобы на странице выводилось не более 10 купонов?

vacuumtrade

Новичок
Есть цикл, который отвечает за вывод купонов из файла xml. Я бы хотел, чтобы на одной странице было не более 10 штук (к примеру). Затем можно было перейти на другую страницу. Подскажите плиз как это сделать. Сам уже запутался... Буду премного благодарен!
Код:
<?php
    if (!empty($_POST['post_id'])) { $post_id = $_POST['post_id']; }
  
    // если мы получили id posta, то продолжаем
    if($post_id) {
        $offers_id = get_post_meta($post_id, 'wpcf-offers_id', true); // получаем id нужного оффера для нужного поста и подставляем значение в URL
        $url = 'путь к xml файлу'; // получили URL адрес для скачивания xml фида с промокодами для нужного арендодателя
      
        $xml = simplexml_load_file($url); // проверяем существование этого фида
      
        // если RSS feed существует, то продолжаем
        if($xml) {
          
            // разбираем фид и извлекаем промокоды
            foreach ($xml->xpath('coupons/coupon') as $coupon) {
                if($coupon) {
                // если удалось извлечь купоны, то записываем полученные данные в строку
          
                    if($coupon->advcampaign_id == $offers_id ) {
                        $coupon_str .= '<div class="coupon">';
                        $coupon_str .= '<h3><p style="color: #000000; margin: -13px 0px -20px 0px;"><b>'.$coupon->short_name.': '.$coupon->name.'</b></p></h3>';
                        $coupon_str .= '<p style="margin: -5px 0px 0px 0px;">-------------------------------------------------------------------------------------------------------------------------------------------------------</p>';
                        $coupon_str .= '<a target="_blanck" rel="nofollow" class="get-price" href="'.$coupon->promolink.'"><img style="float: right; margin: 0px 10px 0px 0px;" alt="" src="http://getpromocode.ru/wp-content/uploads/2013/11/button.png" width="200" height="45"></a>';
                        $coupon_str .= '<img src="'.$coupon->logo.'" style="float: left; margin: -9px 10px 0px 0px;"><p style="color: #000000; margin: 6px 10px 0px 0px; text-align: left;">Срок действия до '.$coupon->date_end.'</p>';
                        $coupon_str .= '<p style="margin: 9px 0px 0px 0px;">-------------------------------------------------------------------------------------------------------------------------------------------------------</p>';
                        $coupon_str .= '<p style="margin: -15px 0px -10px 0px; color: #000000;"><b>Описание промокода:</b> '.$coupon->description.'</p>';
                        $coupon_str .= '</div>';
                  
                    } else { $e =''; $error = '<div style="padding: 50px; border: 1px dashed #888; margin: 25px 0;text-align: center;">Промокоды для этого магазина временно недоступны';}
          
                } else {
                    $error = '<div style="text-align: center; width: 100%;padding: 15px;">Извините, промокоды для этого магазина временно отсутствуют</div>';
                }          
            }
        } else { $error = 'XML не получен';}
            echo $coupon_str;
    } else { echo 'POST_ID не получен';}
?>
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Ну, наверное, надо для начала купоны считать... вы не находите?
 

vacuumtrade

Новичок
Это я понимаю. И примерно представляю как это делается. В итоге перелопатил несколько форумов, но только запутался еще больше. Поэтому и пришел сюда.
 

Фанат

oncle terrible
Команда форума
Для начала надо все-таки сохранить содержимое урла локально
 

vacuumtrade

Новичок
Фанат, Файл сохранен на сервере и даже обновляется через кронджоб. это я скинул код без ссылок на xml фид.
 

AnrDaemon

Продвинутый новичок
Это я понимаю. И примерно представляю как это делается. В итоге перелопатил несколько форумов, но только запутался еще больше. Поэтому и пришел сюда.
Ну а раз понимаете, то покажите, где в цикле вы считаете, сколько купонов вы уже выдали из файла?
 

vacuumtrade

Новичок
AnrDaemon, В цикле это не прописано. Когда пытался сделать то, про что вы говорите, получалась полная ерунда и выгрузка вообще не работала. Я имел ввиду в предыдущем сообщении, что понимаю то, что нужно сделать и примерно представляю как, но запутался в коде, ибо мои знания php очень малы. И пришел на этот форум за помощью, а не за порцией троллинга. Будьте добры, если знаете как это сделать - помогите!!
 

hell0w0rd

Продвинутый новичок
Для начала бы разделить вывод результатов и код разбора, и по хорошему css отделить от html.
А вообще то что ты хочешь - называется пагинацией, тебе нужно разобраться с циклами и условиями.
http://www.php.net/manual/ru/control-structures.while.php
 
Сверху