数据访问 之 修改数据 (重要)---2017-04-27
1、修改数据:
需要两张数据库表:zhuce 和 naitonality
需要写三个代码文件:main.php; update.php; xiugai.php (其中前两个是用户可见的)
2、主要分为以下四个步骤:
第一步:写 main.php文件实现以下效果
代码如下:
<body> <h1>对表的信息进行操作</h1> <table width="50%" border ="1px" cellpadding="0px" cellspacing="0px"> <tr> <td>code</td> <td>name</td> <td>pwd</td> <td>sex</td> <td>birthday</td> <td>nationality</td> <td>delete</td> </tr> <?php $db = new MySQLi("localhost","root","123","hw_0408"); $sql = "select * from zhuce"; $result = $db->query($sql); $arr = $result->fetch_all(); foreach($arr as $v) { $sex = $v[3]?"男":"女"; //第一种获取民族 //$sql1 = "select nationality from nationality where mzcode='{$v[5]}'"; //第二种获取民族 $sql1 = "select nationality from zhuce left join nationality on nationality.mzcode='{$v[5]}'"; $r1 = $db->query($sql1); $a1 = $r1->fetch_row(); //var_dump($a1); echo "<tr> <td>{$v[0]}</td> <td>{$v[1]}</td> <td>{$v[2]}</td> <td>{$sex}</td> <td>{$v[4]}</td> <td>{$a1[0]}</td> <td><a href = 'del.php?code={$v[0]}' onclick=\"return confirm('确认删除吗?')\">delete</a> <a href = 'update.php?code={$v[0]}'>update</a> </td> </tr>"; } ?> </table> </body>
第二步:点击修改code=3的信息,跳转到update.php页面
实现效果:有默认值,且默认值为code=3的信息
<body> <?php $code = $_GET["code"]; $db = new MySQLi("localhost","root","123","hw_0408"); $sql = "select * from zhuce where code='{$code}'"; $result = $db->query($sql); $arr = $result->fetch_row(); ?> <h1>数据修改</h1> <form method="post" action="xiugai.php" > <div>代码:<input type="text" value="<?php echo $arr[0]; ?>"/> </div> <div>姓名:<input type="text" value="<?php echo $arr[1]; ?>"/> </div> <div>密码:<input type="text" value="<?php echo $arr[2]; ?>" /> </div> <div>性别:<input type="text" value="<?php echo $arr[3]; ?>"/> </div> <div>生日:<input type="text" value="<?php echo $arr[4]; ?>" /> </div> <div>民族:<input type="text" value="<?php echo $arr[5]; ?>"/> </div> <input type="submit" value="修改"/> </form> </body>
第三步:修改细节!!!!
(1)代码为主键,不应该被用户修改;所以用hidden属性将它隐藏
(2)性别不应让用户输入“男”“女”;-----用单选框
要注意:根据code设定默认值
(3)民族不应该让用户输入代码--------用下拉列表
(4)第二步的代码中input没有name值,会导致xiugai.php文件读取不到数据!!!!!!!!
要注意:根据code设定默认值
效果图:(code=2)
<body> <?php $code = $_GET["code"]; $db = new MySQLi("localhost","root","123","hw_0408"); $sql = "select * from zhuce where code='{$code}'"; $result = $db->query($sql); $arr = $result->fetch_row(); ?> <h1>数据修改</h1> <form action="xiugai.php" method="post"> //隐藏code <div><input type="hidden" name="code" value="<?php echo $arr[0]; ?>"/> </div> <div>姓名:<input type="text" name="name" value="<?php echo $arr[1]; ?>"/> </div> <div>密码:<input type="text" name="pwd" value="<?php echo $arr[2]; ?>" /> </div> //细节二 <div>性别: 男:<input type="radio" name="sex" value="1" <?php echo $arr[3]?"checked='checked'":"";?> /> 女:<input type="radio" name="sex" value="0" <?php echo $arr[3]?"":"checked='checked'";?> /> </div> <div>生日:<input type="text" name="birthday" value="<?php echo $arr[4]; ?>" /> </div> //细节三 <div>民族: <select name="nationality"> <?php $sql2 = "select * from nationality"; $r2 = $db->query($sql2); $arr2 = $r2->fetch_all(); foreach($arr2 as $v) { if ($arr[5]==$v[0]) //$arr[3]:该人员的mzcode $v[0]:即将造的option的mzcode { echo "<option value='{$v[0]}' selected='selected'> {$v[1]}</option>"; } else { echo "<option value='{$v[0]}'> {$v[1]}</option>"; } } ?> </select> </div> <input type="submit" value="修改"/> </form> </body>
第四步:写修改页面 xiugai.php
左 改 右
代码如下:
<?php header("content-type:text/html;charset=utf-8"); //输出中文 //取修改后的数据 $code = $_POST["code"]; $name = $_POST["name"]; $pwd = $_POST["pwd"]; $sex = $_POST["sex"]; $birthday = $_POST["birthday"]; $naitonality = $_POST["nationality"]; //将修改后的数据写入数据库,覆盖原来的数据 $db = new MySQLi("localhost","root","123","hw_0408"); $sql = "update zhuce set name='{$name}', pwd='{$pwd}',sex = {$sex},birthday = '{$birthday}',mzcode='{$naitonality}' where code = '{$code}'"; if ($db->query($sql)) { header("location:main.php"); } else { echo "修改失败!"; } ?>