2013-11-04 79 views
0

這可能是一個相對簡單的PHP腳本,但在嘗試了一段時間之後,我很茫然。基於當月的隱藏表格

我有一系列的表(見下文),我想自動隱藏月份已經過去的表。我正在考慮使用PHP來生成嵌入式CSS來實現這一點。我需要一個腳本,基本上做到這一點:

<?php $x=1; 
do 
{ 
echo "div.y!CURRENTYEAR!" 
echo "$x;," 
$x=$x+1; 
} 
while ($x < CURRENTMONTH) 
?> 

我基本上希望腳本寫出來:

div.y2013 .jan,div.y2013 .feb,div.y2013 .mar

等等,直到它到達當前月份,這樣我就可以隱藏它剛纔列出的所有表格。我不確定如何獲取數字值並將該數字轉換爲這個purpsoe的三個字母的月份代碼,或者使用各種日期格式代碼可以更簡單地完成此操作。

我不能真正做的一件事是修改下面的標記。

<div class="y2013"> 
<table class="month jan">...data...</table> 
<table class="month feb">...data...</table> 
<table class="month mar">...data...</table> 
... 
<table class="month dec">...data...</table> 
</div> 

<div class="y2014"> 
<table class="month jan">...data...</table> 
<table class="month feb">...data...</table> 
<table class="month mar">...data...</table> 
... 
<table class="month dec">...data...</table> 
</div> 

編輯:

我已經嘗試沒有成功如下:

<?php 
function int2month($int) 
{ 
    switch($int) 
{ 
    case 1: return "jan"; 
    case 2: return "feb"; 
    case 3: return "mar"; 
    case 4: return "apr"; 
    case 5: return "may"; 
    case 6: return "jun"; 
    case 7: return "jul"; 
    case 8: return "aug"; 
    case 9: return "sep"; 
    case 10: return "oct"; 
    case 11: return "nov"; 
    case 12: return "nov"; 
    default: return "dec"; 
} 
} 
$x=1; 
do 
{ 
    echo "div.y<?php echo date('Y'); ?> 
" 
    echo int2month($x).","; 
    $x=$x+1; 
} 
while ($x < date(n)) 
?> 

編輯:終極密碼的作品:

<?php 

function int2month($int) 
{ 
    switch($int) 
    { 
     case 1: return "jan"; 
     case 2: return "feb"; 
     case 3: return "mar"; 
     case 4: return "apr"; 
     case 5: return "may"; 
     case 6: return "jun"; 
     case 7: return "jul"; 
     case 8: return "aug"; 
     case 9: return "sep"; 
     case 10: return "oct"; 
     case 11: return "nov"; 
     case 12: 
     default: return "dec"; 
    } 
} 
$i = 1; 
while ($i < date('m')): 
    echo "div.y" . date('Y') . " ."; 
    echo int2month($i) . ", "; 
    $i=$i+1; 
endwhile; 

echo ".place {display:none!important;}"; 
?> 

回答

2

簡單的功能如何?

<?php 
function int2month($int) 
{ 
    switch($int) 
    { 
     case 1: return "jan"; 
     //....... 
     case 11: return "nov"; 
     case 12: 
     default: return "dec"; 
    } 
} 
$x=1; 
do 
{ 
    echo "div.y!CURRENTYEAR!" 
    echo int2month($x).","; 
    $x=$x+1; 
} 
while ($x < CURRENTMONTH) 
?> 
+0

這不是因爲我改變了它。我做錯了什麼? –

+0

我試過並在原帖中粘貼了我的結果。有任何想法嗎? –

+0

謝謝@Christine,我最終改變了你的代碼(而不是一邊做的聲明,等等)謝謝! –

1

我覺得最好的方法是添加一個cs在過去的幾個月中, PHP。

這樣你可以設置display: none;到課堂上。

生成的HTML應該是這樣的:

HTML: 
<div class="y2013"> 
<table class="month jan passed">...data...</table> 
<table class="month feb passed">...data...</table> 
<table class="month mar passed">...data...</table> 
... 
<table class="month dec">...data...</table> 
</div> 

CSS: 
.passed {display: none;} 

編輯:

用PHP生成的選擇,你得到的東西是這樣的:

.y2012, .y2013 .jan, .y2013 .feb, .y2013 .mar, .... {dispaly: none;} 
+0

非常感謝hugo,但不幸的是我無法輕鬆編輯HTML標記。它是由一個相當複雜的第三方工具生成的,我沒有提到的是,這些頁面中有大約30個都具有相同的HTML日曆標記,並且全部由幾十個人更新。 –

+0

@Nathan S你能用php生成一個css文件嗎?否則你將不得不使用javascript –

+0

我可以使用PHP來生成嵌入式CSS,所以如果我關注你,也會得到相同的結果。 –