php实现简易学生信息管理系统

前段时间学了一下PHP,想着写一个简易的学生信息管理系统,这篇博客记录了大概过程。源码链接
结构
php实现简易学生信息管理系统_第1张图片
主页面
主页面是用html写的简单的表单,没有多余的部分
php实现简易学生信息管理系统_第2张图片
连接数据库
将主页面显示的表单信息和数据库连接起来

<!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>
    
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 '';
    echo "{
       $value['id']}";
    echo "{
       $value['name']}";
    echo "{
       $value['age']}";
    echo "{
       $value['sex']}";
    echo "{
       $value['class']}";
    echo "
        ]}'>修改
        ]}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除
        ";
    //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值
    echo '';
}
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判断是哪个页面跳转过来的-->
    
    $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="$value['id']?>"><!--记录跳转过来前的信息-->
        <tr>
            <td>姓名:</td>
            <td><input type="text" name="name" value='name']?>'></td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td><input type="text" name="age" value="$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="$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语句


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 "";
        }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 "";
        }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 '';
    echo '{$value["id"]}';//错误代码
    echo '{$value["name"]}';
    echo '{$value["age"]}';
    echo '{$value["sex"]}';
    echo '{$value["class"]}';
    echo '
        修改
        删除
        ';
    echo '';
}

第二个问题
写删除信息功能的时候,想的是应该将删除数据库的sql语句放在js的click事件中,当点击删除的时候同时删除显示的信息和数据库的信息,但是有点复杂能力不足没有实现,查了一下其实删除数据只需要删除掉插入数据库的字段就行,不必多余的去再删除一下显示的信息。因为foreach遍历出的数组中元素的个数就是数据表中的每一行的记录数,减少相应的记录数便会减少相应的数组元素。


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 '';
    echo "{
       $value['id']}";
    echo "{
       $value['name']}";
    echo "{
       $value['age']}";
    echo "{
       $value['sex']}";
    echo "{
       $value['class']}";
    echo "
        ]}'>修改
        ]}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除
        ";
    //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值
    echo '';
}
mysqli_close($link);
    ?>

第三个问题
实现将删除,修改,添加三个功能集成在一个页面上是通过跳转前在url上加id和switch语句实现的。


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 '';
    echo "{
       $value['id']}";
    echo "{
       $value['name']}";
    echo "{
       $value['age']}";
    echo "{
       $value['sex']}";
    echo "{
       $value['class']}";
    echo "
        ]}'>修改
        ]}' οnclick=\"return confirm('确认删除该名学生的信息吗?')\">删除
        ";
    //跳转到指定的页面,并且在url后面添加上?id,跳转后用来获取相应id的值	
    echo '';
}
mysqli_close($link);
    ?>

你可能感兴趣的:(PHP)