主要有以下的内容:
1.怎么连接数据库
2.怎么操作数据库
(1)怎么执行sql语言
(2)怎么处理返回的结果集
方法一:面向过程(已经过时,只是了解)
假设:
$username=your_name;
$userpass=your_pass;
$dbhost=localhost;
$dbdatabase=your_database;
//生成一个连接
$db_connect=mysql_connect($dbhost,$username,$userpass) or die("Unable to connect to the MySQL!"); //选择一个需要操作的数据库
mysql_select_db($dbdatabase,$db_connect); //执行MySQL语句
$result=mysql_query("SELECT id,name FROM user"); //提取数据
$row=mysql_fetch_row($result);
说明:
①在mysql_connect()、mysql_select_db()等函数之前使用@(错误控制运算符),可以忽略掉系统产生的错误信息,然后我们用die()来自定义错误信息;
②提取数据的时候,除了上面的mysql_fetch_row,常见的还有mysql_fetch_assoc和mysql_fetch_array,具体差别请查阅PHP Manual;
③对于mysql_query()函数的返回值,如果执行的语句有返回值(如SELECT、SHOW、DESCRIBE等),则返回相应数据(成功 时)或FALSE(失败时);如果执行的语句没有返回值(如DELETE、DROP、INSERT、UPDATE等),则返回TRUE(成功时)或 FALSE(失败时)。
方法二:面向对象(连接MySql数据库必选)
//创建数据库对象
$db=new MySQLi("localhost","root","123","exam");
//判断是不是执行成功
!mysqli_connect_error() or die("连接失败!");
//执行sql语句
$result=$db->query("SELECT * FROM student");
//处理结果集
$arr=$result->fetch_row();
//输出结果
var_dump($arr);
经典例题:
这是例子都是嵌在html中的,当然不嵌在也是可以的
1.数据库中的数据以表格的形式输出
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>以表格的形式显示数据库</title>
</head> <body>
<?php
//连接数据库
$db=new MySQLi("localhost","root","123","testa");
//判断是不是连接成功
! mysqli_connect_error() or die("连接失败!");
//执行sql语句
$result=$db->query("SELECT * FROM info;");
//处理结果集
$arr=$result->fetch_all();//一个记录一个记录的取,以索引数组的形式显示
//$arr=$result->fetch_all();//取出全部的记录,并以二维数组的形式显示
//$arr=$result->fetch_assoc();//一个记录一个记录的取,以关联数组的形式显示
//可以在这里边用echo写,但是感觉代码多,而且还很乱
?>
<!--创建表格-->
<table border="1" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
</tr>
<?php
for($i=0;$i<count($arr);$i++){
echo "<tr>";
for($j=0;$j<count($arr[$i]);$j++){
echo "<td>{$arr[$i][$j]}</td>";
};
echo "</tr>";
/*如果行数不多:
echo "<tr><td>{$arr[$i][0]}</td><td>{$arr[$i][1]}</td><td>{$arr[$i][2]}</td><td>{$arr[$i][3]}</td><td>{$arr[$i][4]}</td></tr>";
*/
}
?>
</table>
</body>
</html>
结果预览:
aaarticlea/png;base64,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" alt="" />
2.数据库的数据以下拉列表的形式呈现
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>以下拉列表的形式展现</title>
</head>
<body>
<!--连接数据库,以数组的形式显示数据-->
<?php
//连接数据库和处理结果集
$db=new MySQLi("localhost","root","123","testa");
!mysqli_connect_error() or die("连接失败!");
$result=$db->query("SELECT * FROM nation;");
$arr=$result->fetch_all();
?>
<select>
<?php
//对于数据比较的多的情况可以这样写,要是比较少的话,直接写也是很快的
for($i=0;$i<count($arr);$i++){
echo "<option value='{$arr[$i][0]}'>{$arr[$i][1]}</option>";
}
/*
<option>$arr[0][1]</option>......
表单元素中的value和name都是很重要的,一定要注意对其的使用
*/
?>
</select>
</body>
</html>
结果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABnCAIAAADT17YRAAAER0lEQVR4nO2avW7bMBDH9UYavOYd8gR8gU6FXyCzHiBDhsBdizaNkqKD0Q9AaTt70eCiQaI6bdBEBfplJW1q5zpQokiKUk6qj2EDHQ6ILMrKj3//SZk+egAAAMfJ7PnLg0c7T+3k2sYePoPt3eNkBlJ4/M/s5PzsyzewFWsbe1fLa2Te2369uROZoa0RC+jziyUmr5bXaxt7rkB/vlhi0i3o02yJSbegP84XmERDh8zzg1h+ycLKIY848GsuvQn6w88FJtsoHTLPZ8z3aqNELUHjwEcw59BHPxaY7GqPOqVDpvYiDAydNHSCQx9+X2ASCR0HvuKOpogDv6BCykwEDcBFZIFJOdUeMnQcA87UHPrdtwVP4+1Fa+fZQ5CYxqHsA9UwivMr0K9OlyK1d8lNLQciC6sQulVzpePA55ZmIVRmlBroF58Wcoo7a+fb2YMr5wdxCVEclKbIr1MxJc/goTl39SQeuoDg0CGTP30WllRSL/wgMH4stbPH+OQPJvHQhXdDxllYmJtXOpCvU5QOmef7rMEfHPrZ7AqT7Z+IISsHkzQIC6XlAVq+odC+dt7k0PvJb0xiocsZl9tDaxKzQsj8IM7Hav5oUcwQV87I0LtHvzDp1hemx4eXmHQL+uH7C0zeOWhn14j3H7zZfHJggJ7PL0/OvlrLVqvxrf238/mlARoA9t0OAzRvGGyBs+l5Xg/dQ/8T9BRghLtdlEE07vLG1UMPEwCAaAxT40ybKncUoMNEb7IKzQnSBAYTnSM/vwWDidqRBKLM0MGVCH8z9DCB6UQSMoOh6oeydQxpWr6LSGYc9ARSKORsdq0MPYbBFoxSpcN27TGGtBC49IN6nF9W3Gs60Q0DoF5MDq1mru4YUs2jhdJRBtGkaJU6bFdp1RXcr4qbeRbDVLGQ5Bnr9lBFjTLDZy3cEmUQJYapw97sMahMBVMxo6kSimEnKz1KIVXHriVo4QT+lBGuEA8d0ZlRccBPTqHUflWjEAddeKMqrWCFFAYTSBMY8ekjg1Gim2FYOUOrtGvZQ986tHnGciN6aFtxZ6Hryxb6T+Vdip900A3/W2ttXfzsEKuD7lr8JIaONQzxc79eEwBKmdtDl44VL2qg0cVPB6BlH+CKnw5Aty9+0kM3e7pT8ZMeulHpbsVPYmhzlK3dip900JgnYsfiJx006uHSrfhJBO1c9NC2ooe2FT20rUBAE+81pYEG2r2mZNBaB1a615QCmnyvaYdAKU2615QKWo0V7zUlg6bca0oFTbrXlAiadq8pETTtXlMaaOK9piTQ1HtNSaAdjB7aVvTQtqKHthVtoNXvFKavnc4st/RfpZu+5oF7y61mpV1abrUJp5ZbzQ5RqgPuLLcafKGXNGQf3O5yqwW0O8strD1cWm5hlXZquYWFdmm5hbWHS8staBxLZVO/3GqOHtpWGKABYH19vWHk3XooHbCn1eriv4T+Cy3LDUA+VNG2AAAAAElFTkSuQmCC" alt="" />这是页面效果
aaarticlea/png;base64,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" alt="" />
这是代码显示的形式
总结:
总结一下上边的这两个例子:
(1)首先这两个例子都是用PHP来控制输出的(仔细体会这句话),即把数据库中的内容呈现个用户,当然这里边是可以加一些样式的,给用户一个很好的用户体验.在设计的时候,要把数据和HTML分开来考虑,之后在找到他们之间的接口,将二者融合在一起. PHP从数据库中提取数据,借助HTML将数据更好的展现给用户.比如,提取出来的数据一般是数组,用户是看不懂数组的,要用HTML表格的形式展现给用户,这就是分开考虑和融合二者.
(2)注意细节,不管是用户体验的细节还是编程的细节.细节决定成败
3.利用php与数据库实现登录
实现登录就是多了一步填写的用户信息和数据库中的用户信息做比较.(这里边要是结合JS和CSS能实现很好的用户体验效果)
登录界面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录</title>
<style>
.login{
width:50%;
margin:0px auto;
text-align:center;
}
table{
text-align:center;
} </style>
</head>
<body>
<div class="login">
<!--设置好了,登录的界面-->
<form action="loginTest.php" method="post">
<table width="50%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td width="10%">用户名:</td>
<td align="left"><input type="text" name="name" style="width:100%;" /><br/></td>
</tr>
<tr>
<td width="20%">密码:</td>
<td align="left"><input type="password" name="password" style="width:100%;"/><br/></td>
</tr>
<tr align="center"><td colspan=2><input type="submit" value="登录"/></td></tr>
</table>
</form> </div>
</body>
</html>
结果:
aaarticlea/png;base64,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" alt="" />
登录处理页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>登录验证</title>
</head>
<body> <?php
//实现登录
$name=$_POST["name"];
$password=$_POST["password"];
//连接数据库
$db=new MySQLi("localhost","root","123","testa");
!mysqli_connect_error() or die("连接失败!");
$result=$db->query("SELECT count(*) FROM login WHERE username='{$name}' AND password='{$password}';");
$arr=$result->fetch_all();
//验证
if($arr[0][0]==1){
echo "<h1>登录成功!</h1>";
}else{
echo "<h2>登录失败!</h2>";
} ?>
</body>
</html>
注意的地方:这个地方的验证是用匹配的数量来验证的,为1时唯一匹配,登录成功,当然这不是唯一的方法
4.在用户界面实现数据的增删改查(改和查难点)
总页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>增加</title>
</head>
<?php
include("DBDA.php");
$db=new DBDA();
$sql="SELECT * FROM info";
$arr=$db->Query($sql,1,"testa");
?>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr><td>代号</td><td>姓名</td><td>性别</td><td>民族</td><td>生日</td><td>操作</td></tr>
<?php
for($i=0;$i<count($arr);$i++){
echo "<tr><td>{$arr[$i][0]}</td><td>{$arr[$i][1]}</td><td>{$arr[$i][2]}</td><td>{$arr[$i][3]}</td><td>{$arr[$i][4]}</td><td><a href='delete.php?code={$arr[$i][0]}'>删除</a><a href='update.php'>修改</a></td></tr>"; }
?>
</table>
<a href="add.php"><input type="button" value="添加数据"/></a>
</body>
</html>
效果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABUsAAADsCAIAAADCYmCpAAAgAElEQVR4nO3dva/cxsHvcf4bV/2FFcQA67SC2iROIaVir0aAEUdxFz+NgNCCEOQNVgo1Tk59iMgK0isPnvLBuSAM4Qa3CVIEse/u3uNNFnAM8BbDIWeGM8Phy+ySu98PBPvskstzdmaWwx9nyE0qAAAAAACwfsmp/wAAAAAAADADEj4AAAAAAOdAS/jXAAAAAABgbe7fv29J+PdxwWgAq0b1xUPZLhm1AwCIio4Gq+BL+PEnDmChaACrRvXFQ9kuGbUDAIiKjgarQMKHBQ1g1ai+eCjbJaN2AABR0dFgFUj4sKABrBrVFw9lu2TUDgAgKjoarAIJHxY0gFWj+uKhbJeM2gEAREVHg1UIS/hlniZpXh75b8PJtA3AWfVlniZZ4dtIkSW0mpNQPr+OaiqysVVz6fuCSV17mad62V16ac7NUztFlvTssAAA6KN1NGOOptQDM7omxBKU8PXD0OaROzx4cUC7fFrC1ytM7o16En6Zp1T1qTgTfvPZtfdJ1o+usd6lZ1KjbPvpHxK94C+9MGdn9FzqoVPfYVRvbVJRAAB3wnd0I2bPYwR8+hbEEZLwjSynHJWK1mw0Xm97pTGvQtsAikyv36Yx+BJ+z8EyLSCybgoVRd7WmTPhu4aYm0WXHkr750cobGsUWVN8zpOhnNAfSeu59NIPSfjOhn3prR4AUPMmfKOb8T/lO1jmOAATBSR887DfONjpHDiR8Nfv+vr6fvo/LMHcuTvSx4kd+yYG9o9DfH7LPE3SLEuTrBAfUk9f4sj9JPyOkQm/W/ZpmtKFz23CDAsSPgCgX93R6J2M5wjZOZNPDqGRjBBDb8Iv885xaM9gCLP01082AHPQ1zj12GkFYveW5mVn7N8X/DEzUX1FliRZLqqpzPNC7UMGz9In4demzNJXPxTy88M1eHNqaqfbTBnDBwBMN+k6/PYOVe1FsCR8xNCX8MUxfzfhp6lxcNu2Tsbw1082gCaSiDyiHiRbEr6yuCwLZbze1ooQz/X19f3738nTety+uaqi70PKGH6/njH87n0PXI+ap3rO92OAunZsN/kk4QMAprMnfG2IJCv07l32H+0wGBfjIzZ/wi/zNEnTNMmK7vAeh6FnrD1QVs8w5uoxcv8UZWX/xr7rqK6vr+9/53+m6qwLo7p8/Yl1GQm/Nijhd5dp/X1zBj/gw4QQyrktcxEJHwAwnTPhtwfMIuG3tyxTDqVTeWym3yaGiIW5+RJ+qQ8CtuzHSmFzVmm/a9A0APcUor5QIvdYVPPxTfu2PBK+T1/ZekrWmE9RtF9TQcKfyYRvy+Ne+gCAfp2En2VpkmW9CV8cHlgOEhjDRwy+hF9kjm9F6z3Ip7WuXJ3wi0zMtLfPQrKfrwk40UOWicyaQnvv2epaQb8RDAl/4HX4SZMNHVdMVOwwZ6N9zWdwxVTyBYzhAwD8Oh2NzO/acZNt1l598x0SPo6h/176rqmo7ubI0dDqdWJMtz677ULs3vT78XUwWnkEk8bwtVc0A58k/Fpv2bpbuF6GWeaMoJdcvtNMHMMn4QMA/Np76duH5CvvMRYJH0cyLuFb72SkLQwdOMEi2QYqjWrzRHUS/olNSvjaou4VZpeedfrL1vl1osZ9K9tXcCfKuZDwAQBR2a7DD7/Oy57wCUqY3ciEbxzxhB//8N1Qq9D90qnOtyaS8JdrQsLXP6CWD/alZx172Xa+qSBRl6hfOCmXd26xX2SXXKwzIeEDAKLq+7Y818CY8wWM4SOGsQlfH8YPzu3ku3Vob7U4JqqT8E9sbMJXk2nzhOUmHJdcgWbZZpmtHxcdfP0dJJ375avFqvxMJz8ZCR8AEJUv4dedhfOmeiR8HM34hF/ngTQv3cdOfAPESsmvW7NdaO+grNo3W4k2EJkl4fdfOpNrWdScKaa+/qLrz7zFjrMwZCl2v46iiYudMyrec2ro13xbXjj9a4oDVgQAXDBHwi/ztNvjd3t1Ej6OZErCrzpHsTgTnqGwAIzhn1j/GD7GGvnRaL49p0mLjnuZEPKnmLDjYgwfANCv7mjkwIcc6FT7CD2za2fzSfg4kv6EjwtEA1g1qi8eynbJqB0AQFR0NFgFEj4saACrRvXFQ9kuGbUDAIiKjgarQMKHBQ1g1ai+eCjbJaN2AABR0dFgFZwJHwAAAAAArItzDB8XiwawalRfPJTtklE7AICo6GiwCr6EH30CAZaKBrBqVF88lO2SUTsAgKjoaLAKJHxY0ABWjeqLh7JdMmoHABAVHQ1WgYQPCxrAqlF98VC2S0btAACioqPBKpDwYUEDWDWqLx7KdsmoHQBAVHQ0WAUSPixoAKtG9cVD2S4ZtQMAiGpoR/P60bPHz996V3nz9I5znTLfJult2T6xz5JNVoT//qrINkm2H/ACnIX+hF/madJI81Jdz7esKrJ2WTKoMeLUlAag1rFZxVodm1XsW4aoXJ/fTv1hsCFd+8iPh3e3Cp/Qlj922fC92qy7yHk2NvrNB/62ObZB7wFgqZSO5s3TO88e3Hn2QOTzm1eP1YdSk/Bvnr94IFd4cOfqtbLCgzvPHtx58fLG8uuKbJPmB/Vhkhj/doV1UX1eYJ/JFXBRehJ+madKF13mqdJl+5ZVRab2y0VGP70qTQMoMq1OtSO2Mk+bOhUHdW0V+5YhNvXz21YZn8I5BCd8tbiNvaNvmXe3ih5BLX/sMm+VWo1sAzE3NvrNB/4lc2xjcNEAwPHoCf/qdVXdPH9RJ/x7r26ah9Wbp3devLzRE/6jN+oP9c93Xry8qW6ev3hw71Un4++zZJuX4r91hlcC/yFP7ePz7ch/seucEWhPCuCMDZyl7wsJvmV00+tibwBlnrojYpG5a9i3DPOT1WeWO/UwXWDCNz8r6mPfsg7OywwR0vLHLhtUbX0vONXGxr75wL9kjm0MLhoAOKbJCf/ty3vPnl5XlRzVFz/XD/WQL4P6Pku2eb6TP4tZ+s54r7zwkKdbZR9cnynAJSDhw4KEv2p19XWKnY/hdO1Ho97hKXOStZF446PS7h59y7pI+EMEtPyxy4ZVW88LTrWxKQUTUg4zbGNw0QDAUU1N+NdXIsaLyflNvBeaIf2qquoM3yR8LahvksR3dX2d8Itdol60X96mjN5fjGEJ35cQvOmBPnpdbA2AfL8aovosFcbncDIj4RtDvLJwu22+3T/6lnVwUmaQ/pY/dtmwaqt6XnCijU16864TAcpvm2Mbg4sGAI5qYsIXD0WSf/pIvTK/uRr/zVOR/MUEeyPhl7dpskmSbZqK+fb2Mfky3ybpLkv1Wf3FTr9pH87ZoITPCP6lUBpAe8ujbu22w5fd2vUtQ1zOnMOE18mMhG/OSHaNZSpP+ZaZOCUzTH/LH7tsULW5lo5qAzNubPSbD/xL5tjG4KIBgKOqDwOurzrhXP/36Mo5hq/cZk9Qr8yXjJn52yzbKvfPq6ryUFZt4M9L2yX3YhhfvqTMt9xU/3KEJ3zG7y+I9RRPJ9EofHfT4057x0bCj6czS79dpJTuLBGGM6ODkfC9GyPhA8BU0++09/rRMyPPWxJ+eZtmeznqbl4/37nlnnhWD/Pi5/I2rV97yNNhX7OHVQtM+KMDnC8VYrEckziYqL8OzNKPpy/hzzUNmfNiY5xqln470ynxzOMIbAOzbkwz+s0bT46apR+4DWbpA1i26Qm/ur56cO/q6T3P+L9M+0bCr0fsZVA3rqt3TMIvsk0iThZwEf4lCUn4xPuL47oRgy+p++I/Y8dH5brfGGdapgtL+N0G3z7jW6Y+wQdmuICWP3ZZQLXpJraBKBsb++YD/5I5tjG4aADgqNrDACPSD/q2PP2e+bZZ+lVVGQn/kGdtgC8yMTn/UJbGyh3yvIA55o+z1p/wufj+AjGGv2p19XU+glTDdGEJv7NQ/ej4llk3jFABLX/sst5q65jSBiJtbPSbD/xL5tjG4KIBgGNyJvzrqybAOxO+HKUXt9BvpuvXCf/m1WPjEn3bLH0xRb/ZLRaZ/FlN+OVt2qb9Q55qL8El6En4vlH4sZdlY/naA2UzeKTKLkapfKPCfcsQnf3zS76fQ2DC11u9EVJ8y5j4NEVQyx+7zFdtVmPbQMyNjXvz2hLvb5thG4OLBgCOqOlo1DF5cXv8JsmLHwTLLH35fDOSrw3vq1+hpw/LG9m+HpzP9mV5UFYW36UnJ+Q36+RbQv5F8Sb89nboKmXOomOZcSGhfkEhVqDzlWBq7Ta0NmDUrm8ZIuvMwbHXH0YITfiV/hkwPwKOZd7dKnqFtvyxy3xVajWiDUTf2Ig3b5538v62GbYxuGgA4FhkR/P25b06it88f/H4+aun8nvsQxK+Je03D9WRfOf324lhee32eyLDK092hu5F2ucL8y7DoG/Lw6WgAawa1RcPZbtk1A4AIKq6o6mn6L95KmbdP3/1uJ5mL77TvpI/y4f2i+3rl2vj9qpuwjduttc65KlypX2xc114Ly/gH/fusRokfFjQAFaN6ouHsl0yagcAEJXoaJy3wZ/pn/nN9nP/O3UpIjoSPixoAKtG9cVD2S4ZtQMAiIqOBqtAwocFDWDVqL54KNslo3YAAFHR0WAVSPiwoAGsGtUXD2W7ZNQOACAqOhqsgjPhAwAAAACAdXGO4eNi0QBWjeqLh7JdMmoHABAVHQ1WwZfwo08gwFLRAFaN6ouHsl0yagcAEBUdDVaBhA8LGsCqUX3xULZLRu0AAKKio8EqkPBhQQNYNaovHsp2yagdAEBUdDRYBRI+LGgAq0b1xUPZLhm1AwCIio4Gq0DChwUNYNWovngo2yWjdgAAUQ3taF4/evb4+VvvKm+e3nGuU+bbJL0t2yf2WbLJivDfXxXZJsn2A16As9Cf8Ms8TaQ0L7VX+5ZVRdYsSwa1RZyc0gDUOu5Usq+O1WU0gKMK/fxiuCFde+jHw/7pKDIqbKg5eq55e7VpbSDKxka/+cDfNsc2OHoAsFRKR/Pm6Z1nD+48eyDy+c2rx+pDqUn4N89fPJArPLhz9VpZ4cGdZw/uvHh5Y/l1RbZJ84P6MEmMf7vCuqg+L7DP5Aq4KH0Jv8jaLrrI9B7bt6zM06ZfFh0+3fSKyAZQ5qleqWol++q4yNQKLzIawDE1n1+txqiFOQQnfLW4jU+Od5makEj4AwW1/LHLeqrNYnwbiLax0W8+8C+ZYxuDiwYAjkdP+Fevq+rm+Ys64d97ddM8rN48vfPi5Y2e8B+9UX+of77z4uVNdfP8xYN7rzoZf58l27wU/60zvBL4D3lqH59vR/6LXeeMQHtSAGds0Cz9Mk+dEcG3rCoyOulVccWYniO2sMNKxCarz6wTPofTBSZ8c3+oPvYtq8o8TbKCj8w4IS1/7DJvtdmMbgMRNzb2zQf+JXNsY3DRAMAxTU74b1/ee/b0uqrkqL74uX6oh3wZ1PdZss3znfxZzNJ3xnvlhYc83Sr74PpMAS4BCR8WJPxVq6uvUyVUw3Tq/KYkSbJCmZOszW8xPijtR8e3rEVdjRHQ8scuC6u2ynjtpDYw/8amFExIOcywjcFFAwBHNTXhX1+JGC8m5zfxXmiG9KuqqjN8k/C1oL5JEt/V9XXCL3aJetF+eZsyen8xBiR88v3l8J3isVZlTx1zjHZUovosH0rqYTIj4RtDvLJwu5+H9rPjW+Z/Dn36W/7YZYHVZrx0WhuYfWOT3rzrRIDy2+bYxuCiAYCjmpjwxUOR5J8+Uq/Mb67Gf/NUJH8xwd5I+OVtmmySZJumYr69fUy+zLdJustSfVZ/sdNv2odz1p/w21vedJOBbxkXk66YPeF38mFgHXOEdmTOnMOE18mMhG/OSHaNZSpP+Za1+NCM0d/yxy4LrDb/0oFtYPaNjX7zgX/JHNsYXDQAcFT1YcD1VSec6/8eXTnH8JXb7AnqlfmSMTN/m2Vb5f55VVUeyqoN/Hlpu+ReDOPLl5T5lpvqX44hs/Q7R7SBy7jT3upYGkDA/Zvsdcy48dGR8OPpzNJvFymlS8I/DRK+d2MkfACYavqd9l4/embkeUvCL2/TbC9H3c3r5zu33BPP6mFe/FzepvVrD3k67Gv2sGqDrsNnov6lMBtAyEkaax37zvwgFmbpx9OX8OeahkzCH+NUs/Tb2WyJZx5HYBuYdWOa0W/eeHLULP3AbTBLH8CyTU/41fXVg3tXT+95xv9l2jcSfj1iL4O6cV29YxJ+kW0ScbKAi/AvybCE703qvmWMHa6L1gAC52A47pDEkdnxue43xpm26cISfvfD0D7jW2bdGIIFtPyxy8Kqzbt4aBuYf2Nj33zgXzLHNgYXDQAcVXsYYET6Qd+Wp98z3zZLv6oqI+Ef8qwN8EUmJucfytJYuUOeFzDH/HHWGMOHhdIAgod9jTomoZxOXX2dKuBjOF1Ywu8sVHePvmXWjSFUQMsfuyys2lST28D8Gxv95gP/kjm2MbhoAOCYnAn/+qoJ8M6EL0fpxS30m+n6dcK/efXYuETfNktfTNFvdotFJn9WE355m7Zp/5Cn2ktwCfwJv8xTpT3oQ7K+ZVWRmVmPLnpN1K+Vdt96wV3HVPlJNZ9qrf7I93MITPj6R8AIKb5l1o0hUFDLH7sspNo0U9tAjI2Ne/PaEu9vm2Ebg4sGAI6o6WjUMXlxe/wmyYsfBMssffl8M5KvDe+rX6GnD8sb2b4enM/2ZXlQVhbfpScn5Dfr5FtC/kXpHcNXrwk0jzd9y0Qv7bzTPhZNuZy1o61pZx3rF5LSCo7N/l0Y5MU5hCb8Sv98WIfobcusHzpqLlBoyx+7zFelVqPaQOSNjXjz5qle72+bYRuDiwYAjkV2NG9f3quj+M3zF4+fv3oqv8c+JOFb0n7zUB3Jd36/nRiW126/JzK88mRn6F6kfb4w7zIMvA4fl4EGsGpUXzyU7ZJROwCAqOqOpp6i/+apmHX//NXjepq9+E77Sv4sH9ovtq9fro3bq7oJ37jZXuuQp8qV9sXOdeG9vIB/3LvHapDwYUEDWDWqLx7KdsmoHQBAVKKjcd4Gf6Z/5jfbz/3v1KWI6Ej4sKABrBrVFw9lu2TUDgAgKjoarAIJHxY0gFWj+uKhbJeM2gEAREVHg1Ug4cOCBrBqVF88lO2SUTsAgKjoaLAKzoQPAAAAAADWxTmGj4tFA1g1qi8eynbJqB0AQFR0NFgFX8KPPoEAS0UDWDWqLx7KdsmoHQBAVHQ0WAUSPixoAKtG9cVD2S4ZtQMAiIqOBqtAwocFDWDVqL54KNslo3YAAFHR0WAVSPiwmNAAiixJssK+IM3LaX8XgvD5jYeyXTJqBwAQFR0NVoGED4vxDcAZ8Ms8tS/A7Pj8xkPZLhm1AwCIamhH8/rRs8fP33pXefP0jnOdMt8m6a0yPrbPks2gw+ki2yTZfsALcBamJ/wiSxpmkyvztFlmH7+1D+z2vw5RyQagVq6PrHi14vTFBPwj6n5+mUAxl7n2jb5lzRrU2UChLV8p/c5S3zJhyM7MU8/9TcCzrQkb83WvoV3vtG6/fxuDywYAjkTpaN48vfPswZ1nD0Q+v3n1WH0oNQn/5vmLB3KFB3euXisrPLjz7MGdFy9vLL+uyDZpflAfJonxb1dYF9XnBfaZXAEXZWLCL7K2Ay7zVOvQtcfqiu1S9zGG83U4BncDcI7RV3XN2Rd2oz+VGo9Sfe7PGUaZZd/oW0adTRDS8vUC13sY37LmmYGR3F7PZZ7qv7Vvi0WmrtH5s0M35uteQ7ve8d1+2Db8Hw8AOCk94V+9rqqb5y/qhH/v1U3zsHrz9M6Llzd6wn/0Rv2h/vnOi5c31c3zFw/uvepk/H2WbPNS/LfO8ErgP+SpfXy+Hfkvdp0zAu1JAZyxSQnfTHTa4yLTO2b1sRwDsfXevtfhSEYl/CJLkjTtDOKnealXImOTscnq833OMM4M+0bvfpM6myKg5Xc6FOUJ37J2xxV62tlbz7rhvZynffg25uteA7ve0d1+4DYGFBsAHN/khP/25b1nT6+rSo7qi5/rh3rIl0F9nyXbPN/Jn8UsfWe8V154yNOtsg+uzxTgEvQkfHksY5242O15lUOfTs9uOyIJOf7iSPcExo3hN4ubWazih3o0TTmA43gtKrP6+AzNpy3bem+nTE8J2zd695sN6myM/pZvyYvNPs23zHguYBcWVs/tkmMkfF/32res/nF0tx+4jSHFBgDHNzXhX1+JGC8m5zfxXmiG9KuqqjN8k/C1oL5JEt/V9XXCL3aJetF+eZsyen8xQhK+0r1qMwC7BxJtd+44VjKeCj7+on8/rikJvzmcS/NSpPkiS7I8T9txMoJLXCT8eIyEr09MCto3+pb5n0OfwITveCZk7Sq4RwqrZ/ua/Zx/hG9jvu7V2/Uq6Xx0tx+4jfBiA4BTmJjwxUOR5J8+Uq/Mb67Gf/NUJH8xwd5I+OVtmmySZJumYr69fUy+zLdJustSfVZ/sdNv2odzFpLwXYPslkOJ5ilLV+96qi/hM0nv+KYnfEEZr5eXkfZsADMg4cdjJHxzRrJrLFN5yresRZ2NEdLy9Xqrp2Ao0/Rdy/QNjEn4+lNTbrfQeV9hG/N1r6Fd7/Ruf46PBwCcSt3RXF91wrn+79GVcwxfuc2eoF6ZLxkz87dZtlXun1dV5aGs2sCfl7ZL7sUwvnxJmW+5qf7lCJylr2h7bBL+2eoMVHqpR8fOFeqwzxz9IyDhx9OZpd8uUvZUJPzTCGz5+p3a9dL3LVPWmJ7wjb9ywG7R+wf4NkbCB4Cppt9p7/WjZ0aetyT88jbN9nLU3bx+vnPLPfGsHubFz+VtWr/2kKfDvmYPqzYy4fdOp2OW/qqNHcMv87Sem99eb6le4ZGmnK05AhJ+PH0Jf65pyNTZGGNavu8UsjOf2jop5cSAfC54url5xztzY8av8r8lZyIePUvfu/Gh3T6z9AGs2fSEX11fPbh39fSeZ/xfpn0j4dcj9jKoG9fVOybhF9kmEScLuAj/kkwZw+92595BrLBxqqDXIbKxCb+ZpF9He33SfsCxKeZAwo8nLOH79o3e/aZtYwg2puX7dmnWZaPvtOc5lxA4Uy1sF+remK97Dex6p3f7c3w8AOBU2o7GiPSDvi1Pv2e+bZZ+VVVGwj/k2a1ySC0m5x/K0li5Q54XMMf8cdYGX4ev9rbmkY66rHNoZevpLcdfQa9DZBMSvnkX5Lbu6ktFOVSLjoQfT1jC9+4bfcusG0Oo4S1/8Ah++KyyoHpW1u2r7eAm4d6Yr3sN7Xond/s92xhSbABwdM6Ef33VBHhnwpej9OIW+s10/Trh37x6bFyib5ulL6boN7vFIpM/qwm/vE3btH/IU+0luARh99Jvumgj8WuX/JkdsbauvaN336nY/zpENjLht7d70mWFrMmCo7UjIOHHE5jwvftG737TtjEECmn5ZZ7pF91radK9rBF83ZinnotM+atCrsP3rTNkY77u1b1MWzKy2w/eRsjHAwBOpelo1DF5cXv8JsmLHwTLLH35fDOSrw3vq1+hpw/LG9m+HpzP9mV5UFYW36UnJ+Q36+RbQv5FCZulr1wYaB2Gd1wxWLleZ02C5pGG/ffhGEbfS18nL8PXDtk4aROdrL6+zxmGC034lX/f6FxGnU0R1vKVpfYJ5PZl1luJ9uwM3W1A+xN7d6n225g2Lxu0MV/36lhmTuYb0+0P2YZ3+wBwSrKjefvyXh3Fb56/ePz81VP5PfYhCd+S9puH6ki+8/vtxLD8Vs9WW/378zpD9yLt84V5l2H4dfi4ANfX1/fvf8cxIm+lHsrpB8mO+yvTquJxn6DBVJTtklE7AICo6o6mnqL/5qmYdf/81eN6mr34TvtK/iwf2i+2r1+ujdurugnfuNle65CnypX2xc514b28gH/cu8dqkPBhwYHyqlF98VC2S0btAACiEh2N8zb4M/0zv9l+7n+nLkVER8KHBQfKq0b1xUPZLhm1AwCIio4Gq0DChwX7r1Wj+uKhbJeM2gEAREVHg1XoSfi4TDSAVaP64qFsl4zaAQBERUeDVXAmfAAAAAAAsC7OMXxcLBrAqlF98VC2S0btAACioqPBKvgSfvQJBFgqGsCqUX3xULZLRu0AAKKio8EqkPBhQQNYNaovHsp2yagdAEBUdDRYBRI+LGgAq0b1xUPZLhm1AwCIio4Gq0DChwUNYNWovngo2yWjdgAAUdHRYBVI+LCgAawa1RcPZbtk1A4AIKqhHU2RbdL84F1lnyXOdcp8m6S3pb5yVoT//qrINkm2H/ACnIXpCb/IkobZ5Mo8bZaleelaZC7DqTUNQK1dH7Xm/a8ZtFvCKOrn1/MZxAhz7Rt9y5o1qLCBurVjL0Wl9DtL1ZpxVYBYJ6R6+ut5wMaqqhKfaHVLWlcasqf17RJCdxcju/3gbQQUGwCchNLR7LNkkySbROTz8jZVH0pNwi/zbSJXSJJdoayQJJsk2Vp3mMYJArnyprspc1F9XmCfKb8Ll2Niwi+ytgMu81Tr0LXH6opVVeapa0UsgZrwe2umyDoJ3/Ea89gUcTTV5/kMYpxZ9o2+ZWpCYq84kFI7zlLUC9z4VGgPXT1TkSVZlgVUj7+eB25Mjb3+j3GZp85VfLuE0N3FyG4/eBshxQYAJ6In/F1RVWW+rRN+els2D6t9lmzzUk/42V79of452eZld6y+kr9im5ftpvTTB4c8tY/Pt1srdp0zAtr5BZyrSQnfPJDQHhfGQYv5WEX2WBhPwrc+40j4+pkcEv6xyOob8hlEmBn2jd79pvyMkGzGkLXjKcXOh0B9IuQTU2RJmhcB1eOt56Eba3ar/Z1lX1freoOBu4s5uv3RHw8AOLXJCf+Qp/U0ezGqrwx/miFfPrPPkm2e7+TP4iXOeK+88JCn6tSA+k/CJehJ+PJowjqpsdvzKgcfnZ7dd8RKwl+YTsJ3zbzPCm/CL7LUHCOimuOrq2/QZxBh2q693mspc5LD9o3e/WaDuhrDPP/imKN7TJYAACAASURBVCChl7WyA/MNajcrp3kZUj0B9Ry+Mc9GbCuEBnz1V/ctq38c3e0HbiPs4wEApzI14RciqNcD8p2+f6tM1z/k6aZN+FpQ3ySJ7+r6OuEXO+1XlLcpo/cXIyThm9MW1aMh/Uii7c4dx1H2fpqD2aWZaQzfXErCPw5RfYM+gwhkJPx2xxW8b/Qt8z+HPoEJ3/2MWotKJJWavVlA9fTW85CN6Zv1fIa9I96+XYJ3d6EUxehuP3AbYR8PADiViQlfPBRJPsu2nfnzYk7+JivkBHsj4ddX+2/T1Hf1fplvk3SXpfqsfnlyAZcgJOG7JjlaxgqapyxdvfPQg9ixODMmfHGhaTv/koqOz5nwmfA6mZHwzRnJrrFM5SnfshaxZoz+hG/WWz0Fo1OPtsvdlT3dqITfmRM/5lpzf3fp/4T7dgmhu4s5uv3pHw8AOBU5TdJ6fbvyL9s5x/A7A+nqlfmSMTNfng5oInp5KKs28Oel7ZJ7MYwvX2L7LThbgbP0FW2PPUvC50B2iYyE75qjLw6C+xJ+i4R/HCT8eDqz9NtFSumS8E8jJOFX+kVHYgfWrFMvyvL64gt9yF0/MTAh4Q/dmPG3uz7Dwwf4SfgAMMj0O+11v77Okr3L27Sd0m9eP9+55Z54Vg/z4ufyNq1f217/j0swMuH3TqcLmyGsTWzFcoy5l77rS5ucZwaO8k4uErP04+lL+HNNQybhjxGY8DXK58TskJTHZZ6qG7JMuDf3bZ56Hr6xlu8z3BeFR8/S9/6O4RfnMUsfwHpNT/hVsWum0DvG/2XaNxK+/EI+OQNMv67eMQm/PqFgmzuAMzZlDL/bnXsHscxniPfLZUn4tnH8tqqNWx87apUx/ONw3WmPwbDpwhK+b9/o3W/aNoZgYxJ+u/9y3HnfuNds6KlKdz2P2Fj3L3L8wqHzCnxX3Vl3FxO7/d5thH08AOBU2o7GiPSDvi2ve8986/x5LeEf8qx9VZGJyfmHsjRW7pDnBcwxf5y1wdfhq72teayhLuscbRg9PaOJS2Z+6VTVHc1vFxkJ3zPsT8I/jrr6+j6DGCEs4Xv3jb5l1o0h1PCE7+203B+Z0FMHvfUcujHnVgdtxbdLCN1dTOn2Q7YRXGwAcArOhF/smgDvTPhylF4eP2/azJ/tLfe6t83SN27CX2TyZzXhy7+tqqr6nvyd+/bjvIXdS1+/SLHtsLVheLMj1tbVO3rLDfywJMoXqis1GJTwzavyVST847CfoSPfzyEw4Xv3jd79pm1jCBSS8Ms803sis2JCOqqg6gmp5+CNSa6EHxiEfbsE9zJtychuP3gbocUGAKfQdDTqmLy4PX6T5NXRcsssffl89x544iyAckytDcubX7AnBuezfVkelJXFd+nJMwXNOsaWce7CZukrswrN4xD16utOw7G/zn7BNgezC6JM85aVGjhL3xfwSfhHouYcz2cXI4Qm/Mq/b3Qus+4dqblA6uQjdykqS/134fOfrAypFm//OGhj1qn9+pnVwJ2rb5fgWGae6hjR7Q/aRlCxAcApyI6mvXFdmW/T/LYZZg9J+Ja03zxUR/Kd328nhuW12+/JOQLNk52he5H2+cK8yzD8OnxcANEAtGF79+R7faDfd6RKwj8OcyQT86Fsl4zaAQBEJS+EFNPgxYD5Jstv03qavczY8ur3REn+tq/E0+btm7oJ37jZXuuQp8qV9sXOdeG9vIB/3LvHapDwYXF9fX3/fpr5ql4dZVEu5HRes8qAzPGQc+KhbJeM2gEARCU6Gudt8Ffy79SliOhI+LDgQHnVqL54KNslo3YAAFHR0WAVSPiwYP+1alRfPJTtklE7AICo6GiwCj0JH5eJBrBqVF88lO2SUTsAgKjoaLAKzoQPAAAAAADWxTmGj4tFA1g1qi8eynbJqB0AQFR0NFgFX8KPPoEAS0UDWDWqLx7KdsmoHQBAVHQ0WAUSPixoAKtG9cVD2S4ZtQMAiIqOBqtAwocFDWDVqL54KNslo3YAAFHR0WAVSPiwoAGsGtUXD2W7ZNQOACAqOhqsAgkfFtMaQJmnSZqXxjNZMcMfhhB8fuOhbJeM2gEARDW0oymyTZofvKvss8S5Tplvk/S21FcedERdZJsk2w94Ac7C9IRfZEnDbHJlnjbL9MjnW4STUxqAWr92tlrPcqV+Q15UZDSD2XQ/vxTvXObaN3qWqftGqm0QpXa8pejrfrxdk69KrTwv0HatUzfW/u29Wxr95gP/kjm2MbicAeBIlI5mnyWbJNkkIp+Xt6n6UGoSfplvE7lCkuwKZYUk2STJ1rrDNE4QyJU33U2Zi+rzAvtM+V24HBMTfpG1HXCZp1qHrj1WV6yqqsjaFYuM49il0RO+p3IsR5S2g0zPgWd7OEgbmIs151C8s5hl3+hZVuapayeKXrJ2vKXo65l8y7xVauV5QZG5tjxiY5Uaif2bGf3mA/+SObYxuJwB4Hj0hL8rqqrMt3XCT2/L5mG1z5JtXuoJP9urP9Q/J9u87I7VV/JXbPOy3ZR++uCQp/bx+XZrxa5zRkA7v4BzNSnhl3mq9d/a4yLTO2bzsXszOLkJCV+urw2hdSiHb1nBYdzMlJxD8c5shn2jd79pCsl+kFy1o5air2fyLRtUbUNf0PsR7ets07wMaSxj3/yAv2TqNgaXMwAc0+SEf8jTepq9GNVvdnDdkC+f2WfJNs938mfxEme8V154yFN1akD9J+ES9CR8ecSgzJkzhkK0nlc5wOj07O5DGHrwxRk9S99Rl32TR4mgszJzDsU7n7Zs672dciorbN/o3W92kPCHCEj4vp7Jt2xYtQ19Qd9HNGxjvY1l7JtXJtqN7vYDtzG4nAHgqKYm/EIE9XpAvjMNdqtM1z/k6aZN+FpQ3ySJ7+r6OuEXO+1XlLcpo/cXIyThK92rOJp1jIWo3bkl6Tn6afL9Ao0dwxftJSt6RvDN8wJE0HmR8OMxEr4xxBuyb/Qt66DqBnEkfG9Qb3smb681qNqqoS/oS7FhG+vbyqQ37zoRENrtB25jcDkDwFFNTPjioUjyWbbtzJ8Xc/I3WSEn2BsJv77af5umvqv3y3ybpLss1Wf1y5MLuAQhCV/vW9sO2DIBr3nK0tXrT4VeNohTGHdL6iJL0iwbc9d8juFmRcKPx0j45oxk11im8pRvmYnhy2HsO67Odd2Onsnbaw2pNtdS1wv6P6BhGxuR8MPefOBfMsc2BpczABxV3dHYr29X/mU75xh+ZyBdvTJfMmbmy9MBTUQvD2XVBv68tF1yL4bx5UtsvwVnK3CWviLskCe0q6+sZxFwYuqF3AHkGZ80L5VBfff8/k5tE0FnRcKPpzNLv12k7OFmiTBU22CWhG+7zd6yEn7obfZI+ABwetPvtNf9+jpL9i5v03ZKv3n9fOeWe+JZPcyLn8vbtH5te/0/LsHIhN87nS58ln7lzv44FecYft8F9ZWe8G2HZbanyTKzIuHH05fw55qGrE36RyBry++7U8gMs/T1s5muszzOifXdaXITNhZjlr7x5NRun1n6ANZresKvil0zhd4x/i/TvpHw5RfyyVlp+nX1jkn49QkF29wBnLEpY/jd7tw7iOU5Ec85+oW5vr6+f/87YQP4+rA8Y/gLQMKPJyzh+/aN3v2m8gTxfjit5dtL0dcz+ZYFVJsu4AXh89fCfvvwO+0FvvnQv2SGbQwuZwA4qrajMSL9oG/L694z3zp/Xkv4hzxrX1VkYnL+oSyNlTvkeQFzzB9nbfB1+Gpvax5PqMs6ocKT4unBl8Zzw6o0TX2HpIzhLwAJP56whO/dN/qWWTeMUOaXgFhK0dczeXutvmrr6HnBsE9l0G/vbTmj33zgXzLHNgaXMwAckzPhF7smwDsTvhyll2dFN23mz/aWe93bZukbN+EvMvmzmvDl31ZVVX1P/s59+3Hewu6l33TRRuLXBkmsx6nq0VHzujJPXethEWwJXx/NclUYY/gLQMKPJzDhe/eNvmXsDqeQteMtRXfP5F/m7e5sPC8YPksj5LcHnBsa9+a1JSO7/eBtDC5nADii5jBAHZMXt8dvkrw6Wm6ZpS+f794DT5wFUI4JtGF58wv2xOB8ti/Lg7Ky+C49eaagWcfYMs5d2Cx9JauZR03qvdg6Dcf9OjX9cTi7OHpEFJVluTbSkdXDx/Ctd/KjPUzlvVEixTtJaMKv/PtGxzL7rS2pslCidvpL0dOjeZd5uzsbxwvsZz/7tuj87dbNObc24s2bZ0zGdPtDtjG4nAHgWORhQHvjujLfpvltM8wekvAtab95qI7kO7/fTgzLa7ffk3MEmic7Q/ci7fOFeZdh+HX4uAD6dfh9t25SD+VcCV89ZCOwRDbuyw4RgrJdMmoHABBV3dHU0+DFgPkmy2/Tepq9zNjy6vdESf62r8TT5u2bugnfuNle65CnypX2xc514b28gH/cu8dqkPBhwYHyqlF98VC2S0btAACiEh2N8zb4K/l36lJEdCR8WHCgvGpUXzyU7ZJROwCAqOhosAokfFiw/1o1qi8eynbJqB0AQFR0NFiFnoSPy0QDWDWqLx7KdsmoHQBAVHQ0WAVnwgcAAAAAAOviHMPHxaIBrBrVFw9lu2TUDgAgKjoarIIv4UefQIClogGsGtUXD2W7ZNQOACAqOhqsAgkfFjSAVaP64qFsl4zaAQBERUeDVSDhw4IGsGpUXzyU7ZJROwCAqOhosAokfFjQAFaN6ouHsl0yagcAEBUdDVaBhA8LTwMosiQrjvznYBg+v/FQtktG7QAAohra0RTZJs0P3lX2WeJcp8y3SXpb6isPOg4vsk2S7Qe8AGdhesIvsqRhNrkyT5tlaV7aXl6vQmhcFE8DKPPUVZeV3ho83BvADLrVV2SU+Tzm2jd6lgXsNmEX2vKV0u8sVWvGXOirUTvPK7SdZcjWnC9QW0x/u/G1r9C2N7Hb793G8IIGgONQOpp9lmySZJOIfF7epupDqUn4Zb5N5ApJsiuUFZJkkyRb6w7TOEEgV950N2Uuqs8L7DPld+FyTEz4RdZ2wGWeah269lhdUVHmaZplKZ34wjQNoHvo6FBXtDieLvO0qdH2CFu2AdJmbMrnt61AynwWs+wb/cvaB0VGxQ0S0vL1Ajd6Ju2hUTVlnjYriq33dVueetbnQjn6R2NbzheYbcjD1y2HdNk9b2uWbfiWAcCJ6Ql/V1RVmW/rhJ/els3Dap8l27zUE362V3+of062edkdq6/kr9jmZbsp/fTBIU/t4/Pt1opd54yAdn4B52pSwi9zPZtrj4tM75jNx/X6WRFwcIMj0xK+ZYTRWV1Nei/zVPwgnlFrn4Qfm6w+WVUcJc9nhn2jd7/p3wz8Alp+pyMy9k19vVbAotqAeh7+EdVeEP5q3xsMfPNTu/2+bQwpNgA4uskJ/5Cn9TR7MaqvnK01Q758Zp8l2zzfyZ/FS5zxXnnhIU/VqQH1n4RL0JPwlWHX7rS7bs+rhPVOz945CJEHYST85TESfs9Ivjm0FDzijzjMFErCn09btvWOS/lwhO0bvftNA+lmmP6WbynRImue8Q1qG3oT/pB6PlbC93XLfcvac7fjuv3AbQwqNgA4uqkJvxBBvR6Q7wyibZXp+oc83bQJXwvqmyTxXV1fJ/xip/2K8jZl9P5ihCR8c9qiejSkH1W03bnjOEqfV6h0/PTfixI+hu8d0a8qRuxPgYQfj5HwjZQVsm/0LdOR74cKTPjuZ9Ra9F0j0T+CP6CeqxG9oO9yAidft+ztspWiGN3tB25jULEBwNFNTPjioUjyWbbtzJ8Xc/I3WSEn2BsJv77af5umvqv3y3ybpLss1Wf1y5MLuAQhCd81ydFykNM8ZenqzYl4Adfq4USGX4evVDtj+KdGwo/HSPjmjGTXWKbylG9Zux3tzCoChbR8vd7qXVanHq3lP+iuFr317P8zvbp3CAjavfq65Z4uO+htzbGNAcUGACdQdzT269uVf9nOOYbfGUhXr8yXjJn58nRAE9HLQ1m1gT8vbZfci2F8+RLbb8HZCpylr2h77NFdvb6QhL88jOGvGgk/ns4s/XaRsl+bKcJwp72BAlu+fqd2rfTrRVleh2ZH6QfcaS+4nqeN39v/MvufTcIHgKmm32mv+/V1luxd3qbtlH7z+vnOLffEs3qYFz+Xt2n92vb6f1yCkQm/dzqdb7qectmj9jwWY9R1+OHj/QxPxkXCj6cv4c88DZmJ+oOMaflKEZu53ZvjzZvUmfu2sHp2TJNz7ygDzvo4u9TRs/Qdb9t8W3Nsg1n6AJZtesKvil0zhd4x/i/TvpHw5RfyyeNu/bp6xyT8+oSCbe4AztiUMfxud+4dxKqfcedA+vDFGHcvfXX0SBylips0ii9EVC9uJbNERcKPJyzh+/aN3v1mB+OXQ4xp+e0ZZ8vafTfH8+zIAup58ByNsBe4/zJnt9yzzLvxkG4/fBvDPh4AcGxtR2NE+kHflte9Z751/ryW8A951r6qyMTk/ENZGit3yPMC5pg/ztrg6/DV3tY8+jGvtO9c3Gg9NGEMf3nUBpDmZc/wPLP0F4aEH09YwvfuG33LTKSbQYa3fG+n5T3B0nvupaeep158H/6LPZtQ3kRolz1Htz/XxwMAjs6Z8ItdE+CdCV+O0suzops282d7y73ubbP0jZvwF5n8WU348m+rqqq+J3/nvv04b2H30tcvUjRv8KN27ubse3UWo+dAiQ58WWxfK+2eRdxWnj6/dOQ5AUxFwo8nMOF7942eZWWeuvah6BfS8ss8029qaFaMcc/Dtg9TNhRwHX5fPQ/bD/peUOapo1Pu8nXL7mXakpHdfvA2vNsHgBNTZrlu1Ugvg32T8GuWWfry+e498MRZAOWwWhuWN79gTwzOZ/uyPCgri+/Sk2cKmnWMLePchc3SV4Kbebipju52Go7ndcZKtLlFqRtAE99DE74FY/jHp56g6aA2JglN+JV/3+hZpp4mo7KGCWv5ylL/Xfhs08WHnaV01LP9VKhnk30vGNJofN2yY5l5qmlMtz9kG97tA8ApyY6mvXFdmW/T/LYZZg9J+Ja03zxUR/Kd328nhuW12+/JOQLNk52he5H2+cK8yzD8OnxcANEAjAtUndTZlcHILvGYI5mYD2W7ZNQOACAqOQYmpsGLAfNNlt+m9TR7mbHl1e+JkvxtX4mnzds3dRO+cbO91iFPlSvti53rwnt5Af+4d4/VIOHD4vr6+v79NGuqfsIYPo6PnBMPZbtk1A4AICrR0Thvg7+Sf6cuRURHwocFB8qrRvXFQ9kuGbUDAIiKjgarQMKHBfuvVaP64qFsl4zaAQBERUeDVehJ+LhMNIBVo/rioWyXjNoBAERFR4NVcCZ8AAAAAACwLs4xfFwsGsCqUX3xULZLRu0AAKKio8Eq+BJ+9AkEWCoawKpRffFQtktG7QAAoqKjwSqQ8GFBA1g1qi8eynbJqB0AQFR0NFgFEj4saACrRvXFQ9kuGbUDAIiKjgarQMKHBQ1g1ai+eCjbJaN2AABR0dFgFUj4sKABrBrVFw9lu2TUDgAgqqEdTZFt0vzgXWWfJc51ynybpLelvnJWhP/+qsg2SbYf8AKchZ6EX+ZpokvzUttAkbXLrC2uzFPLgt6X4ZS6+68i61R9pVfj2Oqn/menVp/6EbbUIAYa0rX79nKeZdpelzobIrTlj102vOMa2QZibmz0mw/8bXNsgwMEAEuldDT7LNkkySYR+by8TdWHUpPwy3ybyBWSZFcoKyTJJkm21h2mcYJArrzpbspcVJ8X2GfK78LlCEn4SiddZFqnXWRt/2uuqnbS3SPY5hlxNEAfvizK/qs9XLOc3FHqTW0L7RO26u95HSazf34p6TkEJ3zfztGzrMxTZcXuXhU+QS1/7LKe/s5iZBuIubHRbz7wL5ljG4OLBgCOR0/4u6KqynxbJ/z0tmweVvss2ealnvCzvfpD/XOyzcvuWH0lf8U2L9tN6acPDnlqH59vt1bsOmcEtPMLOFcDE77W+ZZ5qnXf2mM55tsfK4qMHnxpZAOQI/Ahh1nmoV1g9XMINz9ZfeZHi4/adIEJ37dz9O44TZyXGSKk5Y9dNqja+l5wqo2NffOBf8kc2xhcNABwTJMT/iFPNzJHbRNlyn035Mtn9lmyzfOd/Fm8xBnvlRce8lSdGlD/SbgEgxN+2912O17bwSgJf43MGDM44Usk/FOoq6/zyaKop2s/GnXbVuYkayPxzp1j2I4zZBlMAS1/7LJh1dbzglNtbErBhJTDDNsYXDQAcFRTE34hgno9IN+Z5LxVpusf8nTTJnwtqG+SxHd1fZ3wi532K8rblNH7izFqDN9xQGANEH29M/l+icYkfGtNBxyccfw2O1F9lrEvynoyI+EbQ7yycH07x7AdZ/8idPW3/LHLhlVb1fOCE21s0psP6Pfn2MbgogGAo5qY8MVDkeSzbNuZPy/m5G+yQk6wNxJ+fbX/Nk19V++X+TZJd1mqz+qXJxdwCYYl/J6DWNdT3UzhvrgbSzA84TvW6I2UHL1F4Mw5THidzEj45oxk11im8lTYjrOzSQTob/ljlw2qNtfSUW1gxo2NfvOBf8kc2xhcNABwVHKymPX6duVftnOO4XcG0tUr8yVjZr48HdBE9PJQVm3gz0vbJfdiGF++xPZbcLaG3kvfuB3O2ITf4k57SzQ04XtnhXpqlwATBQk/ns4s/XaRUrqzRBjOfg1GwvdujIQPAFNNv9Ne9+vrLNm7vE3bKf3m9fOdW+6JZ/UwL34ub9P6te31/7gEg2fpt+aZpW/dEE5sUMLvjGWay3xXGFPxETBLP56+hD/XNGROfY5xqln69RUb2peHjG4Ds25MM/rNG0+OmqUfuA1m6QNYtukJvyp2zRR6x/i/TPtGwpdfyCfvTKpfV++YhF+fULDNHcAZm5Dwu7257XR9QKZgYHFxwhN+T0z3D+5z1BaH635jnEybLizh+3aOATtO4v1IAS1/7LKw/s67eFAbiLKxsW8+8C+ZYxuDiwYAjqo9DDAi/aBvy+veM986f15L+Ic8a19VZGJy/qEsjZU75HkBc8wfZ21Cwu8c4Trn4zGGvzaBCb9/cMVzGwaqPJq6+jrFzCdturCE79059u04mWkxWkDLH7ssrL9TTWkDkTY2+s0H/iVzbGNw0QDAMTkTfrFrArwz4ctRenlWdNNm/mxvude9bZa+cRP+IpM/qwlf/m1VVdX35O/ctx/nbUrC10eaHP2w5Wi1yJQtMlq1RCEJP6jmLNVPjUfXVJ82U4J8P4fAhO/dOfqWMblliqCWP3ZZSH+nGdsGYm5s3JvXlnh/2wzbGFw0AHBESkTaqpFeBvsm4dcss/Tl89174ImzAMoxgTYsb37Bnhicz/ZleVBWFt+lJ88UNOsYW8a5m5Tw5QraBYM1/VpCYw3tBn40t+WRDaBzp8WkOUizVnBTme7q978Oc1BP0CjlTW6cQWjCrzw7R/cy6weOigsW2vLHLvNVqdWINhB9YyPevHneyfvbZtjG4KIBgGORHU1747oy36b5bTPMHpLwLWm/eaiO5Du/304My2u335NzBJonO0P3Iu3zhXmXoSfh4zLRAFaN6ouHsl0yagcAEJW8HExMgxcD5pssv03rafYyY8ur3xMl+du+Ek+bt2/qJnzjZnutQ54qV9oXO9eF9/IC/nHvHqtBwocFDWDVqL54KNslo3YAAFGJjsZ5G/yV/Dt1KSI6Ej4saACrRvXFQ9kuGbUDAIiKjgarQMKHBQ1g1ai+eCjbJaN2AABR0dFgFUj4sKABrBrVFw9lu2TUDgAgKjoarIIz4QMAAAAAgHWxJPz7AAAAAABghcyEDwAAAAAAVsqS8H/1q199+OGH75+XDz/88Fe/+tXxyxcAAAAAgOMwE37+8ce/+MUv/v73v39zXv7+97//4he/yD/++CSlDAAAAABAbGbCf/LkyT/+8Y+vv/769rx8/fXX//jHP548eXKSUgYAAAAAIDYz4b///vvffPPNqfN4FN988837779/klIGAAAAACA2S8L/97///f/O0b///W8SPgAAAADgXNkT/u4ckfABAAAAAGeMhA8AAAAAwDmwJ/ytx9UPk+Td//gv+aPFD6/kuv/1H+/Wq7r913+8+8MrsbEfXrUvqR+av1tszv6Le34VCR8AAAAAcMYsCf/rr7/+vz1+/zBJHv5ee6w+bPznR++++9F/9m1NrPX7h8nDj5r1//Ojdy1b/P1DsVj+f9Cv+vrrr0n4AAAAAIBzZU/4Xw7y54/effejP4cs+fNH76pj7h/92XxKPm88+/B3X/7uofLw4UPzNc323Ej4AAAAAIAzNjjh/+5hkjz8nfzJyp7c3/3oz1/++aN3xWvN8C/WlsuU9fTVfvdQPJD/V1Zwn2Yg4QMAAAAALoA94X/h9ean306+/dM37YOHn37xxacPk4efWtYUK7756bcfftr8T1v0xRefPlTG5R9++sUXn/7023Kh8oovvvji04fiafl/fTs9SPgAAAAAgDNmSfj/+te//k+oP334reQHvxU///YHzY/K4m99+Cfxww9+2/xPXfTbHyTiZeLlf/rwW0mS/OC3v/3Btz78k7KB5lfUS+2zB9R1O/71r3+R8AEAAAAA58qe8P8S5JP3kuTuT/74l7988l7y3id/+ctf/viTu+IJ6Y8/uSse//End9/7pPmftkhuSnthvWa70h9/cjdJkvr3qa/Vt+NDwgcAAAAAnDF7wv/ffp+8l7z35Mnd5L1P2seftMu0B+Ln10/uvvdJ87/6mbtPXov1dc0r7r73nlhH+cV3n7xultlf6ETCBwAAAACcsTEJvw30r0XMrxP/3SdP3kvUSP5J87B+iSXhNxvxnyvQEn7z+5T0r2yahA8AAAAAuDyWhP/Pf/7zrc9nP777/d+8ffv27dvffD+5++PP3r79zfeT7//msx/fvfvjz+RT6uK39RrqF9fBYQAAAftJREFUS9+K1d++ffvZb37z2Wc/rgfkm9e+/c33jSfEk3d//Jn662x/lcs///lPEj4AAAAA4FzZE/7nHn/44J13PviD+CH53q8///zzz3/9veR7v5aPf/295J0P/vD557/+XlIvbl/zhw/eUWbVi818Lp9+54MPvpckckvtRprVPv/8199754Nfi1+jbypJkva3OZDwAQAAAABnzJLw9/t96Vb86J13flTIR7/8bh3W26ea1ZLv/tJcofjRO9/9pb6dX343SRL5pNykurl6S/WGvvuj+nX636Ft2mG/35PwAQAAAADnanDCf3Dn2ZL/kfABAAAAAJfJnvD/1zki4QMAAAAAzpgl4X/11Vc35+irr74i4QMAAAAAzpWZ8J88efLXv/71yy+//O/z8uWXX/71r3998uTJSUoZAAAAAIDYzIT/8ccf//znP//b3/721Xn529/+9vOf//zjjz8+SSkDAAAAABCbmfCrqvrZz3725MmT98/LkydPfvaznx2/fAEAAAAAOA5LwgcAAAAAAKtDwgcAAAAA4ByQ8AEAAAAAOAckfAAAAAAAzgEJHwAAAACAc0DCBwAAAADgHJDwAQAAAAA4ByR8AAAAAADOAQkfAAAAAIBzQMIHAAAAAOAckPABAAAAADgHJHwAAAAAAM4BCR8AAAAAgHPw/wELeQvC97QoRQAAAABJRU5ErkJggg==" alt="" />
增加:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>添加</title>
</head>
<body>
<form action="addTest.php" method="post">
代号:<input type="text" name="code"/><br/>
姓名:<input type="text" name="name"/><br/>
<!--选择的男女-->
性别:<input type="radio" name="sex" value="1" checked="checked"/>男
<input type="radio" name="sex" value="0"/>女<br/>
<!--下拉列表的民族-->
民族:
<select name="nation">
<?php
include("DBDA.php");
$db=new DBDA();
$sql="SELECT * FROM nation";
$arr=$db->Query($sql,1,"testa");
for($i=0;$i<count($arr);$i++){
echo "<option value='{$arr[$i][0]}'>{$arr[$i][1]}</option>";
}
?> </select><br/>
生日:<input type="text" name="birthday"/><br/>
<input type="submit" value="确认添加"/>
</form>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>添加处理界面</title>
</head>
<body>
<?php
$code=$_POST["code"];
$name=$_POST["name"];
$sex=$_POST["sex"];
$nation=$_POST["nation"];
$birthday=$_POST["birthday"];
include("DBDA.php");
$db=new DBDA();
$sql="INSERT INTO info VALUES ('{$code}','{$name}',{$sex},'{$nation}',{$birthday});";
$result=$db->Query($sql,0);
if($result){
header("location:table.php");
}else{
echo "<script>alert('添加失败!');</script>";
}
?>
</body>
</html>
删除:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>删除</title>
</head>
<body>
<?php
$code=$_GET["code"];
include("DBDA.php");
$db=new DBDA();
$sql="DELETE FROM info WHERE code='{$code}'";
$result=$db->Query($sql,0);
if($result){
header("location:table.php");
}
?>
</body>
</html>
修改:
5.封装数据库的连接(主要是连接函数)
封装的链接数据库的类:
<?php class DBDA
{
public $host = "localhost"; //服务器地址
public $uid = "root"; //数据库的用户名
public $pwd = "123"; //数据库的密码 //执行SQL语句,返回相应结果的函数
//$sql是要执行的SQL语句
//$type是SQL语句的类型,0代表增删改,1代表查询
//$db代表要操作的数据库
public function Query($sql,$type=1,$db="testa")
{
//造连接对象
$conn = new MySQLi($this->host,$this->uid,$this->pwd,$db); //判断连接是否成功
!mysqli_connect_error() or die("连接失败!"); //执行SQL语句
$result = $conn->query($sql); //判断SQL语句类型
if($type==1)
{
//如果是查询语句返回结果集的二维数组
return $result->fetch_all();
}
else
{
//如果是其他语句,返回true或false
return $result;
}
} }
分页类
<?php
/**
file: page.class.php
完美分页类 Page
*/
class Page {
private $total; //数据表中总记录数
private $listRows; //每页显示行数
private $limit; //SQL语句使用limit从句,限制获取记录个数
private $uri; //自动获取url的请求地址
private $pageNum; //总页数
private $page; //当前页
private $config = array( //弄成对象是很方便的,体会一下
'head' => "条记录",
'prev' => "上一页",
'next' => "下一页",
'first'=> "首页",
'last' => "末页"
);
//在分页信息中显示内容,可以自己通过set()方法设置
private $listNum = 10; //默认分页列表显示的个数 /**
构造方法,可以设置分页类的属性
@param int $total 计算分页的总记录数
@param int $listRows 可选的,设置每页需要显示的记录数,默认为25条
@param mixed $query 可选的,为向目标页面传递参数,可以是数组,也可以是查询字符串格式
@param bool $ord 可选的,默认值为true, 页面从第一页开始显示,false则为最后一页
*/
public function __construct($total, $listRows=25, $query="", $ord=true){
$this->total = $total;
$this->listRows = $listRows;
$this->uri = $this->getUri($query);
$this->pageNum = ceil($this->total / $this->listRows);
/*以下判断用来设置当前面*/
if(!empty($_GET["page"])) {
$page = $_GET["page"];
}else{
if($ord)
$page = 1;
else
$page = $this->pageNum;
} if($total > 0) {
if(preg_match('/\D/', $page) ){
$this->page = 1;
}else{
$this->page = $page;
}
}else{
$this->page = 0;
} $this->limit = "LIMIT ".$this->setLimit();
} /**
用于设置显示分页的信息,可以进行连贯操作
@param string $param 是成员属性数组config的下标
@param string $value 用于设置config下标对应的元素值
@return object 返回本对象自己$this, 用于连惯操作
*/
function set($param, $value){
if(array_key_exists($param, $this->config)){
$this->config[$param] = $value;
}
return $this;
} /* 不是直接去调用,通过该方法,可以使用在对象外部直接获取私有成员属性limit和page的值 */
function __get($args){
if($args == "limit" || $args == "page")
return $this->$args;
else
return null;
} /**
按指定的格式输出分页
@param int 0-7的数字分别作为参数,用于自定义输出分页结构和调整结构的顺序,默认输出全部结构
@return string 分页信息内容
*/
function fpage(){
$arr = func_get_args(); $html[0] = "<span class='p1'> 共<b> {$this->total} </b>{$this->config["head"]} </span>";
$html[1] = " 本页 <b>".$this->disnum()."</b> 条 ";
$html[2] = " 本页从 <b>{$this->start()}-{$this->end()}</b> 条 ";
$html[3] = " <b>{$this->page}/{$this->pageNum}</b>页 ";
$html[4] = $this->firstprev();
$html[5] = $this->pageList();
$html[6] = $this->nextlast();
$html[7] = $this->goPage(); $fpage = '<div style="font:12px \'\5B8B\4F53\',san-serif;">';
if(count($arr) < 1)
$arr = array(0,1,2,3,4,5,6,7); for($i = 0; $i < count($arr); $i++)
$fpage .= $html[$arr[$i]]; $fpage .= '</div>';
return $fpage;
} /* 在对象内部使用的私有方法,*/
private function setLimit(){
if($this->page > 0)
return ($this->page-1)*$this->listRows.", {$this->listRows}";
else
return 0;
} /* 在对象内部使用的私有方法,用于自动获取访问的当前URL */
private function getUri($query){
$request_uri = $_SERVER["REQUEST_URI"];
$url = strstr($request_uri,'?') ? $request_uri : $request_uri.'?'; if(is_array($query))
$url .= http_build_query($query);
else if($query != "")
$url .= "&".trim($query, "?&"); $arr = parse_url($url); if(isset($arr["query"])){
parse_str($arr["query"], $arrs);
unset($arrs["page"]);
$url = $arr["path"].'?'.http_build_query($arrs);
} if(strstr($url, '?')) {
if(substr($url, -1)!='?')
$url = $url.'&';
}else{
$url = $url.'?';
} return $url;
} /* 在对象内部使用的私有方法,用于获取当前页开始的记录数 */
private function start(){
if($this->total == 0)
return 0;
else
return ($this->page-1) * $this->listRows+1;
} /* 在对象内部使用的私有方法,用于获取当前页结束的记录数 */
private function end(){
return min($this->page * $this->listRows, $this->total);
} /* 在对象内部使用的私有方法,用于获取上一页和首页的操作信息 */
private function firstprev(){
if($this->page > 1) {
$str = " <a href='{$this->uri}page=1'>{$this->config["first"]}</a> ";
$str .= "<a href='{$this->uri}page=".($this->page-1)."'>{$this->config["prev"]}</a> ";
return $str;
} } /* 在对象内部使用的私有方法,用于获取页数列表信息 */
private function pageList(){
$linkPage = " <b>"; $inum = floor($this->listNum/2);
/*当前页前面的列表 */
for($i = $inum; $i >= 1; $i--){
$page = $this->page-$i; if($page >= 1)
$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";
}
/*当前页的信息 */
if($this->pageNum > 1)
$linkPage .= "<span style='padding:1px 2px;background:#BBB;color:white'>{$this->page}</span> "; /*当前页后面的列表 */
for($i=1; $i <= $inum; $i++){
$page = $this->page+$i;
if($page <= $this->pageNum)
$linkPage .= "<a href='{$this->uri}page={$page}'>{$page}</a> ";
else
break;
}
$linkPage .= '</b>';
return $linkPage;
} /* 在对象内部使用的私有方法,获取下一页和尾页的操作信息 */
private function nextlast(){
if($this->page != $this->pageNum) {
$str = " <a href='{$this->uri}page=".($this->page+1)."'>{$this->config["next"]}</a> ";
$str .= " <a href='{$this->uri}page=".($this->pageNum)."'>{$this->config["last"]}</a> ";
return $str;
}
} /* 在对象内部使用的私有方法,用于显示和处理表单跳转页面 */
private function goPage(){
if($this->pageNum > 1) {
return ' <input
style="width:20px;height:17px !important;height:18px;border:1px solid #CCCCCC;"
type="text"
onkeydown="javascript:
if(event.keyCode==13){var page=(this.value>'.$this->pageNum.')?'.$this->pageNum.':this.value;location=\''.$this->uri.'page=\'+page+\'\'}"
value="'.$this->page.'">
<input style="cursor:pointer;width:25px;height:18px;border:1px solid #CCCCCC;" type="button" value="GO"
onclick="javascript:
var page=(this.previousSibling.value>'.$this->pageNum.')?'.$this->pageNum.':this.previousSibling.value;location=\''.$this->uri.'page=\'+page+\'\'"
> ';
}
} /* 在对象内部使用的私有方法,用于获取本页显示的记录条数 */
private function disnum(){
if($this->total > 0){
return $this->end()-$this->start()+1;
}else{
return 0;
}
}
}
主要是如何使用:
该类中有比较重要的函数,也是主要使用的函数
该类的构造函数和fpage()函数