动态网页的三大法宝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 (出处:不详 ) |