从网页页面上对数据库进行更改,连接着之前做的增、删、查。
1.先做一个修改页面
<body> <!--这个页面需要让用户看到一些数据,所以不是一个纯php页面,页面效果和增加页面的效果非常相似,直接把增加页面的代码复制过来-->
<?php //先嵌入php代码查询数据库 $code = $_GET["c"];//取到点击修改时传过来的c的值 $db = new MySQLi("localhost","root","666","text1");//直接把下面的造连接对象拿到上面,一个页面造一个就可以。 //写sql语句,下面有$sql了,这里就写$info。 $sinfo = "select * from info where code='{$code}'";//根据主键值查的,只能查到一条数据。 $rinfo = $db->query($sinfo); $ainfo = $rinfo->fetch_row();//取到数组 ?>
<form action="xiugaichuli.php" method="post"><!--表单提交到xiugaichuli.php页面。--> <div><input type="hidden" name="code" value="<?php echo $ainfo[0]; ?>" /></div><!--代号的默认的value的值显示为要更改的那条数据的代号的值,要输出才可以,不输出就为空。主键一般是不允许修改的,可以给它加上属性readonly="readonly"。不能用disabled=disabled,因为设定这个属性后表单无法提交。如果主键值是自增长列或者其它没有意义的列,可以直接隐藏,直接type=hidden,虽然隐藏掉了,但是还可以提交--> <div>姓名:<input type="text" name="name" value="<?php echo $ainfo[1]; ?>" /></div><!--原理同代号--> <!--性别和民族无法直接给定值,需要根据值来选定哪一个--> <!--性别是波尔型数据,要么0要么1.php里面的代码的作用是取出$info里面的代码,判断性别是true还是flase,是true的话就输出属性checked="checked",是flase就输出空--> <div>性别: <input type="radio" name="sex" value="1" <?php echo $ainfo[2]?"checked = 'checked'":"" ?> />男 <input type="radio" name="sex" value="0" <?php echo $ainfo[2]?"":"checked = 'checked'" ?> />女 </div> <!--民族是下拉列表,下拉列表选中是用属性selected=selected,下拉选项是用foreach遍历出来的,在输出之前可以判断要修改的人的代号是不是等于要输出的这一项的代号--> <div>民族: <select name="nation">
<?php //造连接对象 $sql = "select * from nation"; $result = $db->query($sql); $attr = $result->fetch_all(); foreach($attr as $v)//判断要修改的人的代号是不是等于要输出的这一项的代号 { if($v[0]==$ainfo[3]) { echo "<option selected='selected' value='$v[0]'>{$v[1]}</option>";//相等就输出一个selected='selected'的选项 } else { echo "<option value='$v[0]'>{$v[1]}</option>";//不相等就输出一个正常的选项 } } ?>
</select> </div> <div>生日:<input type="text" name="birthday" value="<?php echo $ainfo[4]; ?>" /></div><!--原理同代号--> <div><input type="submit" value="修改" /></div> </form> </body>
2.xiugaichuli.php页面
<?php $code = $_POST["code"];//取出提交的5个值 $name = $_POST["name"]; $sex = $_POST["sex"]; $nation = $_POST["nation"]; $birthday = $_POST["birthday"]; //造连接对象 $db = new MySQLi("localhost","root","666","text1"); $sql = "update info set name='{$name}',sex={$sex},nation='{$nation}',birthday='{$birthday}' where code='{$code}'";//修改的时候无论修改了几个,全部都要修改成现在输入的。 $db->query($sql); header("location:main.php");