
|  | 
| 技术资料  > PHP技术 > 数据库操作 : PHP+MYSQL+Javascript数据库查询结果的动态显示 |  | 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