创新实训 (三)导航栏、首页、rating排行

在线评测系统的前后端都是使用 PHP进行开发的。PHP是一种广泛用于Web开发的服务器端脚本语言,有以下特点:

  • 开源和跨平台:PHP是一种开源语言,可以在各种操作系统上运行,如Windows、Linux和macOS。这使得PHP非常灵活和可访问。
  • 易学易用:与其他编程语言相比,PHP的语法相对简单,学习曲线较平缓。这使得PHP对初学者很友好。
  • 广泛应用:PHP主要用于Web开发,可以构建动态网站和Web应用程序。许多著名的内容管理系统(如WordPress、Drupal和Joomla)都是基于PHP开发的。
  • 强大的生态系统:PHP拥有庞大的开发者社区和丰富的第三方库,使得开发人员可以快速开发复杂的Web应用程序。
  • 与数据库集成:PHP可以轻松地与各种数据库(如MySQL、PostgreSQL、Oracle等)进行交互,支持各种数据库操作。
  • 灵活性:PHP可以嵌入到HTML中,也可以单独使用。这使得它非常灵活,可以满足各种Web开发需求。
  • 性能优化:近年来,PHP也在不断优化性能,通过引入新版本和各种加速器,使得PHP的性能不断提升。

前后端文件目录:

  • controllers 是存放控制器文件的目录。
  • libs 是一些前端库。
  • locale 是存放页面上的文字在不同语言下的翻译的目录。
  • models 是 OJ 运行所需的一些 PHP 类。
  • storage 存储一些文件数据的目录,其中 storage/submissions 存放用户提交的测评请求中附带的文件的目录。
  • views 存放视图文件的目录。
  • route.php 是主站路由文件。
  • vendor 是一些第三方 PHP 代码库。

入口脚本 index.php,当服务器收到一个请求时,会运行 index.php。index.php 会引入deeroj-lib.php、route.php等函数库和类库,然后根据路由去给请求中的网址匹配用于生成响应报文的 PHP 代码,根据路由的 action 部分确定控制器文件的路径。这里是主页。

首先,需要实现一个 header 栏,用于各种功能的切换。直接使用 echoDOJPageHeader

这个函数可以将导航栏直接显示到页面上。在之后的页面开发中,也需要先使用这种方法将导航栏进行输出。

之后在首页显示用户的 rating 排行榜。首页信息不宜太多,为了美观且能展示全部的信息,我们计划在首页只展示排名前10的用户的信息。并提供一个额外的页面,可以展示所有的用户。

我们先额外编写额外的 ranklist 页面,并在其中设置一个判断 top=10 的参数,用来控制是在首页显示还是在全部的 ranklist 页面。

设置表单的列。

表格是非常常用的一种数据展示形式,使用 echoLongTable 方法,可以非常方便的实现各种表单数据展示的复用。

先初始化分页设置:

打印表格形式:

pagination() 可以自动对页面进行分页,当页面个数大于 1 时,可以自动生成翻页的 html 数据。

这个函数的格式为:

function echoLongTable($col_names, $table_name, $cond, $tail, $header_row, $print_row, $config)

其中比较重要的参数时 cond 和 tail ,cond 是 sql 语句 where 后面的条件,tail 是 sql 语句最后的部分,通常用于分页、只展示多少条数据等。

print_row 是控制输出的函数,如果 users 中没有数据,根据用户的 rating 值计算排名,获取评分高于当前用户的人数,并加 1 作为排名。如果当前用户的 rating 与 $users 中最后一个用户的 rating 相同,则与最后一个用户的排名相同。

设置 tail ,根据 rating 和 用户名 排序。这里设施如果为 top = 10,是为了在首页中只展示十条数据。

之后使用 echoLongTable 来生成表单。

ranklist 页面,10条数据一页。

在首页中:

posted @ 2024-06-23 22:24  asuldb  阅读(12)  评论(0编辑  收藏  举报