日历显示的PHP程序

日历显示的PHP程序

  • 点击日期后,捋显示当天的预定内容和追加按钮。
  • 点击添加按钮后,捋显示可输入当天约会的HTML Form
  • 利用预定输入的HTML Form点击保存按钮,可保存输入内容
  • 提示:内容可以保存在COOKIE里

展示界面

实现思路

利用GET请求判断输出哪个页面,用函数进行输出

if (isset($_GET["day"]) && isset($_GET["date"])) {
    
    $date = $_GET["date"] . "-" . $_GET["day"];
    //指定日期的提醒事项
    dayPage($date);
} elseif (isset($_GET["save"]) && isset($_GET["msg"]) && isset($_GET["adate"])) {
    
    $gmsg = htmlspecialchars($_GET["msg"]); //安全文字
    //保存信息页面
    savePage($_GET["adate"], $gmsg);
} elseif (isset($_GET["adate"]) && isset($_GET["add"])) {
    //追加内容页面
    addPage($_GET["adate"]);
} else {
    //什么请求都没有的,初始的日历页面,或者a,b切换日历
    initPage();
}

1. 初始的日历页面

默认显示当前的年月日历,可以点击上一年进行调整

日历界面

代码:

在点击<<上一年的时候,会发送GET请求$as = a − 1 , 切 换 为 上 一 年 的 日 历 在 点 击 < < 上 个 月 的 时 候 , 会 发 送 G E T 请 求 a-1,切换为上一年的日历 在点击<<上个月的时候,会发送GET请求a1<<GETbs = $b-1,切换为上个月的日历

function initPage()
{
    //初始的日历页面
    date_default_timezone_set("ETC/GMT-8");//获取北京时间
    if (isset($_GET["a"])) { //a、b为日历显示的年月
        $a = $_GET["a"];
    } else {
        $a = date('y');
    }
    if (isset($_GET["b"])) {
        $b = $_GET["b"];
        if ($b > 12) {
            $b = 1;
            $a++;
        }
        if ($b < 1) {
            $b = 12;
            $a--;
        }
    } else {
        $b = date('m');
    }
    $noe = mktime(0, 0, 0, $b, 1, $a); //获取当前的月的一号
    $year = date("Y", $noe); //当前的年
    $month = date("m", $noe); //当前的月
    $week = date("w", $noe); // 每个月的一号是星期几
    $days = date("t", $noe); //每个月的总天数

    $as = $year - 1; //获取上一年的年
    $bs = $month - 1; //获取上个月
    $bx = $month + 1; // 获取下个月
    $ax = $year + 1; //获取下一年
    //初始的日历页面
    global $header, $footer;
    echo <<< "EOM"
    {$header}
    <div>
        <h1>{$year}{$month}</h1>
        <form>
        <input type="radio" name="date" value="{$year}-{$month}" checked style="display:none">
    <table cellpadding='3px' cellspacing='3px'>   
    <tr>
    <th><a href="?a={$as}&b={$b}" ><<上一年</a></th>
    <th><a href="?a={$a}&b={$bs}" ><<上个月</a></th>
    <th>&nbsp;</th>
    <th><a href="?a={$a}&b={$bx}" >下个月>></a></th>
    <th><a href="?a={$ax}&b={$b}" >下一年>></a></th>
  </tr>
    <tr><th>星期日</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th></tr>
    <tr>
EOM;
    for ($i = 0; $i < $week; $i++) {
        echo "<td>&nbsp;</td>"; //获取当月一号前面的空格
    }
    for ($k = 1; $k <= $days; $k++) {
        echo "<td><input type='submit' name='day' value='{$k}' style='border:0;background:white;'></td>"; //输出当月天数
        if (($k + $week) % 7 == 0) {
            echo "</tr><tr>"; // 一周七天换行
        }
    }
    echo "</tr></table></form></div>";
    echo $footer;
}

2. 追加内容页面

根据GET请求的add和date,展示要追加内容的日期,内容通过GET发送到保存页面进行保存

代码:
function addPage($adate)
{
    //追加内容页面
    global $header, $footer;
    echo <<< "EOM"
    {$header}
    <div><h1>{$adate}の予定</h1>
    <form>
    <textarea name='msg'cols='80'rows='6'></textarea></br><br>
    <input type='radio' name='adate' value='{$adate}' checked style='display:none'>
    <input type='submit' name='save' value='保存' style='float:right'>
    </form>
    </div>
    {$footer}
EOM;
}

3. 保存信息页面

先看当前日期是否有提醒事项保存,然后对字符串进行拼接,再次存入当前日期的cookie里,以便下次读取。

代码:
function savePage($adate, $gmsg)
{
    //保存信息页面
    global $header, $footer;
    if (isset($_COOKIE[$adate])) {
        $msg = $_COOKIE[$adate]; //读取保存的注意事项
        $msg = $msg . "<li>" . $gmsg . "</li>";
    } else {
        $msg = "<li>" . $gmsg . "</li>";
    }

    setcookie($adate, $msg, time() + 60 * 60 * 24 * 30);
    echo $header;
    echo  "<div><h1>登録しました</h1>";
    echo "<a href='?' style='float:right;'>カレンダーを戻る</a></div>"; //返回日历页面
    echo $footer;
}

4. 提醒事项页面

读取保存在当前日期的cookie。

代码:
function dayPage($date)
{
    //提醒事项页面,追加按钮
    global $header, $footer;
    if (isset($_COOKIE[$date])) {
        $daily = $_COOKIE[$date]; //保存提醒事项
    } else {
        $daily = "<li>ない</li>";
    }
    echo $header;

    echo <<< "EOM"
    <div><h1>{$date}</h1>
    <ul>{$daily}</ul>
    <form>
    <input type='submit' name='add' value='追加' style="float:right;">
    <input type='radio' name='adate' value='{$date}' checked style='display:none'>
    </form>
EOM;
    echo $footer;
}

5. 代码美化

可以放在php文件的最开始的地方

// HTML Header
$header = "<!DOCTYPE html><html lang='ja'><head>
<meta charset='UTF-8'><title>18160217</title>
<style>
td{text-align:center;}
h1{align:center;margin-left:100px;}
div{width:600px;}
</style></head><body>";
//HTML Footer
$footer = "</body></html>";

日历显示部分主要参考了:PHP实现的日历功能示例 https://www.jb51.net/article/146675.htm 部分修改

最后的话

如果要展示所有效果,把所有代码块里的代码复制到php文件里即可,

<?php 代码。。。

版权声明:本文为weixin_43057454原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。