1

好的,很抱歉这段代码太乱了,但我创建了一个带有 html 文本区域表单的表格,它充当一种日历,供用户标记他们何时将在哪一天做什么。我在下面的代码中显示了周一 - 周日,但日历中总共有 4 周或 4 组周一至周日。

我想知道我是否能够使用 php 代码来放置每个月的日期;即每行/列的第 1-31 个取决于当时的月份?

如果他们能告诉我如何做到这一点,我将非常感谢任何人的帮助,我知道这看起来不是一个很好的方法,但我确实需要这样做。谢谢

<table width="100%" border="0" cellspacing="5" cellpadding="5">
      <tr>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Monday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Tuesday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Wednesday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Thursday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Friday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Saturday</th>
        <th width="11.5%" align="center" valign="middle" bgcolor="#EBEBEB" scope="col">Sunday</th>
       </tr>
        <tr>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_monday1.php" method="post" id="form1">         
     <textarea id="monday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="monday1" data-id="monday1" onkeyup="checkWordCount();"><?php echo $calendar['monday1'] ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_tuesday1.php" method="post" id="form1">            
     <textarea id="bio" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="tuesday1" data-id="tuesday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['tuesday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_wednesday1.php" method="post" id="form1">          
     <textarea id="wednesday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="wednesday1" data-id="wednesday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['wednesday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_thursday1.php" method="post" id="form1">           
     <textarea id="thursday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="thursday1" data-id="thursday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['thursday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_friday1.php" method="post" id="form1">         
     <textarea id="friday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="friday1" data-id="friday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['friday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_saturday1.php" method="post" id="form1">           
     <textarea id="saturday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="saturday1" data-id="saturday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['saturday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
        <th width="11.5%" height="55" align="left" valign="middle" bgcolor="#FFFFFF" scope="col"><form action="includes/mod_profile/mod_calendar/includes/change_sunday1.php" method="post" id="form1">         
     <textarea id="sunday1" style="width:79px; 
        margin-top:-31.1px;
        text-align:left;
        margin-left:-3px;
        height: 60px;
        position:absolute;
        z-index:90;
        resize: none; 
        border: hidden;" textarea name="sunday1" data-id="sunday1" onkeyup="checkWordCount();"><?php echo htmlspecialchars($calendar['sunday1']); ?></textarea>
    <input type="image" src="../PTB1/assets/img/icons/save-edit.png"class="cal-submit" width="12px" height="12px" name="submit" value="submit" id="submit"/>
    </form></th>
       </tr>
       <tr>
4

1 回答 1

0

这会将您的日期定位在正确的列中 - 只需将您需要的任何内容添加到 printCalendar() 的内部循环中:

<?php
function getCalendarRows($year,$month)
{
    $result=array();
    $dt=new DateTime(sprintf('%04d-%02d-01',$year,$month));
    $weekDay=$dt->format('w'); //Weekday of the first
    $nextMonth=$month==12?1:$month+1;
    $nextMonthYear=$nextMonth==1?$year+1:$year;
    $dt=new DateTime(sprintf('%04d-%02d-01',$nextMonthYear,$nextMonth));
    $dt->sub(new DateInterval('P1D')); //last day of the month
    $row=array();
    $lastDay=$dt->format('j');
    //Start the first row with empty columns (false)
    for($i=0; $i<$weekDay; $i++)$row[]=false; 
    for($i=1; $i<=$lastDay; $i++)
    {
        $row[]=$i;
        $weekDay++;
        if($weekDay>6)
        {
            $result[]=$row;
            $row=array();
            $weekDay=0;
        }
    }
    if($weekDay>0) 
    {
        //Fill up the last row with empty columns
        for($i=$weekDay+1; $i<7; $i++) $row[]=false;
        $result[]=$row;
    }
    return $result;
}

function printCalendar($year,$month)
{
    $rows=getCalendarRows($year,$month);
    echo '
<table>
    <tr>
        <th>Sunday</th><th>Monday</th><th>Tuesday</th><th>Wednesday</th><th>Thursday</th><th>Friday</th><th>Saturday</th>
    </tr>';
    foreach($rows as $row)
    {
        echo '
    <tr>';
        foreach($row as $weekday=>$date)
        {
            echo '
        <td width="50px" height="50px">'.($date===false?'':$date).'</td>';
//Put whatever else you want in here, you have $year, $month, $date, and $weekday (0 to 6)
//NOTE - if $date===false, this is an empty column
        }
        echo '
    </tr>';
    }
    echo '
</table>';
}
echo '
<h1>Jan 2013</h1>';
printCalendar(2013,01);
echo '
<h1>Feb 2013</h1>';
printCalendar(2013,02);
echo '
<h1>Mar 2013</h1>';
printCalendar(2013,03);
echo '
<h1>Dec 2013</h1>';
printCalendar(2013,12);
?>

这里是 phpfiddle:http ://phpfiddle.org/main/code/3vf-1z0 (我更改了 DateTime 构造函数调用,因为 sprintf 在 phpfiddle 上不起作用)

于 2013-01-02T06:56:45.880 回答