深圳升蓝软件
数据库开发 .Net技术  |  ASP技术 PHP技术 JSP技术 应用技术类   
Hiblue Software

PHP+MYSQL+Javascript数据库查询结果的动态显示


March 25,2004
    动态网页的三大法宝PHP+MYSQL+JAVASCRIPT,下面是在学习php和mysql编程时的一个自己编制的程序-同学录查询,使用了以上三项法宝,其中的查询结果的输出结果我认为还比较满意,可以一次显示一条记录,每条记录是一个table,通过姓名的导航,可以逐个查看输出结果.
一.查询界面
<html>
<head>
<title>同学查询</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel=stylesheet type="text/css" href="../applet/mainstyle.css">
</head>

<body bgcolor="#FFFFFF">
<form method="post" action="query.php">
  <p> </p>
  <table width="41%" border="1" cellspacing="0" cellpadding="0" align="center" bordercolor="#808080" bordercolordark="#FFFFFF" bgcolor="#ffffcc">
    <tr>  
      <td colspan="2" class="tablehead" bgcolor="#0066cc" align="center">同学查询</td>
    </tr>
    <tr>  
      <td width="23%"> 姓名: </td>
      <td width="77%">  
        <input type="text" name="name" size="20" class="edit">
      </td>
    </tr>
    <tr>  
      <td width="23%">性别:</td>
      <td width="77%">  
        <input type="radio" name="sex" value="1" checked>
        全部  
        <input type="radio" name="sex" value="2">
        男  
        <input type="radio" name="sex" value="3">
        女 </td>
    </tr>
    <tr>  
      <td> 属性:</td>
      <td>  
        <input type="text" name="attribute" size="20" class="edit">
      </td>
    </tr>
    <tr>  
      <td>输出:</td>
      <td>
        <input type="radio" name="output" value="1" checked>
        标签  
        <input type="radio" name="output" value="2">
        表格 </td>
    </tr>
    <tr>  
      <td colspan="2" align="center">  
        <input type="submit" name="Submit" value="查询" class="button">
      </td>
    </tr>
  </table>
</form>
</body>
</html>
二.执行查询和动态显示的界面
<!--同学录查询系统:PHP+MYSQL+JAVASCRIPT-->
<html><head>
<link rel=stylesheet type="text/css" href="../applet/mainstyle.css">
<script language="javascript">
//标签显示时隐藏和打开选择的table
function showtable(id,totalnum)
{
    for(i=0;i<totalnum;i++)
        eval("table"+i.toString()+".style.display='none'");
    eval("table"+id.toString()+".style.display=''");
}
</script>
</head><BODY>
<?
#连接和打开数据库
$dbh =  mysql_connect("localhost");  
$err = mysql_error();  
if($err){die("连接错误");}  
mysql_select_db('mydb');  
$err = mysql_error();  
if($err){die("打开数据库错误");}

#建立查询语句
if((trim($name)!="")&&(trim($attribute)!=""))
    $query="select * from addressbook where name="".$name."" and attribute="".$attribute.""";
else if((trim($name)=="")&&(trim($attribute)==""))
    $query="select * from addressbook where 1";
else if(trim($name)=="")
    $query="select * from addressbook where attribute="".$attribute.""";
else if(trim($attribute)=="")
    $query="select * from addressbook where name="".$name.""";
if($sex=="2")
    $query=$query." and sex="男"";
else if($sex=="3")
    $query=$query." and sex="女"";

#查询数据库
$ret = mysql_query($query, $dbh);  
$num=mysql_num_rows($ret);
if($num<=0)
{
    echo "<Script language="javascript">window.alert("没有符合条件的记录!");history.back();</script>";
    exit;
}
if($output=="2")#表格形式输出
{
    echo "<table width="100%" border="1" cellspacing="0" cellpadding="0" bordercolor="#808080" align="center" bordercolordark="#ffffff">
      <tr>  
        <td colspan="13" align="center" class="tablehead" bgcolor="#0066cc">查询结果</td>
      </tr>
      <tr bgcolor='#ffffcc'>  
        <td nowrap width="2%">姓名</td>
        <td nowrap width="1%">性别</td>
        <td nowrap width="4%">生日</td>
        <td nowrap width="6%">email</td>
        <td nowrap width="6%">Bp</td>
        <td nowrap width="6%">手机</td>
        <td nowrap width="8%">工作电话</td>
        <td nowrap width="8%">工作地址</td>
        <td nowrap width="8%">家庭电话</td>
        <td nowrap width="8%">家庭地址</td>
        <td nowrap width="8%">邮编</td>
        <td nowrap width="8%">属性</td>
        <td nowrap width="10%">备注</td>
      </tr>";
    for($i=0;$i<$num;$i++)
    {
        $row = mysql_fetch_row($ret);
        for($j=0;$j<14;$j++)
            if(trim($row[$j])=="")
                $row[$j]=" ";
        if($row[3]=="0000-00-00")
            $row[3]=" ";
        if($row[4]=="0")
            $row[4]=" ";
        if($i%2==0)echo"<tr bgcolor='#CCCCCC'>";
        else echo "<tr bgcolor='#DDDDDD'>";
        echo "<td nowrap>$row[1]</td><td nowrap>$row[2]</td><td nowrap> $row[3]</td><td nowrap><a href='mailto: $row[9]'>$row[9]</a></td><td nowrap> $row[5]</td><td nowrap> $row[6]</td><td  nowrap> $row[7]</td><td nowrap> $row[11]</td><td nowrap>$row[8]</td><td  nowrap>$row[12]</td><td nowrap>$row[4]</td><td nowrap>$row[10]</td><td nowrap>$row[13]</td></tr>";  
    }
    echo "</table><hr width='100' height='1' noshade align='left'><a href='query.htm'>新查询</a>";
}
else#标签形式输出
{
    for($i=0;$i<$num;$i++)
    {
        $row = mysql_fetch_row($ret);
        $names[$i]=$row[1];
        for($j=0;$j<14;$j++)
            if(trim($row[$j])=="")
                $row[$j]=" ";
        if($row[3]=="0000-00-00")
            $row[3]=" ";
        if($row[4]=="0")
            $row[4]=" ";
        echo "<table id='table$i' style='display:none' width='80%' border='1' cellspacing='0' cellpadding='0' align='center' bordercolor='#808080' bordercolordark='#FFFFFF'>
          <tr bgcolor='#0066cc' align='center'>  
            <td colspan='4' nowrap class='tablehead'>查询结果<a name='#$i'></a></td>
          </tr>";
        $prior=$i-1;
        $next=$i+1;
        $last=$num-1;
        if($num>1)
        {
            if($i==0)
                echo "<tr><td colspan='4'><a href='#$next' onmouseup="showtable($next,$num)">[下一个|</a><a href='#$last' onmouseup="showtable($last,$num)">末记录]</a></td></tr>";
            elseif($i==($num-1))
                echo "<tr><td colspan='4'><a href='#0' onmouseup="showtable(0,$num)">[首记录|</a><a href='#$prior' onmouseup="showtable($prior,$num)">上一个]</a></td></tr>";
            else
                echo "<tr><td colspan='4'><a href='#0' onmouseup="showtable(0,$num)">[首记录|</a><a href='#$prior' onmouseup="showtable($prior,$num)">上一个|</a><a href='#$next' onmouseup="showtable($next,$num)">下一个|</a><a href='#$last' onmouseup="showtable($last,$num)">末记录]</a></td></tr>";
        }
        echo "<tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap class>姓名</td>
            <td width='39%'>$row[1]</td>
            <td bgcolor='#ffffcc' width='12%' nowrap>性别</td>
            <td width='40%'>$row[2]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>生日</td>
            <td width='39%'>$row[3]</td>
            <td bgcolor='#ffffcc' width='12%' nowrap>email</td>
            <td width='40%'><a href='mailto: $row[9]'>$row[9]</a></td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>BP</td>
            <td width='39%'>$row[5]</td>
            <td bgcolor='#ffffcc' width='12%' nowrap>手机</td>
            <td width='40%'>$row[6]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>工作电话</td>
            <td width='39%'>$row[7]</td>
            <td bgcolor='#ffffcc' width='12%' nowrap>邮编</td>
            <td width='40%'>$row[4]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>家庭电话</td>
            <td width='39%'>$row[8]</td>
            <td bgcolor='#ffffcc' width='12%' nowrap>属性</td>
            <td width='40%'>$row[10]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>工作地址</td>
            <td colspan='3'>$row[11]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>家庭地址</td>
            <td colspan='3'>$row[12]</td>
            </tr>
            <tr>  
            <td bgcolor='#ffffcc' width='9%' nowrap>备注</td>
            <td colspan='3'>$row[13]</td>
            </tr>
            </table>";
    }
    echo "<script language="javascript">table0.style.display=""</script>";
    echo "<table width='80%' border='0' align='center'>";
    for($j=0;$j<$num/10;$j++)
    {
        echo "<tr>";
        for($i=0;$i<10;$i++)
        {
            $index=$j*10+$i;
            if($index>=$num)
                break;
            echo "<td nowrap><a href='#' onmouseup="showtable($index,$num)">$names[$index]</a></td>";
        }
        echo "</tr>";
    }
    echo "</table><hr width='85%' height='1' noshadow><center><a href='query.htm'>新查询</a></center>";
}
mysql_close($dbh);
?>
</body><html>
三.改进还很多,例如可以将查询模糊化等等.
我使用的数据库结构是,可以按照自己的需要修改.
id  smallint(4)
name  varchar(10)
sex  char(2)
birthday  date
post  int(6)
bp  varchar(20)
mobile  varchar(20)
workphone  varchar(20)
homephone  varchar(20)
email  varchar(30)
attribute  varchar(10)
workaddr  varchar(40)
homeaddr  varchar(40)
memo  text      

【本文版权归作者cspace与奥索网共同拥有,如需转载,请注明作者及出处】   

       
Copyright © 2001-2008 Shenzhen Hiblue Software Team All rights reserved