2011-05-20 89 views
0

我想顯示一個表顯示不同的成員資格包,並需要嘗試讓每列交替顏色來分離包。我有交替單元的代碼,但它們是水平的而不是垂直的。請讓我知道如果這是可能的,並且我的代碼錯誤,以垂直交替單元格。謝謝PHP交替單元格顏色垂直

<table width="100%" border="0" cellspacing="0"> 
    <tr> 
     <td>&nbsp;</td> 
      <?php 
      foreach((array) $membership_names as $name) { ?> 
      <td align="center" style="background:#ffffe4; padding:5px; border-top:1px solid #ccc; border-right:1px solid #fff; border-left:1px solid #fff;"><strong><?php echo $this->escape($name); ?></strong></td> 
      <?php } ?> 
    </tr> 
      <?php 
      $i = 1; // Our row counter 
      foreach((array) $memberships as $membership) { 
       if ($i % 2 != 0) # An odd row 
        $rowStyle = "background:#FFFFE4; border-bottom:1px solid #ccc; border-top:1px solid #fff; height:40px; padding:10px;"; 
       else # An even row 
        $rowStyle = "background:#FFF4D8; border-bottom:1px solid #ccc; border-top:1px solid #fff; height:40px; padding:10px;"; 
       ?> 
    <tr> 
     <td align="left" style="<?php echo $rowStyle; ?>"><strong><?php echo $this->escape($membership['title']); ?>:</strong></td> 
     <?php foreach((array) $membership['values'] as $value) { 
       if ($i % 2 != 0) # An odd row 
        $rowStyle = "background:#FFFFE4; border-bottom:1px solid #ccc; border-top:1px solid #fff; height:40px; padding:10px;"; 
       else # An even row 
        $rowStyle = "background:#FFF4D8; border-bottom:1px solid #ccc; border-top:1px solid #fff; height:40px; padding:10px;"; 
        ?> 
      <td align="center" style="<?php echo $rowStyle; ?>"> 
       <?php if($value == 'yes') { ?> 
        <img src="<?php echo BASE_URL.TEMPLATE_PATH; ?>images/icon_checkmark.gif" /> 
       <?php } elseif($value == '-') {?> 
              <img src="<?php echo BASE_URL.TEMPLATE_PATH; ?>images/icon_checkno.gif" /> 
            <?php } elseif($value == '0') {?> 
              <img src="<?php echo BASE_URL.TEMPLATE_PATH; ?>images/icon_checkno.gif" /> 
            <?php } else { ?> 
        <?php echo $this->escape($value); ?> 
       <?php } ?> 
      </td> 
     <?php } ?> 
     </tr> 

        <?php 
        $i++; # Increment our row counter 
        } 
        ?> 

        <tr> 
        <td align="left" valign="top" style="background:#9C6C69; color: #FFFFE4; border-bottom:1px solid #ccc; border-top:1px solid #fff; font-weight:bold; height:40px; padding:10px;">&nbsp;</td> 
        <?php foreach((array) $pricing as $price) { ?> 
          <td align="center" valign="top" style="background:#9C6C69; border-bottom:1px solid #ccc; border-top:1px solid #fff; color: #FFFFE4; height:40px; padding:10px;"> 
          <?php foreach($price['pricing'] as $key=>$value) { ?> 
            <?php if(count($price['pricing']) > 1) { ?><p><strong><?php echo $lang['public_compare_option']; ?> <?php echo $key+1; ?></strong></p><?php } ?> 
            <?php if($value['label']) { ?> 
              <p style="font-size:11px;"><?php echo $this->escape($value['label']); ?></p> 
            <?php } else { ?> 
              <?php //echo $lang['public_compare_term']; ?> 
              <?php if($value['period_count']) { ?> 
                <p style="font-size:11px; font-weight:bold;"><?php echo $this->escape($value['period_count']); ?> <?php echo $this->escape($value['period']); ?></p> 
              <?php } else { ?> 
                <p><?php echo $lang['public_compare_lifetime']; ?></p> 
              <?php } ?> 
              <?php if($value['setup_price'] != '0.00') { ?> 
                <p><?php echo $lang['public_compare_setup']; ?>: <?php echo $this->escape(format_number_currency($value['setup_price'])); ?></p> 
              <?php } ?> 
              <?php //echo $lang['public_compare_price']; ?> 
              <?php if($value['price'] != '0.00') { ?> 
                <p style="border-bottom: 1px dashed #FFFFFF; border-top: 1px dashed #FFFFFF; font-size: 14px; font-weight: bold; margin-top: 2px; padding: 2px;">$<?php echo $this->escape($value['price']); ?></p> 
              <?php } else { ?> 
                <p style="border-bottom: 1px dashed #FFFFFF; border-top: 1px dashed #FFFFFF; font-size: 14px; font-weight: bold; margin-top: 2px; padding: 2px;"><?php echo $lang['public_compare_free']; ?></p> 
              <?php } ?> 
            <?php } ?> 
            <p><a href="<?php echo BASE_URL.MEMBERS_FOLDER; ?>user_orders_add_listing.php?pricing_id=<?php echo $value['id']; ?>" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="margin-top:3px;padding:5px;"><?php echo $lang['public_compare_order']; ?></a></p> 
          <?php } ?> 
          </td> 
        <?php } ?> 
        </tr> 

       </table> 
+2

你應該真的應用CSS類到這些列。不要像這樣爲每個單元分別定義樣式! – Brad 2011-05-20 13:30:18

+0

是的,一旦我可以在單元垂直交替而不是水平交替的情況下工作,就可以使用這個類。感謝您的建議 – pertrai1 2011-05-20 14:45:05

回答

0

您在兩個嵌套循環,這是註定要失敗使用$i兩次。也嘗試在第二個foreach循環之前重置它。

+0

感謝您的反饋。我對PHP的深度瞭解不多,所以我正在嘗試獲得一些幫助,以瞭解如何使單元垂直交替而不是水平交替。我只是不太明白PHP的邏輯足以解決這個問題。謝謝 – pertrai1 2011-05-20 14:46:24

1

ok crackknuckles,讓我們試試這個: 從foreach語句中刪除(array),你不需要它。另外,$ i%2!= 0,你不需要所有這些,只需使用$ i%2,它可以是真或假,所以如果($ i%2)將是真或假,你不要「T需要具有兩種不同$ rowstyles的!= 0代替,只是有其中2安裝在你的CSS,並使用短的PHP如果挑哪一個使用,這樣

($i %2 ? 'style1' : 'style2') 

,並把它在你這樣的表格單元格:

<td style="($i %2 ? 'style1' : 'style2')"> 

這將取決於你的$ i是否偶數或奇數交替的樣式。 您還需要確保您的$ i在每行開頭重置爲0,因爲您交替使用列顏色,所以您希望行都以0開頭,以便它們正確排列。您不需要使用$ i來跟蹤行,因爲您不關心它們是什麼顏色,只關心列,只要確保在每次啓動新表格行時將$ i重置爲0即可。