练习通过数据库查询一个表,操作这个表的增、删、改、查的功能!
一、主页面
<!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> <table 100% border="1" cellpadding="0" cellspacing="0"> <tr style="background-color:#CF0"> <td>代号</td> <td>姓名</td> <td>性别</td> <td>民族</td> <td>生日</td> <td>操作</td> </tr> <?php //造链接对象 $db = new mysqli("localhost","root","517","mydb"); //判断是否链接成功 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sql = "select * from Info "; //执行sql语句 $result = $db->query($sql); //返回的$result是一个结果集 //处理查询结果 $attr = $result->fetch_all(); /*$result 到这步就是一个对象,可以利用对象里的方法 可以用1.fetch_row(),一行一行的取,取出来的是一个索引数组 2.fecth_all() 取出所有的数据,返回的是一个二维数组 3.fetch_assoc() 一行一行的取 取出的是一个关联数组*/ for($i=0;$i<count($attr);$i++) { echo"<tr>"; $attr[$i]; //取出的数据是一个行的数组 //因为$attr[$i]就是一个数组,所以需要在遍历这个数组查出数据 for($j=0;$j<count($attr[$i]);$j++) { echo"<td>{$attr[$i][$j]}</td>"; //适用于列数比较多的数据循环数据 } /*造操作表里的删除和修改,要在for循坏外面写<td>,因为下面的<tr>是在外层的for循环里的,所以每一行数据都会循环出来删除和修改的a标签. 为了清楚的知道到底操作的是哪条数据,所以可以用?手写get提交方式(这种方式叫做写一个querystring),传一个主键值来唯一标识这条数据*/ echo"<td><a href='Delete.php?code={$attr[$i][0]}'>删除</a> <a href='Delete.php?code={$attr[$i][0]}'>删除</a></td>"; echo"</tr>"; } ?> </table> <!--点击按钮添加数据--> <br /> <!--添加数据跳转页面也可以用JavaScript,找到这个元素,利用window.open做, 这里用<a>标签做--> <a href="tianjia.php"><input type="button" value="添加数据"/></a> </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> <form action="Add.php" method="post"> <div> 代号:<input type="text" name="code"/> <!--只要提交表单,input里必须有name,因为到处理页面要接收name值--> </div> <div> 姓名:<input type="text" name="name"/> </div> <div> <!--添加value值,提交的时候选中哪个,就提交哪个value的值; 注意name要设置成一样的,才会互斥--> 性别:<input type="radio" name="sex" value="ture" checked="checked"/>男 <input type="radio" name="sex" value="false"/>女 </div> <div> <!--<select>也是表单元素,所以也要设置name值--> 民族: <select name="nation"> <?php //造链接对象 $db = new MySQLi("localhost","root","517","mydb"); //判断是否出错 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sql = "select * from Nation"; //执行sql语句 $result = $db->query($sql); //处理结果 $attr = $result->fetch_all(); for($i=0;$i<count($attr);$i++) { echo"<option value='{$attr[$i][0]}'>{$attr[$i][1]}</option>"; //点击提交的时候,传过去的是value值 } ?> </select> </div> <div> 生日:<input type="text" name="birthday"/> </div> <div> <input type="submit" value="确定"/> <a href="/LianXi/Untitled-4.php"><input type="button" value="返回"/></a> </div> </body> </html>
三、添加处理页面
<?php //接收上个页面传过来的name值 送到数据库 $code = $_POST["code"]; //post引号里的值 是从上个页面传过来的name值,用一个变量接收一下后在这个处理页面调用 $name = $_POST["name"]; $sex = $_POST["sex"]; $nation = $_POST["nation"]; $birthday = $_POST["birthday"]; //造链接对象 $db = new MySQLi("localhost","root","517","mydb"); //判断是否出错 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sql = "insert into Info values('{$code}','{$name}',{$sex},'{$nation}','{$birthday}')"; //value值中如果是字符串则需要加单引号,其他的不用加(布尔型,整型,浮点型);$sex是布尔类型的,所以在value值里不用加单引号. //执行sql语句 $result = $db->query($aql); //因为$result 接收的不是查询语句,所以返回的是ture或者false if($result) { header("location:tianjia.php"); } else { echo"添加失败"; }
四、删除页面
<?php //删除处理页面 $code = $_GET["code"]; //造链接对象 $db = new mysqli("localhost","root","517","mydb"); //判断是否链接成功 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sql = "delete from Info where code='{$code}'"; //执行sql语句 $result = $db->query($sql); //返回的$result是一个结果集 if($result) { header("location:Untitled-4.php"); } else { echo"链接失败!"; }
五、修改页面
<!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"]; //用get方式接收到传过来的主键值,用主键值查出数据 //造链接对象 $db = new MySQLi("localhost","root","517","mydb"); //判断是否出错 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sqlxq = "select * from Info where Code='{$code}'"; //执行sql语句 $resultxq = $db->query($sqlxq); $attrxq = $resultxq->fetch_row(); //因为通过主键值只查出来一条数据,所以用fetch_row()比较方便 ?> <form action="Update.php" method="post"> <div> 代号:<input type="text" name="code" readonly="readonly" value="<?php echo $attrxq[0]?>"/> <!--只要提交表单,input里必须有name,因为到处理页面要接收name值;--> </div> <div> 姓名:<input type="text" name="name" value="<?php echo $attrxq[1]?>"/> </div> <div> <!--添加value值,提交的时候选中哪个,就提交哪个value的值; 注意name要设置成一样的,才会互斥--> 性别:<input type="radio" name="sex" value="ture" <?php echo $attrxq[2]?"checked='checked'":"" ;?>/>男 <input type="radio" name="sex" value="false" <?php echo $attrxq[2]?"":"checked='checked'" ;?>/>女 </div> <div> <!--<select>也是表单元素,所以也要设置name值--> 民族: <select name="nation"> <?php //写sql语句 $sql = "select * from Nation"; //执行sql语句 $result = $db->query($sql); //处理结果 $attr = $result->fetch_all(); for($i=0;$i<count($attr);$i++) { if($attrxq[3]==$attr[$i][0]) { echo"<option selected='selected' value='{$attr[$i][0]}'>{$attr[$i][1]}</option>"; //点击提交的时候,传过去的是value值 } else { echo"<option value='{$attr[$i][0]}'>{$attr[$i][1]}</option>"; } } ?> </select> </div> <div> 生日:<input type="text" name="birthday" value="<?php echo $attrxq[4]?>" /> </div> <div> <input type="submit" value="修改"/> <a href="/LianXi/Untitled-4.php"><input type="button" value="返回"/></a> </div> </body> </html>
六、修改处理页面
<?php $code = $_POST["code"]; $name = $_POST["name"]; $sex = $_POST["sex"]; $nation = $_POST["nation"]; $birthday = $_POST["birthday"]; //造链接对象 $db = new MySQLi("localhost","root","517","mydb"); //判断是否出错 !mysqli_connect_error() or die("链接失败"); //写sql语句 $sql = "update Info set Name='{$name}',Sex={$sex},Nation='{$nation}',Birthday='{$birthday}' where Code='{$code}'"; //执行sql语句 $result = $db->query($aql); if($result) { header("location:Untitled-4.php"); } else { echo"修改失败"; }
注意事项!!
1.如果运行程序的时候出现错误,显示的是fetch_all()或fetch_row()有错误,表示是sql语句写错了
2.一般做程序的时候,修改页面中的主键值一般是不允许修改的,可以显示,但是最好不要设置成可以修改的,会出现问题;设置成修改的可能导致主键值重复(修改页面中的提示)
3.手写get提交方式的这种做法叫做写一个querystring,问号后面直接跟name;如果写多个,用@符号隔开
4.给文件命名的时候,一般按照驼峰命名法!就是单词首字母大写,例如:XiuGaiChuLi.php
5.做项目的时候,要考虑到界面的友好性,怎么样才能让用户用着更舒服更顺手,尽力去完善
6.完善页面:<a href="delete.php" onclick="return confirm('确定删除吗?')">删除</a>