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

动态网页的三大法宝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与奥索网共同拥有,如需转载,请注明作者及出处】

Published At
Categories with Web编程
Tagged with
comments powered by Disqus