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

依此类推,直到它到达当前月份,这样我就可以隐藏它刚刚列出的所有表格。我不确定如何获取一个数值并将该数字转换为这个目的的三个字母的月份代码,或者使用各种日期格式代码可能有一种更简单的方法。

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

<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;}";
?>
4

2 回答 2

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)
?>
于 2013-11-04T18:03:27.627 回答
1

我认为最好的方法是为过去的几个月添加一个 CSS 类。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;}
于 2013-11-04T18:00:02.750 回答