2012-04-05 2 views
0

В приведенном ниже коде я вытаскиваю все предстоящие классы обучения из своей базы данных. Я проверяю, прошел ли endDate, и я также проверяю, есть лиПока данные о возврате цикла

Я хочу, чтобы это возвращало 4 последних результата. Он работает нормально, пока status does = 2. Я понимаю, что цикл технически работает 4 раза, но только отображает результаты с status !='2'

Как это изменить, чтобы status = '2' цикл продолжался до тех пор, пока он не найдет 4 результата, соответствующих критериям?

<?php 
$today = date("Y-m-d"); 
$count = 0; 
$sth = $dbh->query('SELECT * from training ORDER BY startDate ASC'); 
     $sth->setFetchMode(PDO::FETCH_ASSOC); 
      while($count <= 4 && $row = $sth->fetch()) { 
       if($row['endDate'] > $today && $row['status'] != '2') {?> 
        <li> 
        <img class="post_thumb" src="/images/img.jpg" alt="" /> 
        <div class="post_description"> 
         <small class="details"> 
          <?php echo date("m/d/Y", strtotime($row['startDate'])) . ' - ' . date("m/d/Y", strtotime($row['endDate'])) ?> 
         </small> 
         <a class="post_caption" href="/register.php?course_id=<?php echo $row['courseId'] . '&id=' . $row['id'] ?>"><?php echo $row['title'] ?></a> 
        </div> 
        </li> 
       <?php } 
        $count++; 
        } 
       ?> 

ответ

2

Вы должны поместить $count++ внутри цикла if, в противном случае она будет всегда получать приращение. Как и в:

<?php 
$today = date("Y-m-d"); 
$count = 0; 
$sth = $dbh->query('SELECT * from training ORDER BY startDate ASC'); 
     $sth->setFetchMode(PDO::FETCH_ASSOC); 
      while($count <= 4 && $row = $sth->fetch()) { 
       if($row['endDate'] > $today && $row['status'] != '2') {?> 
        <li> 
        <img class="post_thumb" src="/images/img.jpg" alt="" /> 
        <div class="post_description"> 
         <small class="details"> 
          <?php echo date("m/d/Y", strtotime($row['startDate'])) . ' - ' . date("m/d/Y", strtotime($row['endDate'])) ?> 
         </small> 
         <a class="post_caption" href="/register.php?course_id=<?php echo $row['courseId'] . '&id=' . $row['id'] ?>"><?php echo $row['title'] ?></a> 
        </div> 
        </li> 
       <?php 
       $count++; 
       } 
      } 
?> 
+0

Ах-ха! Отлично! Благодаря! –

0

Вы можете выйти из цикла, если его четыре

while($row = $sth->fetch()) { 
     .... 
     if($row['status']=='2' && $count >="4") break; 
     $count++; 
} 
Смежные вопросы