WEB前端第五十九课——时间戳、数据交互小案例


1.时间戳

  程序开发中所说的时间戳,通常是指从1970年1月1日0时到当前时间的毫秒数。

  time()方法,用于获取当前的时间戳,结果为毫秒数。

  date()方法,用于将时间戳结果转换为通常的时间格式。

  语法:date(format,timeStamp);  //format参数用于定义日期时间格式

  时间格式:

    年:Y 4位数年份    y 2位数年份

    月:M 3位英文简写     F 完整英文月份    m 2位数月份  n 无0数字月份

    日:d 2位数月第几天  j 无0补位月第几天 S  月第几天英序数后缀  z 年第几天

    星期:D 3为英文简写  l 完整英文星期几(小写L)

    时:H 24小时制  G 无0 24小时制  h 12小时制  g 无0 12小时制

      A(AM/PM)  a(am/pm)

    分:i 2位数分钟

    秒:s 2位数秒钟

    时区:e 时区标识符  T 时区简写

  注意:年月日与时间之间通常使用“空格”隔开,

     年月日之间的连接符通常使用“-或/”,英文日期多用“空格与of”拼接,时间之间的连接符通常使用“:”。

  代码示例:

<?php
    echo time();
    echo '
'; echo date('Y-m-d H:i:s',time()); echo '
'; echo date('D jS \of F Y h:i:s a'); //可不写 time()方法。 echo '
'; // 设置默认时区 date_default_timezone_set('Asia/Shanghai'); echo date('Y-m-d H:i:s',time()); ?>

2.fetch相关方法

  ⑴ fetchAll($result,resulttype),从结果中获取所有行数据作为关联数组。

    参数result为必需,是由mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果,

    也可以通过result结果集标识符通过指针调用 fetchAll() 方法。

    参数resulttype为可选,用于规定输出那种类型的数组。包括“_ASSOC、_NUM\_BOTH”三种。

  ⑵ fetch_assoc($result),从结果集中获取一行数据作为关联数组。

  ⑶ fetch_row($result),从结果集中获取一行数据作为枚举数组。

  ⑷ fetch_column($result),从结果集中获取一列数据作为枚举数组。

  注意:在PHP PDO中有很多关于 fetch 的预定义常量,可以通过 PDO调用。

3.前后台交互案例

  新增、删除、修改、文章详情小案例

  数据库表结构:

   ⑴ index.php页面

    注意链接数据库时,使用 try{}catch(){} 固定格式,便于连接异常问题分析;

    首页界面设计包括 页面布局和数据库取数逻辑,HTML代码和PHP代码穿插结合使用;

    在HTML中引用PHP代码时,需要使用<?php ?>标识包裹;

    在PHP中引用HTML代码时,需要使用标签包裹;

    使用 table 列表展示文章列表,PHP获取数据库数据时,通过字符串拼接的方式生成行。

<?php
    try{
        $con = new PDO("mysql:host=localhost;dbname=dbTest","root","");
        $con->exec('set names utf8');       //也可以在上述PDO()方法的第一个参数中添加“charset=utf8”
        $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
        $sql = "select * from news where 1";
        $res = $con->query($sql);
        $resInfo = $res->fetchAll(PDO::FETCH_ASSOC);
//        print_r($resInfo);
        $newsInfo = "";
        if($res){
            for($i=0;$ialert("数据为空")';
        }                             
    }catch(PDOException $e){
        echo '数据库连接失败!错误信息:'.$e->getMessage();
    }
?>




    
    
    
    秋香news
    
    
    
    
    

    


<?php echo $newsInfo; ?>
ID 标题 作者 文章概要 时间 操作

  ⑵ create.html 新增文章页面

    使用 form 表单形式创建界面,表单提交的字段 name 须与后台接收字段名一致!

    BootStrap 组件中,label标签的 for 属性值与input标签的 id 属性值必须保持一致!




    
    
    
    新增文章
    
    
    
    
    

    


  ⑶ submit.php提交数据页面

    可使用“$_GET”或“$_POST”方法接收前台页面发送的数据,方法在 form method属性中定义;

    接收数据时可以使用 三目运算 判断字段值是否为空的情况;

    操作时间直接使用 time() 方法生成系统时间,不需要接收;

    注意设置默认时区,方法:date_default_timezone_set('Asia/Shanghai');

    调用字段值时,使用“{}”包裹变量;

    使用“echo()”方法向前台返回数据,返回内容可以是 '; }else{ echo "创建失败!"; } }else{ $sql="update news set title='{$title}',author='{$author}',summary='{$summary}',content='{$content}',time='{$time}' where id='{$id}'"; $res=$con->query($sql); if($res){ // 返回操作信息,可以直接在PHP中返回js语句给前台 echo ''; }else{ echo "修改失败!"; } } }catch(PDOException $e){ echo "数据库连接失败!错误信息:".$e->getMessage(); } ?>

  ⑷ delnews.php 删除数据

    删除、修改、详情操作均通过在前台定义标签的方式,发送操作指令;

    在标签中设置href链接地址,url后接“?”将当前操作id发送至后台;

    后台使用“$_GET”方法接收id值,判断删除对应的数据行。

<?php
    $id=isset($_GET['id'])?$_GET['id']:'';
    if($id){
        try{
            $con=new PDO('mysql:host=localhost;dbname=dbTest;charset=utf8','root','');
            $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    //        接收信息写入数据库,SQL接收数据字段时使用 {} 提取
            $sql="delete from news where id={$id}";
            $res=$con->query($sql);
            if($res){
    //        返回操作信息,可以直接在PHP中返回js语句给前台
                echo '';
            }else{
                echo "删除失败!";
            }
        }catch(PDOException $e){
            echo "数据库连接失败!错误信息:".$e->getMessage();
        }
    }else{
        echo "删除数据ID不存在!";
    }
?>

  ⑸ updnews.php 修改数据

    获取操作数据行id后查询数据库,同新增数据页面样式展示目标数据;

    在 input value属性中设置 PHP 输出代码,将查询数据展示到界面;

    提交数据可以与新增提交共用后台逻辑,使用if判断新增还是修改。

<?php
    $id=isset($_GET['id'])?$_GET['id']:'';
    if($id){
        try{
            $con=new PDO('mysql:host=localhost;dbname=dbTest;charset=utf8','root','');
            $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    //        接收ID值,通过id查询该条数据,使用 {} 获取id。
            $sql = "select * from news where id={$id}";
            $res = $con->query($sql);
            $resInfo = $res->fetchAll(PDO::FETCH_ASSOC);
//            print_r($resInfo);
        }catch(PDOException $e){
            echo "数据库连接失败!错误信息:".$e->getMessage();
        }
    }else{
        echo "数据查询失败!";
    }
?>



    
    
    
    新增文章
    
    
    
    
    

    


  ⑹ update.php 提交修改数据

<?php
    $id=isset($_POST['inputId'])?$_POST['inputId']:'';
    if($id){
        $title=isset($_POST['inputTitle'])?$_POST['inputTitle']:'';
        $author=isset($_POST['inputAuthor'])?$_POST['inputAuthor']:'';
        $summary=isset($_POST['inputSummary'])?$_POST['inputSummary']:'';
        $content=isset($_POST['inputContent'])?$_POST['inputContent']:'';
        date_default_timezone_set('Asia/Shanghai');
        $time=date('Y-m-d H:i:s',time());
        try{
            $con=new PDO("mysql:host=localhost;dbname=dbTest;charset=utf8","root","");
            $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $sql="update news set title='{$title}',author='{$author}',summary='{$summary}',content='{$content}',time='{$time}' where id='{$id}'";
            $res=$con->query($sql);
            if($res){
                echo '';
            }else{
                echo "";
            }
        }catch(PDOException $err){
            echo "当前数据id不存在!".$err->getMessage();
        }
    }
?>

  ⑺ detailnews.php 查询详情

    在PHP中通过id查询操作数据,然后在HTML中展示结果;

    HTML中展示查询结果时,使用PHP代码获取数据。

<?php
    $id=isset($_GET['id'])?$_GET['id']:'';
    if($id){
        try{
            $con = new PDO("mysql:host=localhost;dbname=dbTest","root","");
            $con->exec('set names utf8');       //也可以在上述PDO()方法的第一个参数中添加“charset=utf8”
            $con->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            $sql = "select * from news where id='{$id}'";
            $res = $con->query($sql);
            $resInfo = $res->fetchAll(PDO::FETCH_ASSOC);
//            print_r($resInfo);
        }catch(PDOException $e){
            echo '数据库连接失败!错误信息:'.$e->getMessage();
        }
    }
?>




    
    
    
    news正文
    
    
    
    
    

    


<?php echo $resInfo[0]['title'] ?>

<?php echo $resInfo[0]['author']?> <?php echo $resInfo[0]['time'] ?>

<?php echo $resInfo[0]['summary'] ?>

<?php echo $resInfo[0]['content'] ?>