2014-09-03 80 views
0

這是一個wordpress項目,但更真實的PHP。我正在執行一個查詢,以最多帶回12個帖子。每套三個職位都包裝在一個名爲jobsN的分區中。該div內的每個帖子(item)都會以item1,item2item3的形式返回。通過計數迭代PHP顯示不正確的序列

item1類工作得很好,但jobs類不會回到1-2-3-4。它回來爲1-0-0-0。我無法弄清楚我的數字出了什麼問題。

正如您從下面的HTML中可以看到的,作業計數有些不同。這部分是在這裏處理:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs 
<?php echo $count; ?>"><?php }; ?> 

下面是完整的查詢:

<?php 
      query_posts(array( 
       'post_type' => 'custom_job', 
       'showposts' => 12 
      )); 
     ?> 

     <?php if (have_posts()): $contcount = 0; $count = 0;?> 
     <?php $contcount++; ?> 
     <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> --> 
      </div> 
      <?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 
     <?php endwhile; ?> 
     </div> 
     <?php endif; ?> 

下面是HTML,我回去:

<div class="jobs1"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
    </div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
     <div class="item-2"> 
      content 
     </div> 
     <div class="item-3"> 
      content 
     </div> 
</div> 
<div class="jobs0"> 
     <div class="item-1"> 
      content 
     </div> 
</div 
+0

切勿使用'query_posts'。這是不可靠的,打破主要查詢,並在大多數情況下徹底失敗,當涉及到分頁。而是使用'WP_Query' – 2014-09-03 09:41:50

回答

1

此行的塊的問題是:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

如果$計數= 3這意味着你將desplay一個新的工作div,但你也使$ count = 0,那麼你迴應它爲0.

變換這行:

<?php if ($count == 3) {?></div><?php $count = 0; $countcount++; ?><div class="jobs<?php echo $countcount; ?>"><?php }; ?> 
+1

雖然變量是contcount,但不是countcount,但它可以工作。所以一旦我改變它的工作:) – user1486133 2014-09-03 09:10:22

+0

對,對不起,感謝接受。 – 2014-09-03 09:13:22

1

使用此行

<?php if ($count == 3) {?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?>

代替

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?>

解決方案:

我已經更新了$contcount++$count==3和回聲類jobs<?php echo $contcount

+0

如果您在輸出之前增加$ contcount,那麼您將在第二個塊中獲得3而不是2 – Chococroc 2014-09-03 08:47:57

+0

第一次在外部使用時,2將在下面使用,請參閱上文。在什麼時候它必須被回聲再次看到一個 – 2014-09-03 08:48:54

+0

哇,對不起,我錯了,:P。我更正了我的答案... – Chococroc 2014-09-03 08:51:27

0

你使用了錯誤計數器在PHP中使用:

您的代碼包含以下行:

<?php if ($count == 3) {?></div><?php $count = 0; ?><div class="jobs<?php echo $count; ?>"><?php }; ?> 

它應該是

<?php if ($count == 3) { ?></div><?php $count = 0; $contcount++; ?><div class="jobs<?php echo $contcount; ?>"><?php }; ?> 

因爲$count存儲項目,$contcount商店物品

+0

再次看到$ contcount的1的值問題在while循環之外使用,您的代碼將在啓動時放置1-1兩次 – 2014-09-03 08:50:57

+0

這條線上的關閉}似乎存在問題。 – user1486133 2014-09-03 08:55:22

+0

解決了,我忘了添加';'在$ countcount的末尾。檢查修正的代碼行 – Chococroc 2014-09-03 10:08:10

0

嘗試用這個,不是100%肯定它會工作

<?php 
    query_posts(array( 
     'post_type' => 'custom_job', 
     'showposts' => 12 
    )); 
?> 

<?php if (have_posts()): $contcount = 0; $count = 0;?> 
<?php $contcount++; ?> 
    <div class="jobs<?php echo $contcount; ?>"> 
     <?php while (have_posts()) : the_post(); $count++;?> 
      <div class="item-<?php echo $count ?>"> 
       <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2> 
       <p><?php echo get_the_excerpt(); ?></p> 
       <a href="<?php the_permalink() ?>">Learn more</a> 
      </div> 
      <?php if ($count == 3): ?> 
       <?php $count = 0; $countcount++;?> 
       <div class="jobs<?php echo $contcount; ?>"></div> 
      <?php endif; ?> 
     <?php endwhile; ?> 
    </div> 
<?php endif; ?> 

編輯:編輯可能的錯誤。

+0

第一個「endif」語法錯誤,意外的'endif'(T_ENDIF) – user1486133 2014-09-03 09:07:48