赞
踩
前段时间学了一下PHP,想着写一个简易的学生信息管理系统,这篇博客记录了大概过程。源码链接
结构
主页面
主页面是用html写的简单的表单,没有多余的部分
连接数据库
将主页面显示的表单信息和数据库连接起来
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>学生信息</title> </head> <style type="text/css"> a{text-decoration: none} </style> <body> <div style="text-align: center; font-size: 26px; border-bottom: black 2px solid" > <p>学生信息</p> <a href="first.php">浏览信息</a> <a href="add.php">添加信息</a> </div> <table border="1" cellspacing="0" style="margin: 20px auto" > <tr> <th>序号</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>班级</th> <th>操作</th> </tr> <?php header('Content-type:text/html;charset=utf-8');//设置编码格式 $link=mysqli_connect('localhost:3308','root','','students');//连接数据库 if (!$link) {//判断连接状态 die("连接失败: " . mysqli_connect_error()); } mysqli_set_charset($link,'utf8');//设置客户端默认字符集 $sql="SELECT* FROM information";//sql语句,查询数据表信息 foreach ($link->query($sql) as $value){//遍历数据表中的信息 echo '<tr>'; echo "<th>{$value['id']}</th>"; echo "<th>{$value['name']}</th>"; echo "<th>{$value['age']}</th>"; echo "<th>{$value['sex']}</th>"; echo "<th>{$value['class']}</th>"; echo "<th> <a href='alter.php?id={$value['id']}'>修改</a> <a href='action.php?id={$value['id']}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除</a> </th>"; //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值 echo '<tr>'; } mysqli_close($link); ?> </table><!--获取数据库的php代码要放在table标签之内,数据库中取出来的值才能和之前的表头一起组成一个表格--> </body> </html>
前台添加功能页面
下面的代码实现的只是前台表单信息的添加,添加数据库信息的sql语句放在了action.php中
<form action="action.php?id=add" method="post"><!--url后面加上id便于action.php判断是哪个页面跳转过来的--> <table style="margin: 20px auto;text-align:left"> <tr> <td>姓名:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age"></td> </tr> <tr> <td>性别:</td> <td><input type="radio" name="sex" value="男">男</td> <td><input type="radio" name="sex" value="女">女</td> </tr> <tr> <td>班级:</td> <td><input type="text" name="class"></td> </tr> <tr> <td><a href="first.php">返回</a></td> <td><input type="submit" value="提交"></td> </tr> <tr> </tr> </table> </form>
前台更改信息页面
通过在url上添加id来获取更改前的数据
<form action="action.php?id=alt" method="post"><!--url后面加id便于action.php判断是哪个页面跳转过来的--> <?php $link=mysqli_connect('localhost:3308','root','','students'); if (!$link) { die("连接失败: ".mysqli_connect_error()); } mysqli_set_charset($link,'utf8'); $id=$_GET['id'];//获取在first.php中是点击哪个数据的更改选项跳转过来的 $sql="SELECT* FROM information where id=$id"; if (!$link) { die("连接失败: ".mysqli_connect_error()); } foreach ($link->query($sql) as $value) { /*$_id=$value['id']; $name=$value['name']; $sex=$value['sex']; $age=$value['age']; $class=$value['class'];*/ } mysqli_close($link); ?> <table style="margin: 20px auto;text-align:left"> <input type="hidden" name="id" value="<?php echo $value['id']?>"><!--记录跳转过来前的信息--> <tr> <td>姓名:</td> <td><input type="text" name="name" value='<?php echo $value['name']?>'></td> </tr> <tr> <td>年龄:</td> <td><input type="text" name="age" value="<?php echo $value['age']?>"></td> </tr> <tr> <td>性别:</td> <td><input type="radio" name="sex" value="男">男</td> <td><input type="radio" name="sex" value="女">女</td> </tr> <tr> <td>班级:</td> <td><input type="text" name="class" value="<?php echo $value['class']?>"</td> </tr> <tr> <td><a href="first.php">返回</a></td> <td><input type="submit" value="提交"></td> <td><input type="reset" value="重置"></td> </tr> <tr> </tr> </table> </form>
数据库的修改,删除,添加
通过switch分别执行三个功能的sql语句
<?php header('Content-type:text/html;charset=utf-8'); $link=mysqli_connect('localhost:3308','root','','students'); switch ($_GET["id"]){//通过url中传过来的id值判断执行添加,更改,删除的sql操作 case 'add': $name=$_POST['name']; $age=$_POST['age']; $sex=$_POST['sex']; $class=$_POST['class']; $sql="INSERT INTO information (name,age,sex,class) VALUES ('$name', '$age', '$sex', '$class')"; if ($link->query($sql)=== true){ echo "<script language='JavaScript' type='text/javascript'> window.location.href='first.php';//删除成功则跳转到首页 </script>"; }else{ echo '添加失败'.$link->error; } break; case 'alt': $id=$_POST['id']; $name=$_POST['name']; $sex=$_POST['sex']; $age=$_POST['age']; $class=$_POST['class']; $sql="update information set name='$name',sex='$sex',age='$age',class='$class' where id='$id'"; if ($link->query($sql)=== true){ echo "<script language='JavaScript' type='text/javascript'> window.location.href='first.php'; </script>"; }else{ echo '更改失败'.$link->error; } break; default://因为跳转到这个页面的只有三个url,所以如果id值不是那两个的话就是这个 $id = $_GET["id"];//通过url的传递获取删除数据的id值 $db = new MySQLi("localhost:3308","root","","students"); $sql = "delete from information where id='{$id}'"; if($db->query($sql)) { header("location:first.php"); } else { echo "删除失败!";} break; } mysqli_close($link);
第一个问题
写首页的时候要将数据库服务器和显示页面进行数据连接,当时没有注意双引号和单引号的区别,就顺手随便写了,结果php代码并没有执行。因为双引号里面的内容将会被解释,即解析内容中的变量后再输出,但是单引号里面的不需要解释直接输出,即输出的内容会与输入的内容一致。
foreach ($link->query($sql) as $value){
echo '<tr>';
echo '<th>{$value["id"]}</th>';//错误代码
echo '<th>{$value["name"]}</th>';
echo '<th>{$value["age"]}</th>';
echo '<th>{$value["sex"]}</th>';
echo '<th>{$value["class"]}</th>';
echo '<td>
<a href="alter.php">修改</a>
<a href="alter.php">删除</a>
</td>';
echo '<tr>';
}
第二个问题
写删除信息功能的时候,想的是应该将删除数据库的sql语句放在js的click事件中,当点击删除的时候同时删除显示的信息和数据库的信息,但是有点复杂能力不足没有实现,查了一下其实删除数据只需要删除掉插入数据库的字段就行,不必多余的去再删除一下显示的信息。因为foreach遍历出的数组中元素的个数就是数据表中的每一行的记录数,减少相应的记录数便会减少相应的数组元素。
<?php header('Content-type:text/html;charset=utf-8');//设置编码格式 $link=mysqli_connect('localhost:3308','root','','students');//连接数据库 if (!$link) {//判断连接状态 die("连接失败: " . mysqli_connect_error()); } mysqli_set_charset($link,'utf8');//设置客户端默认字符集 $sql="SELECT* FROM information";//sql语句,查询数据表信息 foreach ($link->query($sql) as $value){//遍历数据表中的信息 echo '<tr>'; echo "<th>{$value['id']}</th>"; echo "<th>{$value['name']}</th>"; echo "<th>{$value['age']}</th>"; echo "<th>{$value['sex']}</th>"; echo "<th>{$value['class']}</th>"; echo "<th> <a href='alter.php?id={$value['id']}'>修改</a> <a href='action.php?id={$value['id']}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除</a> </th>"; //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值 echo '<tr>'; } mysqli_close($link); ?>
第三个问题
实现将删除,修改,添加三个功能集成在一个页面上是通过跳转前在url上加id和switch语句实现的。
<?php header('Content-type:text/html;charset=utf-8');//设置编码格式 $link=mysqli_connect('localhost:3308','root','','students');//连接数据库 if (!$link) {//判断连接状态 die("连接失败: " . mysqli_connect_error()); } mysqli_set_charset($link,'utf8');//设置客户端默认字符集 $sql="SELECT* FROM information";//sql语句,查询数据表信息 foreach ($link->query($sql) as $value){//遍历数据表中的信息 echo '<tr>'; echo "<th>{$value['id']}</th>"; echo "<th>{$value['name']}</th>"; echo "<th>{$value['age']}</th>"; echo "<th>{$value['sex']}</th>"; echo "<th>{$value['class']}</th>"; echo "<th> <a href='alter.php?id={$value['id']}'>修改</a> <a href='action.php?id={$value['id']}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除</a> </th>"; //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值 echo '<tr>'; } mysqli_close($link); ?>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。