php+MySQL实现学生信息管理系统(数据库增删改查功能)

前段时间学了一下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);
    ?>
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值