|
技术资料 > 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