zoukankan      html  css  js  c++  java
  • ThinkPHP 笔记

    〇、通过composer安装thinkphp5

    1、下载安装composer-setup.exe,

    2、通过composer config -g repo.packagist composer https://packagist.laravel-china.org修改下载所用的镜像文件的地址

    3、通过composer create-project topthink/think tp5 下载最新的tp框架并命名为tp5

    一、phpstudy的配置

    1、修改站点域名

    2、修改hosts文件

    3、更改phpstudy所使用的PHP的默认版本

    二、think PHP配置

    1、config配置

    a)      // 应用调试模式 ‘app_debug’ => true

    b)      // 配置强制路由 ‘url_route_must’ => true

    c)      // 配置完整路由 ‘route_complete_match’ => true

    2、 database配置

    a)      ‘database’=>’tp_goj’

    b)      ‘password’=>’root’

    c)      // 数据库的调试模式 ‘debug’=>false

    d)      //自动写入时间戳字段 ‘auto_timestamp’=>true

    三、数据库

    1、考虑到数据的重要性,所有的删除操作都是软删除 (user SoftDelete;),所以表的设计要加上delete_time。

    四、MVC模式的思路

     

    五、控制器

    1、创建一个新的空的控制器

           php think make:controller admin/Index –plain

    2、控制器主要用于传递数据,不过遇到逻辑处理很少的情况也是可以用来做的,比如说简单的关联删除也是可以在控制器中完成的

    public function cateDel()
    {
        $cateInfo = model('Cate')->with('article')->find(input('post.id'));                
        $result = $cateInfo->together('article')->delete();
        if ($result == 1) {
            $this->success('栏目删除成功', 'admin/cate/catelist');
        } else {
            $this->error('栏目删除失败!');
        }
    }

    六、模型

    1、创建一个模型供前后台使用

           php think make:model common/Admin

    2、模型中的类名对应数据库中表的名称

    3、模型中调用验证器

           $validata->scene(‘login’)->check($data)

    4、模块的关联(注:通过模块的关联可以实现数据的关联操作)

    public function cate()
    {
        return $this->belongsTo('Cate', 'cate_id', 'id');
    }

    七、tp进行数据库相关的操作

    1、表的查询(首先要使用use关键字声明Db类)

    $result = Db::table(‘表名’)->where(‘序列化后的待查数据’)->find();

    2、数据的添加(只添加数据库中有的字段)

    $result = $this->allowField(true)->save($data);

    3、数据的修改

    $result = $this->isUpdate(true)->save($data);

    4、数据的删除

    $result = $articleInfo->delete();

    5、按条件查询并返回指定值

     

    6、加上limit可以限制查询的条数

     

    7、将单个字段自增

     

    8、模糊匹配

     

    9、进行一对一的关联查询

    ①controller

    $news = model('News')->with('admin')->order('create_time', 'desc')->limit(5)->select();

    ②model(关联模型,PS:这里是一对多,一个作者可以有多个news)

    public function admin()
    {
        return $this->belongsTo('Admin', 'admin_id', 'id');
    }

    10、关联删除,使用together字段

    $result = $problemInfo->together('testdata')->delete();

    八、TP操作页面

    1、标记复选框是否被选中

    {if $articleInfo.is_top == 1} checked{/if}

    2、循环输出select中的option

    {volist name="cates" id="vo"}
    <option value ="{$vo.id}">{$vo.catename}</option>
    {/volist}

    3、tp处理元数据(在后面加raw)

     

    4、tp验证码

     

    九、PHP基本函数

     

    十、各种需要的包的下载

    1、PHPMailer的下载

    composer require phpmailer/phpmailer

    路由配置 route/route.php 文件进行配置
    // 不带参数,rule('浏览器显示的url', '对应的控制器', '请求方法')
    Route::rule('userbaseedit', 'index/user/userbaseedit', 'post');

    // 带参数,通过[:id]来携带参数
    Route::rule('question/[:id]', 'index/question/question', 'get|post');
    <a href="{:url('index/question/question', ['id' => $vo.id])}">前端使用</a>
       
    // 通过 group 来指定分组
    Route::group('admin', function () {
       // 使用方法与上面类似
    });

    通过 $this->assign(数据) 将控制器中的数据渲染到视图中

    通过 return view(); 跳转到指定视图中,默认跳转当前控制器对应的路由

     

    USER-Validate:

    <?php
    /**
     * Created by PhpStorm.
     * User: Admin
     * Date: 2019/4/22
     * Time: 15:28
     */
    
    namespace appcommonvalidate;
    
    
    use thinkValidate;
    
    class User extends Validate
    {
        protected $rule = [
            'username|用户名' => 'require|unique:user|max:25',
            'email|邮箱' => 'require|unique:user|email|max:25',
            'password|密码' => 'require|min:6|max:25',
            'conpass|确认密码' => 'require|confirm:password',
            'qq|QQ号' => 'number|max:25',
            'blog|博客' => 'max:50',
            'sign|个性签名' => 'max:1000',
            'oldpass|原密码' => 'require',
            'newpass|新密码' => 'require|min:6|max:25'
        ];
    
        // 用户注册
        public function sceneRegister()
        {
            return $this->only(['username', 'email', 'password', 'conpass']);
        }
    
        // 用户注册,发送验证码
        public function sceneVerify()
        {
            return $this->only(['email']);
        }
    
        // 用户登录
        public function sceneLogin()
        {
            return $this->only(['username', 'password'])->remove('username', 'unique');
        }
    
        // 忘记密码发送验证码
        public function sceneVerifyforget()
        {
            return $this->only(['email'])->remove('email', 'unique');
        }
    
        // 修改密码
        public function sceneForget()
        {
            return $this->only(['email', 'password', 'conpass'])
                ->remove('email', 'unique');
        }
    
        // 修改基本信息
        public function sceneBaseEdit()
        {
            return $this->only(['qq', 'blog', 'sign']);
        }
    
        // 密码修改
        public function scenePassEdit()
        {
            return $this->only(['password', 'conpass']);
        }
    
        // 后台修改用户的信息
        public function sceneAdminEdit()
        {
            return $this->only(['newpass']);
        }
    
        // 后台用户的添加
        public function sceneAdminAdd()
        {
            return $this->only(['username', 'email', 'password']);
        }
    }

    USER-Controller:

    <?php
    
    namespace appindexcontroller;
    
    use thinkController;
    use thinkRequest;
    
    class User extends Controller
    {
        //查看用户的信息
        public function userInfo()
        {
            $userinfo = model('User')->where('id', input('id'))->find();
            $today = date('Y-m-d');
            $day_1 = date('Y-m-d', strtotime("-1 day"));
            $day_1_0 = strtotime(date('Y-m-d 00:00:00'));
            $day_2 = date('Y-m-d', strtotime("-2 day"));
            $day_2_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-1 day")));
            $day_3 = date('Y-m-d', strtotime("-3 day"));
            $day_3_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-2 day")));
            $day_4 = date('Y-m-d', strtotime("-4 day"));
            $day_4_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-3 day")));
            $day_5 = date('Y-m-d', strtotime("-5 day"));
            $day_5_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-4 day")));
            $day_6 = date('Y-m-d', strtotime("-6 day"));
            $day_6_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-5 day")));
            $day_7_0 = strtotime(date('Y-m-d 00:00:00', strtotime("-6 day")));
            $days = json_encode([$day_6, $day_5, $day_4, $day_3, $day_2, $day_1, $today]);
    
            $todaysubnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '>', $day_1_0)->count();
            $day_1subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_1_0)->where('create_time', '>', $day_2_0)->count();
            $day_2subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_2_0)->where('create_time', '>', $day_3_0)->count();
            $day_3subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_3_0)->where('create_time', '>', $day_4_0)->count();
            $day_4subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_4_0)->where('create_time', '>', $day_5_0)->count();
            $day_5subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_5_0)->where('create_time', '>', $day_6_0)->count();
            $day_6subnum = model('Quessub')->where('user_id', input('id'))->where('create_time', '<', $day_6_0)->where('create_time', '>', $day_7_0)->count();
            $usersubnum = json_encode([$day_6subnum, $day_5subnum, $day_4subnum, $day_3subnum, $day_2subnum, $day_1subnum, $todaysubnum]);
            $todayacnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '>', $day_1_0)->count();
            $day_1acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_1_0)->where('create_time', '>', $day_2_0)->count();
            $day_2acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_2_0)->where('create_time', '>', $day_3_0)->count();
            $day_3acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_3_0)->where('create_time', '>', $day_4_0)->count();
            $day_4acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_4_0)->where('create_time', '>', $day_5_0)->count();
            $day_5acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_5_0)->where('create_time', '>', $day_6_0)->count();
            $day_6acnum = model('Quessub')->where('user_id', input('id'))->where('judge_status', '=', '2')->where('create_time', '<', $day_6_0)->where('create_time', '>', $day_7_0)->count();
            $useracnum = json_encode([$day_6acnum, $day_5acnum, $day_4acnum, $day_3acnum, $day_2acnum, $day_1acnum, $todayacnum]);
    
            $quessubs = model('Quessub')->with('question')->where('user_id', session('user.id'))->order('create_time', 'desc')->limit(5)->select();
            $quessub_page = model('Quessub')->with('question')->where('user_id', input('id'))->order('create_time', 'desc')->paginate(10);
    
    
            $viewData = [
                'userinfo' => $userinfo,
                'usersubnum' => $usersubnum,
                'useracnum' => $useracnum,
                'days' => $days,
                'quessubs' => $quessubs,
                'quessub_page' => $quessub_page
            ];
            $this->assign($viewData);
            return view('userinfo');
        }
    
        //修改用户的基本信息
        public function userBaseEdit()
        {
            if (request()->isAjax()) {
                $data = [
                    'email' => input('post.email'),
                    'qq' => input('post.qq'),
                    'blog' => input('post.blog'),
                    'sign' => input('post.sign'),
                ];
                $result = model('User')->baseEdit($data);
                if ($result == 1) {
                    $this->success('基本信息修改成功');
                } else {
                    $this->error($result);
                }
            }
            return view('userbaseedit');
        }
    
        //修改用户的密码
        public function userPassEdit()
        {
            if (request()->isAjax()) {
                $data = [
                    'id' => session('user.id'),
                    'oldpass' => input('post.oldpass'),
                    'password' => input('post.password'),
                    'conpass' => input('post.conpass')
                ];
                $result = model('User')->passEdit($data);
                if ($result == 1) {
                    $this->success('密码修改成功');
                } else {
                    $this->error($result);
                }
            }
            return view('userpassedit');
        }
    }

    USER-Modal:

    <?php
    
    namespace appcommonmodel;
    
    use thinkModel;
    use thinkmodelconcernSoftDelete;
    
    class User extends Model
    {
        // 软删除
        use SoftDelete;
    
        // 用户注册
        public function register($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('register')->check($data)) {
                return $validate->getError();
            }
            if ($data['verify'] != session('verify')) {
                return '验证码不正确';
            }
            $data['password'] = md5($data['password']);
            $result = $this->allowField(true)->save($data);
            if ($result) {
                $resultFind = $this->where('username', '=', $data['username'])->find();
                session('user', ['id' => $resultFind['id'], 'username' => $resultFind['username']]);
                return 1;
            } else {
                return '注册失败!';
            }
        }
    
        // 用户注册发送验证码
        public function verify($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('verify')->check($data)) {
                return $validate->getError();
            }
            $subject = '验证码--GetcharZp';
            $content = '您的验证码为'.session('verify');
            if(email($data['email'], $subject, $content)) {
                return 1;
            } else {
                return '验证码发送失败';
            }
        }
    
        // 找回密码发送验证码
        public function verifyforget($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('verifyforget')->check($data)) {
                return $validate->getError();
            }
            $result = $this->where($data)->find();
            if (!$result) {
                return '邮箱未注册';
            }
            $subject = '验证码--GetcharZp';
            $content = '您的验证码为'.session('verify');
            if(email($data['email'], $subject, $content)) {
                return 1;
            } else {
                return '验证码发送失败';
            }
        }
    
        // 用户登录
        public function login($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('login')->check($data)) {
                return $validate->getError();
            }
            $data['password'] = md5($data['password']);
            $result = $this->where($data)->find();
            if ($result) {
                session('user', ['id' => $result['id'], 'username' => $result['username']]);
                return 1;
            } else {
                $data_email = [];
                $data_email['email'] = $data['username'];
                $data_email['password'] = $data['password'];
                $result = $this->where($data_email)->find();
                if ($result) {
                    session('user', ['id' => $result['id'], 'username' => $result['username']]);
                    return 1;
                } else {
                    return '用户名或密码错误';
                }
            }
        }
    
        // 忘记密码修改密码
        public function forget($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('forget')->check($data)) {
                return $validate->getError();
            }
            if ($data['verify'] != session('verify')) {
                return '验证码输入不正确';
            }
            $userInfo = $this->where('email', $data['email'])->find();
            if ($userInfo['password'] == md5($data['password'])) {
                return '新密码与原密码相同,请重试';
            }
            $userInfo->password = md5($data['password']);
            $result =$userInfo->save();
            if ($result) {
                return 1;
            } else {
                return '密码修改失败';
            }
        }
    
        // 修改用户的基本信息
        public function baseEdit($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('baseEdit')->check($data)) {
                return $validate->getError();
            }
            $userInfo = $this->where('email', $data['email'])->find();
            $userInfo->qq = $data['qq'];
            $userInfo->blog = $data['blog'];
            $userInfo->sign = $data['sign'];
            $result = $userInfo->save();
            if ($result) {
                return 1;
            } else {
                return '信息修改失败';
            }
        }
    
        // 密码修改
        public function passEdit($data)
        {
            $userInfo = $this->where('id', $data['id'])->find();
            if ($userInfo['password'] != md5($data['oldpass'])) {
                return '原密码输入不正确';
            }
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('passEdit')->check($data)) {
                return $validate->getError();
            }
            if ($userInfo['password'] == md5($data['password'])) {
                return '您的原密码与新密码一致';
            }
            $userInfo->password = md5($data['password']);
            $result = $userInfo->save();
            if ($result) {
                return 1;
            } else {
                return '密码修改失败!';
            }
        }
    
        // 后台修改用户信息
        public function adminEdit($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('adminEdit')->check($data)) {
                return $validate->getError();
            }
            $userInfo = $this->find($data['id']);
            $userInfo->password = md5($data['newpass']);
            $result = $userInfo->save();
            if ($result) {
                return 1;
            }else {
                return '新密码与原密码一样';
            }
        }
    
        // 后台添加用户
        public function adminAdd($data)
        {
            $validate = new appcommonvalidateUser();
            if (!$validate->scene('adminAdd')->check($data)) {
                return $validate->getError();
            }
            $data['password'] = md5($data['password']);
            $result = $this->allowField(true)->save($data);
            if ($result) {
                return 1;
            }else {
                return '添加失败!';
            }
        }
    }

    USER-View:

    {include file="public/_head" /}
    <div style="padding: 20px; background-color: #F2F2F2;">
        <div class="layui-row layui-col-space15">
            {if session('?user.id')}
            <div class="layui-col-md9">
            {else /}
            <div class="layui-col-md12">
            {/if}
                <div class="layui-card">
                    <div class="layui-card-header">
                        <a href="{:url('index/user/userinfo', ['id'=>$userinfo.id])}">{$userinfo.username}</a>
                    </div>
                    <div class="layui-card-body">
                        <div class="layui-card">
                            {if session('user.id') == $userinfo.id}
                            <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                                <ul class="layui-tab-title">
                                    <li class="layui-this">Setting Base</li>
                                    <li>Setting Password</li>
                                </ul>
                                <div class="layui-tab-content">
                                    <div class="layui-tab-item layui-show">
                                        <div class="layui-card-body">
                                            <form class="layui-form layui-form-pane " action="">
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">email</label>
                                                    <div class="layui-input-inline">
                                                        <input name="email" class="layui-input" type="text" placeholder="请输入email" autocomplete="off" value="{$userinfo.email}" readonly>
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">QQ</label>
                                                    <div class="layui-input-inline">
                                                        <input name="qq" class="layui-input" type="text" placeholder="请输入QQ" autocomplete="off" value="{$userinfo.qq}">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">Blog</label>
                                                    <div class="layui-input-inline">
                                                        <input name="blog" class="layui-input" type="text" placeholder="请输入您的博客地址" autocomplete="off" value="{$userinfo.blog}">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item layui-form-text">
                                                    <label class="layui-form-label">Person Sign</label>
                                                    <div class="layui-input-block">
                                                        <textarea class="layui-textarea" placeholder="请输入您的个人简介" name="sign">{$userinfo.sign}</textarea>
                                                    </div>
                                                </div>
                                                <div class="layui-card">
                                                    <button type="button" id="reviseBase" class="layui-btn layui-btn-normal layui-problem-submit">Revise</button>
                                                </div>
                                                <br><br>
                                            </form>
                                        </div>
                                    </div>
                                    <div class="layui-tab-item">
                                        <div class="layui-card-body">
                                            <form class="layui-form layui-form-pane " action="">
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">Old</label>
                                                    <div class="layui-input-inline">
                                                        <input name="oldpass" class="layui-input" type="password" placeholder="请输入您的原密码" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">New</label>
                                                    <div class="layui-input-inline">
                                                        <input name="password" class="layui-input" type="password" placeholder="请输入您的新密码" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">Confirm</label>
                                                    <div class="layui-input-inline">
                                                        <input name="conpass" class="layui-input" type="password" placeholder="请确认您的新密码" autocomplete="off">
                                                    </div>
                                                </div>
                                                <div class="layui-card">
                                                    <button type="button" id="revisePass" class="layui-btn layui-btn-normal layui-problem-submit">Revise</button>
                                                </div>
                                                <br><br>
                                            </form>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            {else /}
                            <div class="layui-tab layui-tab-brief" lay-filter="docDemoTabBrief">
                                <ul class="layui-tab-title">
                                    <li class="layui-this">Base Information</li>
                                </ul>
                                <div class="layui-tab-content">
                                    <div class="layui-tab-item layui-show">
                                        <div class="layui-card-body">
                                            <form class="layui-form layui-form-pane " action="">
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">email</label>
                                                    <div class="layui-input-inline">
                                                        <input name="email" class="layui-input" type="text" placeholder="请输入email" autocomplete="off" value="{$userinfo.email}" readonly>
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">QQ</label>
                                                    <div class="layui-input-inline">
                                                        <input name="qq" class="layui-input" type="text" placeholder="请输入QQ" autocomplete="off" value="{$userinfo.qq}" readonly>
                                                    </div>
                                                </div>
                                                <div class="layui-form-item">
                                                    <label class="layui-form-label">Blog</label>
                                                    <div class="layui-input-inline">
                                                        <input name="blog" class="layui-input" type="text" placeholder="请输入您的博客地址" autocomplete="off" value="{$userinfo.blog}" readonly>
                                                    </div>
                                                </div>
                                                <div class="layui-form-item layui-form-text">
                                                    <label class="layui-form-label">Person Sign</label>
                                                    <div class="layui-input-block">
                                                        <textarea class="layui-textarea" placeholder="请输入您的个人简介" name="sign" readonly>{$userinfo.sign}</textarea>
                                                    </div>
                                                </div>
                                                <br><br>
                                            </form>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            {/if}
                        </div>
                        <div class="layui-card">
                            <div class="layui-card-header">
                                <span class="layui-badge layui-bg-cyan">AcNum & SubNum Chart:</span>
                            </div>
                            <div class="layui-card-body">
                                <div id="rankingChart" style="800px; height: 400px;"></div>
                            </div>
                        </div>
                        <div class="layui-card">
                            <div class="layui-card-header">
                                <span class="layui-badge layui-bg-cyan">Solved Problems:</span>
                                <span class="layui-badge layui-bg-red">{$userinfo.acnum}</span>
                                <span class="layui-badge layui-bg-red">{$userinfo.subnum}</span>
                            </div>
                            <div class="layui-card-body">
                                <table class="layui-table" lay-skin="nob" lay-even="">
                                    <thead>
                                    <tr>
                                        <th>Author</th>
                                        <th>Pro.ID</th>
                                        <th>Judge Status</th>
                                        <th>Create Time</th>
                                    </tr>
                                    </thead>
                                    <tbody>
                                    {volist name="quessub_page" id="vo"}
                                    <tr>
                                        <td>
                                            <a href="{:url('index/user/userinfo', ['id' => $vo.user_id])}">{$vo.user.username}</a>
                                        </td>
                                        <td>
                                            <a href="{:url('index/question/question', ['id' => $vo.que_id])}">{$vo.que_id}</a>
                                        </td>
                                        <td>
                                            {if $vo.judge_status == 2}
                                            <span class="layui-badge layui-bg-cyan">Accept</span>
                                            {/if}
                                            {if $vo.judge_status == 1}
                                            <span class="layui-badge layui-bg-green">Waiting</span>
                                            {/if}
                                            {if $vo.judge_status == 3}
                                            <span class="layui-badge layui-bg-red">Wrong Answer</span>
                                            {/if}
                                        </td>
                                        <td>{$vo.create_time}</td>
                                    </tr>
                                    {/volist}
                                    </tbody>
                                </table>
                                {$quessub_page->render()|raw}
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            {if session('?user.id')}
            <div class="layui-col-md3">
                <div class="layui-card">
                    <div class="layui-card-header">
                        Ranking:&nbsp;<span class="layui-badge layui-bg-cyan">1</span><br>
                    </div>
                    <div class="layui-card-body">
                        <table class="layui-table" lay-skin="nob" lay-even="">
                            <thead>
                            <tr>
                                <th>Pro.ID</th>
                                <th>Judge Status</th>
                                <th>Pro.Cate</th>
                            </tr>
                            </thead>
                            <tbody>
                            {volist name="quessubs" id="vo"}
                            <tr>
                                <td>
                                    <a href="{:url('index/question/question', ['id'=>$vo.que_id])}">{$vo.que_id}</a>
                                </td>
                                <td>
                                    {if $vo.judge_status == 2}
                                    <span class="layui-badge layui-bg-cyan">Accepted</span>
                                    {/if}
                                    {if $vo.judge_status == 3}
                                    <span class="layui-badge layui-bg-red">Wrong Answer</span>
                                    {/if}
                                </td>
                                <td>{$vo.question.cate.catename}</td>
                            </tr>
                            {/volist}
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            {/if}
            {include file="public/_foot"}
        </div>
    </div>
    {include file="public/_script"}
    <!-- <script type="text/javascript" src="http://echarts.baidu.com/build/dist/echarts-all.js"></script> -->
    <script type="text/javascript" src="/static/js/echarts-all.js"></script>
    <script>
        $(function () {
            $('#reviseBase').click(function () {
                $.ajax({
                    url: "{:url('index/user/userbaseedit')}",
                    type: 'post',
                    data: $('form').serialize(),
                    dataType: 'json',
                    success:function (data) {
                        if (data.code == 1) {
                            layer.msg(data.msg, {
                                icon: 6,
                                time: 2000
                            });
                        } else {
                            layer.open({
                                title: '修改失败',
                                content: data.msg,
                                icon: 5,
                                anim: 6,
                                shadeClose: true
                            });
                        }
                    }
                });
                return false;
            });
    
            $('#revisePass').click(function () {
                $.ajax({
                    url: "{:url('index/user/userpassedit')}",
                    data: $('form').serialize(),
                    type: 'post',
                    dataType: 'json',
                    success:function (data) {
                        if (data.code == 1) {
                            layer.msg(data.msg, {
                                icon: 6,
                                time: 2000
                            });
                        } else {
                            layer.open({
                                title: "密码修改失败",
                                content: data.msg,
                                icon: 5,
                                anim: 6,
                                shadeClose:true
                            });
                        }
                    }
                });
                return false;
            })
        });
    
        var option = {
            tooltip: {
                trigger: 'axis'
            },
            xAxis: {
                type: 'category',
                data: <?php echo $days?>
            },
            yAxis: {
                type: 'value'
            },
            series: [{
                name: 'submit number',
                type: 'line',
                data: <?php echo $usersubnum?>
            },{
                name: 'AC number',
                type: 'line',
                data: <?php echo $useracnum?>
             }]
        };
    
        //初始化echarts实例
        var myChart = echarts.init(document.getElementById('rankingChart'));
    
        //使用制定的配置项和数据显示图表
        myChart.setOption(option);
    </script>
    </body>
    </html>
  • 相关阅读:
    Unity热更新04-XLua调用C#-01-Lua调用C#类
    Unity热更新03-C#调用XLua-010-LuaMgr
    Unity热更新03-C#调用XLua-09-Lua表映射到 XLua的LuaTable中(不建议)
    Unity热更新03-C#调用XLua-07-Lua表映射到C#接口
    Unity热更新03-C#调用XLua-07-Lua表映射到C#类
    C# 禁用控制台应用程序关闭按钮
    只允许输入正整数、负数、 控制小数点不能是第一位,负号必须第一位
    Godot
    GameFramework摘录
    GameFramework摘录
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/12368239.html
Copyright © 2011-2022 走看看