如图 ,给出我的代码:
<?
if($_id==1)
{ $sql = "select student.sno,sname,cname, from student,course,score where score.sno=student.sno and score.cno=course.cno order by student.sno asc";
$query = oci_parse($conn,$sql);
oci_execute($query);?>
<table align="center" width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?
echo"管理员".$_SESSION['name']."登录系统";
echo "</table>";
while($row = oci_fetch_array($query)){$i++;
?>
<table align="center" width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<tr bgcolor="#eff3ff">
<td align="middle" valign="middle" width="120px" >学号</td>
<td align="middle" valign="middle" width="120px">姓名</td>
<? echo "<td align='middle' valign='middle'>".$row['2']."</td>";?>
</tr>
<tr bgColor="#ffffff">
<td align="middle" valign="middle"><?echo $row['0'];?></td>
<td align="middle" valign="middle"><?echo $row['1'];?></td>
<td align="middle" valign="middle"><?echo $row['3'];?></td>
<?php
if($i%3==0)
{
echo "<HR style='border:1 dashed #987cb9' width='80%' color=#987cb9 SIZE=1>"; }
}
}
?>
</table>
每次循环的时候$i++ 当$i%3==0的时候 输出一条分割线 但是就想图中的 第一二个表格就加分割线了 不过后面的又正常了~ 请教应该如何解决~~~或者换一种显示方式,之前也在论坛里问过,没有好的方法,现在侥幸再请教一次~
就是打印出类似excel显示的方式 把出现过的课程名放在列名里,即一个人的成绩两行显示完毕~~
<?
if($_id==1)
{ $sql = "select student.sno,sname,cname, from student,course,score where score.sno=student.sno and score.cno=course.cno order by student.sno asc";
$query = oci_parse($conn,$sql);
oci_execute($query);?>
<table align="center" width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?
echo"管理员".$_SESSION['name']."登录系统";
echo "</table>";
$i=0;//给$i一个初始值
while($row = oci_fetch_array($query)){ //你的$i++给的太早了
?>
<table align="center" width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<tr bgcolor="#eff3ff">
<td align="middle" valign="middle" width="120px" >学号</td>
<td align="middle" valign="middle" width="120px">姓名</td>
<? echo "<td align='middle' valign='middle'>".$row['2']."</td>";?>
</tr>
<tr bgColor="#ffffff">
<td align="middle" valign="middle"><?echo $row['0'];?></td>
<td align="middle" valign="middle"><?echo $row['1'];?></td>
<td align="middle" valign="middle"><?echo $row['3'];?></td>
<?php
if($i%3==0 && $i!=0)//加个判断条件,其中3代表3列加一条分隔符,想一列一条就改成1
{
echo "<HR style='border:1 dashed #987cb9' width='80%' color=#987cb9 SIZE=1>"; }
$i++;//$i++放在这里才合理 }
}
?>
</table>
类似于这种~~~
2.你可以在现有表上写一条sql语句,就可以适应你现在的需要了
3.sql语句样本:
select id,xm,max(cn) cn,max(en) en,max(num) num from
(
select *,
case
when kc='cn' then xf end cn,
case
when kc='en' then xf end en,
case
when kc='num' then xf end num from kechen
)as a group by id
--
-- 表的结构 `course`
--CREATE TABLE `course` (
`id` varchar(20) NOT NULL COMMENT '学号',
`name` varchar(20) NOT NULL COMMENT '姓名',
`course` varchar(20) NOT NULL COMMENT '课程',
`fraction` varchar(20) NOT NULL COMMENT '学分'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;--
-- 导出表中的数据 `course`
--INSERT INTO `course` (`id`, `name`, `course`, `fraction`) VALUES
('002', 'jock', 'en', '90'),
('001', 'jim', 'cn', '100'),
('001', 'jim', 'en', '100'),
('002', 'jock', 'en', '90'),
('001', 'jim', 'num', '90'),
('002', 'jock', 'cn', '80'),
('003', 'long', 'en', '100'),
('003', 'long', 'num', '100');-------------------
其中course记录里面的:en代表英语,cn代表语文,num代表数学