Chinaunix

标题: 跪求php问题,高手快来 [打印本页]

作者: andy.shi    时间: 2008-09-26 13:37
标题: 跪求php问题,高手快来
本人现在在做一个录入系统,不过遇到些问题,需向各位高手请教,请各位高手一定要给我多多支招,先谢了!

我要做出来的效果是这个样子的。



就是我们公司的员工如果是一个部门的话,那部门的名称只要显示一次就行了。

而我现在的效果是这样的



所以请教各位高手帮一下我,我知道如果光是html语言的话,那好办,合并一下单元格就完事了,不过我这个是和数据库连接的,以上的都是体现的数据库的内容。

以下是代码部分供参考,如果哪位高手可以解决的话,请直接在代码上修改,最好用不同的颜色,如果您只是提示用什么函数,该怎么做,那就免了,因为我没很多时间去试。如果我有哪里说的不当的地方,敬请包涵。

<?php include("conn.php";?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 公司通讯录 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<link rel="stylesheet" type="text/css" href="mystyle.css">
<style type="text/css">
<!--
.style1 {font-size: 14px; font-weight: bold;}
.style2 (font-size: 13px
-->
</style>
</HEAD>

<BODY>

<TABLE width="628" align="center" border="0" cellpadding="0" cellspacing="0">
<TR>
        <TD width="628" height="107" align="center" background="images/top.jpg"></TD>
</TR>
<TR>
        <TD>
        <TABLE width="628" height="38" align="center" border="0" cellpadding="0" cellspacing="0">
        <TR>
                <TD width="148" align="center" valign="middle"><font color="#6b0292"><?php echo date("Y-m-d"." ".date("l";?></font></TD>
        <TD width="60" align="center" valign="middle"><font color="#6b0292"><a href="index.php">Main page</a></font></TD>
                <TD width="140" align="center" valign="middle"><font color="#6b0292">Tel.(021)</font></TD>
                <TD width="140" align="center" valign="middle"><font color="#6b0292">Mobile No.16</font></TD>
                <TD width="140" align="center" valign="middle"><font color="#6b0292">Fax.(021)</font></TD>
        </TR>
        </TABLE></TD>
</TR>

</TABLE>
<?php
$sql=mysql_query("select count(*) as total from tb_txl",$conn);
$info=mysql_fetch_array($sql);
$total=$info[total];
if($total==0){
echo "本公司暂无员工!";
}
else{
?>
<FORM name="form1" METHOD="OST" ACTION="">
<TABLE width="628" align="center" border="2" cellpadding="2" cellspacing="2" bordercolor="#6b0292">
<TR>
        <TD width="90" height="15" align="center" valign="middle"><span class="style1">Department</span></TD>
        <TD width="120" align="center" valign="middle" class="style1">Employee</TD>
        <TD width="70" align="center" valign="middle" class="style1">Ext.</TD>
        <TD width="120" align="center" valign="middle" class="style1">Mobile-Ext.</TD>
        <TD width="100" align="center" valign="middle" class="style1">Mobile</TD>
        <TD width="138" align="center" valign="middle" class="style1">E-mail</TD>
</TR>
<?php
       
         $sql1=mysql_query("select * from tb_txl order by Department";
     while($info1=mysql_fetch_array($sql1)){
     ?>
<TR>
        <TD height="15" align="center" valign="middle"><span class="style2"><?php echo $info1[Department];?></span></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $info1[Employee];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $info1[Ext];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $info1[MobileExt];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $info1[Mobile];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $info1[Email];?></TD>
</TR>
<?php
         }
         
        ?>
</TABLE>
</FORM>
<?php
         }
?>

</BODY>
</HTML>
作者: andy.shi    时间: 2008-09-26 14:06
别光看呀,大家帮我出出主意呀。每人说一点也好的。
作者: fredyj    时间: 2008-09-26 16:18
<TABLE width="628" align="center" border="2" cellpadding="2" cellspacing="2" bordercolor="#6b0292">
<TR>
        <TD width="90" height="15" align="center" valign="middle"><span class="style1">Department</span></TD>
        <TD width="120" align="center" valign="middle" class="style1">Employee</TD>
        <TD width="70" align="center" valign="middle" class="style1">Ext.</TD>
        <TD width="120" align="center" valign="middle" class="style1">Mobile-Ext.</TD>
        <TD width="100" align="center" valign="middle" class="style1">Mobile</TD>
        <TD width="138" align="center" valign="middle" class="style1">E-mail</TD>
</TR>
<?php

$infos = array();
$sql1=mysql_query("SELECT *
FROM tb_txl
LIMIT 100"
);
while($info1=mysql_fetch_array($sql1)){
    $infos[$info1["Department"]][] = $info1;
}

foreach( $infos as $k => $v )
{
    $dept_count = count( $v );
    $flag = 0;
    if ( $key )
    {
        ?>
    <tr>
        <td colspan="<?=count( $val )?>">&nbsp;</td>
    </tr>
<?php
    }
    foreach( $v as $key => $val )
    {
        ?>
<TR>
<?php
        if ( !$flag )
        {
            ?>
        <TD height="15" align="center" valign="middle" rowspan="<?php echo $dept_count;?>"><span class="style2"><?php echo $k;?></span></TD>
<?php
        }
?>
        <TD align="center" valign="middle" class="style2"><?php echo $val[Employee];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $val[Ext];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $val[MobileExt];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $val[Mobile];?></TD>
        <TD align="center" valign="middle" class="style2"><?php echo $val[Email];?></TD>
</TR>
<?php
        $flag = 1;
    }
}
?>
</TABLE>

替换下面那个表格,
SQL查询少了个括号,你再试试,或者有什么报错信息,贴上来看看

[ 本帖最后由 fredyj 于 2008-9-27 01:03 编辑 ]
作者: andy.shi    时间: 2008-09-26 17:10
楼上的那位,你的水平可能真的很高,写的我都不怎么看的懂,可是实现不了。
作者: aboys    时间: 2008-09-26 17:55
  1. <?
  2. //$array 是整个数据的二维数组
  3. function arr_count($arr) //取得该值的个数
  4. {
  5.         gloabl $array;
  6.         $i = 0;
  7.         foreach ($arral as $val)
  8.         {
  9.                 if ($val[Department] == $arr)
  10.                 {
  11.                         $i++;
  12.                 }
  13.         }
  14.         return $i;
  15. }
  16. $dept = "";
  17. foreach ($array as $val)
  18. {
  19.         if ($dept != $val[Department])
  20.         {
  21.                 $n = arr_count($val[Department]);
  22.                 $m = $n;
  23.                 $dept = $val[Department];
  24.         }
  25. ?>
  26.   <tr>
  27.     <?
  28.         if ($m > 0 && $m != $n)
  29.         {
  30.                 $m--;
  31.         } else {
  32.         ?>
  33.     <td rowspan="<? echo $n; ?>">&nbsp;</td>
  34.     <?
  35.         }
  36.         ?>
  37.         <td>&nbsp;</td>
  38.     <td>&nbsp;</td>
  39.     <td>&nbsp;</td>
  40.   </tr>
  41. <?
  42. }
  43. ?>
复制代码

这个是我的循环思路,不知道能否帮助你。
作者: heiyeluren    时间: 2008-09-26 18:14
帮楼主顶贴。
作者: cayleung    时间: 2008-09-26 22:49
<?php
/*
select返回的值为$r
第1列值one,第2列值tow
*/

$r=array(
    0=>array(
        "one" => "asd",
        "tow" =>  111
         ),
    1=>array(
        "one" => "cay",
        "tow" =>  321
         ),
    2=>array(
        "one" => "cay",
        "tow" =>  1321
         ),
    3=>array(
        "one" => "asd",
        "tow" =>  1321
         ),
    4=>array(
        "one" => "cay",
        "tow" =>  1221
         )
    );
for($i = 0;$i<count($r);$i++){
    $new_r["one"][$i] = $r[$i]["one"];
}
sort($new_r["one"]);
$count = array_count_values($new_r["one"]);
$temp="";
$html ="<table border=\"1\" bordercolor=\"#000000\" >\r\n";
foreach($new_r["one"] as $k => $v){
    if($v == $temp){
        $html.= "<tr><td>". $r[$k]["tow"]."</td></tr>\r\n";
    }else{
        $html.= "<tr><td rowspan=\"".$count[$v]."\">".$v."</td><td>". $r[$k]["tow"]."</td></tr>\r\n";
    }
     $temp = $v;
}
$html .="</table>\r\n";
echo $html;
?>

很实际的人呢~~我可以带写,但收费,有意联系
作者: phpxp    时间: 2008-09-27 00:16
lz为何不去参考一下phpmyadmin的源码
作者: fredyj    时间: 2008-09-27 01:08
原帖由 andy.shi 于 2008-9-26 17:10 发表
楼上的那位,你的水平可能真的很高,写的我都不怎么看的懂,可是实现不了。


抱歉,SQL查询那里少写了个括号,我这里问题不太大,你再贴一遍试试

<TABLE width="628" align="center" border="2" cellpadding="2" cellspacing="2" bordercolor="#6b0292">
<TR>
        <TD width="90" height="15" align="center" valign="middle"><span class="style1">Department</span></TD>
        <TD width="120" align="center" valign="middle" class="style1">Employee</TD>
        <TD width="70" align="center" valign="middle" class="style1">Ext.</TD>
        <TD width="120" align="center" valign="middle" class="style1">Mobile-Ext.</TD>
        <TD width="100" align="center" valign="middle" class="style1">Mobile</TD>
        <TD width="138" align="center" valign="middle" class="style1">E-mail</TD>
</TR>
<TR>
        <TD height="15" align="center" valign="middle" rowspan="3"><span class="style2">ceo</span></TD>
        <TD align="center" valign="middle" class="style2">9</TD>
        <TD align="center" valign="middle" class="style2">2</TD>
        <TD align="center" valign="middle" class="style2">2</TD>
        <TD align="center" valign="middle" class="style2">9</TD>
        <TD align="center" valign="middle" class="style2">3</TD>
</TR>
<TR>
        <TD align="center" valign="middle" class="style2">4</TD>
        <TD align="center" valign="middle" class="style2">10</TD>
        <TD align="center" valign="middle" class="style2">0</TD>
        <TD align="center" valign="middle" class="style2">4</TD>
        <TD align="center" valign="middle" class="style2">5</TD>
</TR>
<TR>
        <TD align="center" valign="middle" class="style2">6</TD>
        <TD align="center" valign="middle" class="style2">3</TD>
        <TD align="center" valign="middle" class="style2">7</TD>
        <TD align="center" valign="middle" class="style2">10</TD>
        <TD align="center" valign="middle" class="style2">6</TD>
</TR>
    <tr>
        <td colspan="6"> </td>
    </tr>
<TR>
        <TD height="15" align="center" valign="middle" rowspan="2"><span class="style2">adm</span></TD>
        <TD align="center" valign="middle" class="style2">6</TD>
        <TD align="center" valign="middle" class="style2">3</TD>
        <TD align="center" valign="middle" class="style2">6</TD>
        <TD align="center" valign="middle" class="style2">0</TD>
        <TD align="center" valign="middle" class="style2">6</TD>
</TR>
<TR>
        <TD align="center" valign="middle" class="style2">2</TD>
        <TD align="center" valign="middle" class="style2">8</TD>
        <TD align="center" valign="middle" class="style2">3</TD>
        <TD align="center" valign="middle" class="style2">3</TD>
        <TD align="center" valign="middle" class="style2">5</TD>
</TR>
</TABLE>

这是你要的效果吧
作者: kee212    时间: 2008-09-27 06:26
rowspan等于记录数就可以了,没有营养
作者: andy.shi    时间: 2008-09-27 11:13
rowspan等于记录数就可以了,没有营养


要我怎么说你好呢,我看你还要比傻更呆三分,你说你不懂吧,还要在这里装懂,简直是个神经病,你有本事就把代码写出来我看看,不然给我哪儿凉快呆哪儿去。不懂还出来装懂,简直莫名其妙!
作者: andy.shi    时间: 2008-09-27 11:26
rowspan等于记录数就可以了,没有营养


*系统屏蔽*

[ 本帖最后由 Digico 于 2008-10-6 19:32 编辑 ]
作者: andy.shi    时间: 2008-09-27 11:44
抱歉,SQL查询那里少写了个括号,我这里问题不太大,你再贴一遍试试

我要的就是这种效果:


可是我根据你的提示,出来是这样的效果:


我非常感谢您对我的帮助,您能再看一下吗,另外您能将您的联系方式留给我吗, QQ或者是MSN,我可以随时向您请教!
作者: fredyj    时间: 2008-09-27 14:23
标题: 回复 #13 andy.shi 的帖子
那个图片就是你要的结果,应该是数据为空,才不会显示单元格边框,

让边框在空的时候也显示出来,稍微修改下这里

<TD align="center" valign="middle" class="style2"><?php echo $val[Employee];?>&nbsp;</TD>
<TD align="center" valign="middle" class="style2"><?php echo $val[Ext];?>&nbsp;</TD>
<TD align="center" valign="middle" class="style2"><?php echo $val[MobileExt];?>&nbsp;</TD>
<TD align="center" valign="middle" class="style2"><?php echo $val[Mobile];?>&nbsp;</TD>
<TD align="center" valign="middle" class="style2"><?php echo $val[Email];?>&nbsp;</TD>

还不行的话,把下面的执行结果贴上来看看

var_export($infos);//foreach前加上这句
foreach( $infos as $k => $v )

作者: andy.shi    时间: 2008-09-27 14:57
还不行的话,把下面的执行结果贴上来看看


这个就是执行出来的结果,除了字段其余都没了。


您把您的msn留给我一下可以吗,这样就方便了,如果老是在论坛上发的话,我又不知道你什么时候看,我也不知道你什么已经发了。
作者: andy.shi    时间: 2008-09-27 15:08
错了,楼上那个是错误的,根据你提供的提示,我该了之后执行出来应该是这样的:


麻烦你再看一下。
作者: fredyj    时间: 2008-09-27 15:39
好吧 短信你
不过真实敏感信息有关商业信息 别公开了
作者: andy.shi    时间: 2008-09-27 15:53
谢谢你的提醒
作者: shitou254    时间: 2008-09-27 17:51
哎!!这年头!!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2