Как получить «foreach» для отображения 3 результатов из каждой категории в PHP? - PullRequest
2 голосов
/ 29 февраля 2012

У меня есть код для шаблона электронной коммерции, который я делаю для opensource.,,

Можете ли вы проверить это!Это магазины отображаются 3 подряд и в количестве n!то есть .., все строки отображаются.

У меня есть кусок кода, который выбирает данные из базы данных и отображает информацию о магазине...

Я просто хочу, чтобы foreach ограничивался только 3 результатами.,,и мне также нужно больше кнопки, относящейся к другим магазинам, например, «Больше >>» внизу

  <?php 
  if(count($this->store_list)>0){
            foreach($this->store_list as $store){
            ?>
   <div id="menu">         
  <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span>

             <div class="cons_bot fl clr">

                  <ul>
                    <li><h4><?php echo $store->address1; ?>,</h4></li>
                    <li><h4><?php echo $store->address2; ?>,</h4></li>
                    <li><h4><?php echo $store->area_name; ?>,</h4></li>
                    <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li>
                    <li><h4><?php echo $store->pin; ?></h4></li>
                    <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li>
                  </ul>
                  </div>   <?php
   }
       ?>

Ответы [ 5 ]

3 голосов
/ 29 февраля 2012

Вы должны добавить предложение LIMIT к вашему запросу к базе данных:

SELECT address1, address2, area_name, city_name, pin, phone from TABLE where 1 = 1 LIMIT 3;

Это позволит получить только 3 записи, чтобы вы могли сохранить свой PHP таким же.

3 голосов
/ 29 февраля 2012

Изменить это ...

foreach($this->store_list as $store){
            ?>

на это ...

$number_output = 0;
foreach($this->store_list as $store){
    $number_output++;
    if($number_output > 3) break;
            ?>
0 голосов
/ 29 февраля 2012
foreach (array_slice ($this->store_list, 0, 3) as $store)
0 голосов
/ 29 февраля 2012

Добавьте это: $countvar=array();

Затем, каждый раз, сделайте это:

if(empty($countvar[$store->category]))$countvar[$store->category]=1;
else{if($countvar[$store->category]<3){$countvar[$store->category]++; [DISPLAY THE THINGS]}}

, это для случая, когда вы перечисляете ВСЕ магазины в одном месте.Если вы делаете это для категории, другие решения работают хорошо.

0 голосов
/ 29 февраля 2012

есть для каждого цикла, чтобы разорвать после трех попыток ..

<?php  
  if(count($this->store_list)>0){ 
  $ctr =1;
        foreach($this->store_list as $store){ 
          if($ctr == 3) break;
        ?> 
   <div id="menu">          
  <span class="cons_title fl"><a href="<?php echo PATH.'store/'.$store->title_url.'.html'; ?>"><h2><?php echo ucfirst($store->name); ?></h2></a></span> 

         <div class="cons_bot fl clr"> 

              <ul> 
                <li><h4><?php echo $store->address1; ?>,</h4></li> 
                <li><h4><?php echo $store->address2; ?>,</h4></li> 
                <li><h4><?php echo $store->area_name; ?>,</h4></li> 
                <li><h4><?php echo ucfirst($store->city_name); ?>,</h4></li> 
                <li><h4><?php echo $store->pin; ?></h4></li> 
                <li><h4>PH:</h4><h4><?php echo $store->phone; ?></h4></li> 
              </ul> 
              </div>   <?php 
  $ctr++; } 
   ?> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...