当前位置: 首页 > 面试题库 >

php代码根据他们的得分(第1,第2,第3,第3,第5)给予排名

商宏爽
2023-03-14
问题内容

CREATE TABLE IF NOT EXISTS jss1_prelim (
id int(11) NOT NULL AUTO_INCREMENT,
term varchar(30) NOT NULL,
idnumber varchar(30) NOT NULL,
subject varchar(30) NOT NULL,
score varchar(30) NOT NULL,
teacher varchar(30) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

INSERT INTO `jss1_prelim` (`id`, `term`, `idnumber`, `subject`, `score`, `teacher`)
VALUES
(1, 'Prelim', 'SBI-JS202', 'Computer', '82', 'TID273'),
(2, 'Prelim', 'SBI-JS645', 'Computer', '63', 'TID273'),
(3, 'Prelim', 'SBI-JS300', 'Computer', '65', 'TID273'),
(4, 'Prelim', 'SBI-JS202', 'Igbo', '70', 'TID015'),
(5, 'Prelim', 'SBI-JS645', 'Igbo', '65', 'TID015');

我需要有关此脚本的帮助,该脚本可以很好地对sql数据库条目进行排序。但是我需要php代码来根据其得分(第一,第二,第三,第三,第五)给出位置。

<table border = '2'>
<tr>
<td>Student ID</td>
<td>Score</td>
<td>Position</td>
</tr>
<?php

$con = mysql_connect("localhost", "root", "");
if(!$con)
{
    echo "Could not establish connection to the database " . mysql_error();
}

$mydb = mysql_select_db("sbicenugu", $con);
if (!$mydb)
{
    echo "Error selecting database " . mysql_error();
}

$mystatement = mysql_query("SELECT * FROM jss1_prelim ORDER BY score DESC");
$dbcount = mysql_num_rows($mystatement);
$selection = array(0 => "");
$nameselection = array(0 => "");

$i = 0; 
    while ($row = mysql_fetch_array($mystatement))
    {
    $selection[$i] = $row['score'];
    $nameselection[$i] = $row['idnumber'];
    $i++; 
    }
arsort($selection);
ksort($nameselection);

for ($x = 0; $x < $dbcount; $x++)
{
echo "<tr> <td>$nameselection[$x]</td> 
<td>$selection[$x]</td>
<td>"; $grades = array($selection[$x]);
$occurrences = array_count_values($grades);
$grades = array_unique($grades);
foreach($grades as $grade) 
{
if($grade == end($grades))$i += $occurrences[$grade]-1;
echo str_repeat('-'.($i + 1).'<br>',$occurrences[$grade]);
$i+= $occurrences[$grade];
}
echo"</td> 
</tr>"; 
}
?>
</table>

这个剧本没有给我我对学生在课堂上的地位的期望。对于那些得分一样的人,它也给出了不同的价值位置。为此,我需要帮助。


问题答案:

此SQL代码将使您的排名列为“排名”,并且可以与部分结果很好地配合,因此即使显示多页的第二页,也始终具有正确的排名:

SELECT (SELECT COUNT(*) + 1
    FROM jss1_prelim ref
    WHERE ref.score > main.score) as rank,
    id, term, idnumber, subject, score, teacher
FROM jss1_prelim main
ORDER BY score DESC

确保增加索引以score获得更好的性能。



 类似资料:
  • 在较老一代的版本控制系统里,checkout是获取文件的标准操作。你将获得一组特定保 存状态的文件。 在Git和其他分布式版本控制系统里,克隆是标准的操作。通过创建整个仓库的克隆来获得文件。或者说,你实际上把整个中心服务器做了个镜像。凡是主仓库上能做的事, 你都能做。 封闭源码 闭源项目须避免执行touch命令,并确保你从未创建`git-daemon-export-ok`文件。资源 库不再可以通过

  • OOP 的思想, 无疑是非常实用有效的. 事实是, 无论语言是否直接支持面向对象的编程. 程序员在写代码的时候常常会应用 OOP 的思想. 但是 Go 语言下没有类(Class), 没有 this 指针, 没有多态, 只有复合. 应用 OOP 的思想, WEB 应用下控制器常见形式祖先类型的写法(示意代码). type Controller struct { Data interface{

  • 3. 第一步 如果您刚刚开始使用Spring Boot或者更普遍的“Spring”,这里是起点! 从头做起:概述 | 要求 | 安装 教程:第一部分 | 第二部分 运行示例:第一部分 | 第二部分

  • FreeRTOS(读作"free-arr-toss")是一个嵌入式系统使用的开源实时操作系统。FreeRTOS被设计为“小巧,简单,和易用”,能支持许多不同硬件架构以及交叉编译器。 FreeRTOS自2002年Richard Barry开始开发以来,一直都在积极开发中。至于我,我不是FreeRTOS的开发人员或贡献者,我只不过是一个最终用户和爱好者。因此,这章将着重与FreeRTOS架构之“是什么

  • 本书第一个Java程序是通过控制台输出HelloWorld,以这个示例为切入点,向大家系统介绍Java程序的编写、Java源代码结构以及一些基础知识。 在Java中,程序都是以类的方式组织的,Java源文件都保存为.java文件当中。每个可运行的程序都是一个类文件,或者称之为字节码文件,保存为.class文件。要实现在控制台中输出HelloWorld示例,则需要编写一个Java类。 3.1 使用E