Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql中的学生职位排名_Php_Mysql - Fatal编程技术网

Php mysql中的学生职位排名

Php mysql中的学生职位排名,php,mysql,Php,Mysql,我有一个关于学生排名的项目。样本学校一年进行三次期末考试。我为每个期末考试创建了三个不同的表格,即第一学期的firstermsar,第二学期的Secondermsar,第三学期的thirdtermsar 表结构如下所示: id为4和5的学生在1班,而id为2和1的学生在2班。我有一个单独的班级表,也有一个单独的学生档案信息表 现在,我已经输出了结果slip,但是没有列,如下所示 StudentId: 2 Full Name: Fawaz James Class: Pry 2

我有一个关于学生排名的项目。样本学校一年进行三次期末考试。我为每个期末考试创建了三个不同的表格,即第一学期的firstermsar,第二学期的Secondermsar,第三学期的thirdtermsar

表结构如下所示: id为4和5的学生在1班,而id为2和1的学生在2班。我有一个单独的班级表,也有一个单独的学生档案信息表

现在,我已经输出了结果slip,但是没有列,如下所示

StudentId: 2     Full Name: Fawaz James     Class: Pry 2     Overall Position: -

                        1stAss    2ndAss    ExamScore    Grade    Position   Rmks
Mark Obtainable           20       20          60         
English                   12       10          60          A         -       Excellent
Mathematics               15       14          40          B         -       V. Good
虽然我是一个初学者,而且我的代码乱七八糟,但它是在下面提供的。此外,我需要帮助计算班级的整体排名和班级的学科排名。请帮助我,因为我的项目依赖于此获得批准,在我被介绍到stack Overflow之前的最后一周,我已经到了最后期限

$query = "SELECT * FROM firsttermsars
WHERE studentID=$stuID AND year=\"$_SESSION[year]\""; #27
$result = mysql_query($query)
or die ("Couldn't execute query.");
while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
{
echo "<h2> First Term Stint Report Sheet for $namet during the SESSION $year</h2>";
echo "<table class='table1'>";

echo "<tr>";
echo "<td></td>";
echo "<td><b>1st Assessment</b></td><td><b>2nd Assessment</b></td>
<td><b>Mid Term<br />Exam</b></td><td><b>Mid Term<br />Total Score</b></td><td><b>Grade<br />Point</b></td></tr>";
echo "<tr> <td><b>Mark Obtainable</b></td><td><b>30</b></td><td><b>20</b></td><td><b>50</b></td><td><b>100</b></td><td><b>||=||</b></td></tr><tr>";

$tetal = $row['thirdengtest']+$row['thirdengexam']+$row['eng1'];
if ($tetal >="1") {
$q2 = "1";
$sq2 = "100";
echo "<td>English Language: </td>";
echo "<td>{$row['eng1']}</td><td>{$row['thirdengtest']}</td><td>{$row['thirdengexam']}</td> <td>";
$total1 = $row['thirdengtest']+$row['thirdengexam']+$row['eng1'];
echo $total1."</td><td>";

if ($total1>="75")
echo "A1";
elseif ($total1>="70")
echo "B2";
elseif ($total1>="65")
echo "B3"; 
elseif ($total1>="60")
echo "C4";
elseif ($total1>="55")
echo "C5";
elseif ($total1>="50")
echo "C6";
elseif ($total1>="45")
echo "D7";
elseif ($total1>="40")
echo "E8";
elseif ($total1>="1")
echo "F9"; 
elseif ($total1=="0")
echo "-";
else
echo "F";
echo "</td></tr>";
}

$tetal = $row['thirdmathtest']+$row['thirdmathexam']+$row['math1'];
if ($tetal >="1") {
$q3 = "1";
$sq3 = "100";
echo "<tr>";
echo "<td>Mathematics </td>";
echo "<td>{$row['math1']}</td><td>{$row['thirdmathtest']}</td> <td>{$row['thirdmathexam']}</td> <td>";
$total2 = $row['thirdmathtest']+$row['thirdmathexam']+$row['math1'];
echo $total2."</td><td>";

if ($total2>="75") echo "A1"; elseif ($total2>="70") echo "B2"; elseif ($total2>="65") echo "B3"; elseif ($total2>="60") echo "C4"; elseif ($total2>="55") echo "C5"; elseif ($total2>="50") echo "C6"; elseif ($total2>="45") echo "D7"; elseif ($total2>="40") echo "E8"; elseif ($total2>="1") echo "F9"; elseif ($total2=="0") echo "-"; else echo "F";
echo "</td></tr>";
}

?>

我希望你能像这样帮助我,希望并不复杂。我想添加输出的图片,但它抱怨我没有所需的声誉

首先,在数据库中,为总计“总计”和“等级”创建一个新列,当您将分数详细信息提交到数据库时,添加分数和等级,然后将总计提交到数据库,而不是在检索信息时计算它们

其次,从数据库中选择学生时,请使用SQL命令:

SELECT * FROM firsttermsars ORDER BY Total DESC
这将自动按学生总分的降序返回学生列表。 类似地,对于主题排名,您可以有一个单独的表,其中对主题分数进行排名

然后,在检索数据时

<table>
<?php
    while ($i<$num) //num is number of rows
    {
?>
<tr><td><?php echo mysql_result($result,$i,"Name"); ?></td>
//... Similarly for all clumns
<?php
    }
?>
</table>
这将根据学生的总分对所有学生进行排名。同样,你也可以制作一个表格,根据主题分数进行排名


这就是我解决问题的方法。希望我能帮忙

虽然我迟到了,但这可能会有帮助。 首先,您应该计算获得的标记并存储在数据库表中。 为了简单起见,我只展示了3列

Id  Name    Obtained
1   A       100
2   B       58
3   L       88
4   F       102
5   C       99
在表中插入行,然后运行此查询以获取学生的位置

SELECT id, name, Obtained, FIND_IN_SET( score, (    
SELECT GROUP_CONCAT( score
ORDER BY score DESC ) 
FROM scores )
) AS position
FROM scores
WHERE id = 5

此处详细信息

您能将代码编辑到与问题相关的部分吗?首先,请规范化您的数据!DBMS表不是电子表格!如何规范化数据,是在数据库的入门级还是使用php。我真的不明白,恶意化是数据库的一个基本概念,在这种情况下,很容易“谷歌搜索”谢谢,说实话,我真的不明白你说的是什么,我只是说,与其在从数据库中获取数据后对结果进行排名,不如简单地将数据进行排名。。。
SELECT id, name, Obtained, FIND_IN_SET( score, (    
SELECT GROUP_CONCAT( score
ORDER BY score DESC ) 
FROM scores )
) AS position
FROM scores
WHERE id = 5