我有一张包含数据的表格
UID UPN Reg Surname Forename Class Teacher Subject code Points
1 UPN111 10B BLOGGS Joe PU/Thu:1 Mrs A RIGNALL Ph 5
2 UPN111 10B BLOGGS Joe 10u/En2 Mr D THORNBER En 2
3 UPN111 10B BLOGGS Joe 10u/Ma1 Miss J ANDERSON Ma 4
4 UPN111 10B BLOGGS Joe 10u/Pe1 Ms J L SHARPLES Pe 4
5 UPN111 10B BLOGGS Joe 10u/Re1 Ms M HURST Re 3
6 UPN111 10B BLOGGS Joe 10u/Bi1 Mrs A RIGNALL Bi 5
7 UPN111 10B BLOGGS Joe 10u/Ch1 Mrs ARIGNALL Ch 0
8 UPN111 10B BLOGGS Joe 10A/Pa1 Miss O NELSON Pa 1
9 UPN111 10B BLOGGS Joe 10B/Hi1 Miss C MEDOWS Hi 2
10 UPN111 10B BLOGGS Joe 10C/Gg1 Mr A RHODES Gg 10
11 UPN111 10B BLOGGS Joe 10ux/Ps1 Mrs B TAYLOR Ps 5
12 UPN111 10B BLOGGS Joe CLS 11F Mrs L ROBINSON 6
我需要通过UPN在表格中显示每个人,其中类作为整个表单的列。
每个表格单元格的第X行列都有一个表单元素,其中的点可以在其中进行更新。
我从此处获取的代码在从msyql数据库中提取所有数据时似乎非常缓慢,这是因为我添加了查询以获取点数据。
$query = mysql_query("SELECT * FROM `table 2` WHERE `Reg` = '".$_GET['f']."' group by `UPN`");
$squery = mysql_query("SELECT DISTINCT `Subject Code` FROM `table 2`");
$dquery = mysql_query("SELECT * FROM `table 2` WHERE `Reg` = '".$_GET['f']."'");
echo "<form><table>";
echo "<tr><td>Name</td>";
//HEADER
while($subjecth = mysql_fetch_array($squery)){
echo "<td>|".$subjecth['Subject Code']."</td>";
}
//DATA
while($form = mysql_fetch_array($query)){
echo "<tr>";
echo "<td>".$form['Forename']." ".$form['Surname']."</td>";
$pquery = mysql_query("SELECT DISTINCT `Subject Code` FROM `table 2`");
while($subjects = mysql_fetch_array($pquery)){
$data = mysql_fetch_array(mysql_query("SELECT * FROM `table 2` WHERE `UPN` = '".$form['UPN']."' AND `Subject Code` = '".$subjects['Subject Code']."'"));
if($data['Points'] == NULL){
echo "<td></td>";
}
else {
echo "<td><input type=\"text\" id=".$form['UPN']."-".$subjects['Subject Code']." size=\"3\" value=\"".$data['Points']."\"></td>";
}
}
}
echo "</table></form>";
是否有更有效的方法来查询我需要的数据并将其插入页面?
提前致谢
史蒂夫
答案 0 :(得分:0)
提示:您尝试显示的表格的行话是&#34; pivot&#34;表,其中某些行(在您的情况下为class
)被旋转,因此它们是列。知道这可以帮助您找到合适的教程。一些RDMS系统/不是MySQL /支持其查询系统中的数据透视表。
提示:不要在列名中使用像空格一样的古怪字符。它谴责你在查询中使用反复的暴风雪。
提示:一般不要使用SELECT *
。它会获取您随后丢弃的数据。这会让事情变慢。
即使结果集包含一些重复数据,查询也会更好。看来你每个科目都需要一个专栏。所以,我建议你自己拿一个这些主题的列表来开始,然后把它放到一个数组中。
$subject_position = Array();
$position = 0;
$pquery = mysql_query("SELECT DISTINCT `Subject Code` FROM `table 2` ORDER BY `Subject Code`");
while($result = mysql_fetch_array($pquery)){
$sub = $result['Subject Code'];
$subject_position[$sub] = $position;
$position = $position + 1;
}
然后,发出一个查询,在单个结果集中获取所需的所有结果,按upn排序,然后按主题排序。处理该结果集的行。每当upn改变时,启动一个新表。
对于每一行,您都可以获取主题,然后在$subject_position
数组中查找主题位置。