Day 18 : PHP - 如何做出一个有CRUD功能的会员管理系统?

如标题,这篇想教大家如何做出一个有CRUD功能的会员管理系统

首先,要先知道CRUD分别代表什麽
Create:新增资料
Read:读取、查询资料
Update:更新、修改资料
Delete:删除资料

了解CRUD分别代表什麽之後, 先看一下我们稍後会使用到的档案有哪些
https://ithelp.ithome.com.tw/upload/images/20211002/20141088c5ucUevqts.png

然後将CRUD这个资料夹移去C:\xampp\htdocs,并到目录htdocs里的index.php将斜线内的名称改成CRUD
https://ithelp.ithome.com.tw/upload/images/20211002/20141088quuC7D1nC1.png

再到XAMPP将Apache和MySQL开启
https://ithelp.ithome.com.tw/upload/images/20211002/20141088vKvfp5pDcC.png

再去浏览器的网址那输入127.0.0.1localhost,就可以进入CRUD这个资料夹的画面

现在看一定是空的,所以我们要先做一个选择介面,方便我们选择动作执行


我们将选择介面放在index.html这个档案里:

<h1>选择介面</h1>
    <div class="box_outside">
        <div class="box_style"><a href="./html/create.html">新增</a></div>
        <div class="box_style"><a href="./html/read.html">读取</a></div>
        <div class="box_style"><a href="./html/update.html">修改</a></div>
        <div class="box_style"><a href="./html/delete.html">删除</a></div>
    </div>

CSS则放在style.css里:

/* ALL file */
body {
    background-color:rgba(243, 164, 91, 0.452);
}


/* IN index.html */
/* 调整标题大小 */
h1 {
    text-align:center;
    font-size:75px;
    color:rgb(71, 68, 68);
}

/* 用Flex将四个box排列在一起 */
.box_outside {
    display:flex;
    justify-content:center;
    margin-top:5%;
}

/* 调整box的尺寸、背景颜色、字体大小 */
.box_style {
    width:200px;
    height:150px;
    background-color:rgba(178, 231, 141, 0.657);
    margin:5px 20px 0 20px;
    font-size:35px;
    line-height:150px;
    text-align:center;
    font-weight:bolder;
}


/* IN ALL HTML file, except index.html */
/* 让确认键置中 */
.tr_center {
    text-align:center;
}

/* 调整表格的背景颜色、尺寸 */
table {
    background-color:rgba(178, 231, 141, 0.657);
    width:450px;
    margin:12% auto 0 auto;
    min-height:120px;
}

/* 调整栏位的大小 */
.input {
    padding:12px 25px 12px 5px;
    font-size:20px;
}

/* 调整确认键的大小 */
.input_submit {
    margin-top:10px;
    padding:5px 20px 5px 20px;
    font-size:20px;
}

/* 调整表格内的字体大小 */
.font_size {
    font-size:30px;
    text-align:center;
    font-weight:bolder;
}

/* 调整兴趣栏的字体大小 */
.input_select {
    padding:10px 5px 10px 4px;
    font-size:25px;
    font-weight:bolder;
}


/* IN ALL PHP file*/
/* 调整显示结果的box尺寸、背景颜色、字体大小 */
.box_result {
    width:550px;
    background-color:rgba(178, 231, 141, 0.657);
    margin:12% auto 0 auto;
    font-size:35px;
    text-align:center;
    font-weight:bolder;
    padding:0 30px;
}


/* except create.php */
/* 调整显示结果的box宽度 */
.box_size {
    width:700px;
}

结果如下图所示:
https://ithelp.ithome.com.tw/upload/images/20211002/20141088nSmdwovhsY.png


Create (新增)
这里我们先做一个会员注册的表单,有帐号、密码、国籍、email等栏位需填写
并设定form到Data_cteate.php,method用POST

create.html :

<form action="../php/Data_create.php" method="POST">
    <table class="table">
        <tr class="font_size"><td colspan="2">会员注册</td></tr>
        <tr>
            <td class="font_size">帐号</td>
            <td><input class="input" type="text" name="account"></td>
        </tr>
        <tr>
            <td class="font_size">密码</td>
            <td><input class="input" type="password" name="password"></td>
        </tr>
        <tr>
            <td class="font_size">国家</td>
            <td>
                <select class="input_select" name="country">
                    <option value="台湾">台湾</option>
                    <option value="日本">日本</option>
                    <option value="美国">美国</option>
                    <option value="土耳其">土耳其</option>
                    <option value="韩国">韩国</option>
                </select>
            </td>
        </tr>
        <tr>
            <td class="font_size">email</td>
            <td><input class="input" type="email" name="email"></td>
        </tr>
        <tr class="tr_center">
            <td colspan="2"><input class="input_submit" type="submit" name="submit" value="确认"></td>
        </tr>
    </table>
</form>

再设定Data_create.php请注意看我在程序码内下的注解
请注意:需在<?php ?>外套用html的基本格式,才能在php内使用css

Data_create.php :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../style.css">
</head>
<body>
<?php
//你在资料库里的设定
$servername = "localhost"; //你用哪个形式开启phpMyAdmin的,用127.0.0.1则改成127.0.0.1
$username = "你在phpMyAdmin里设定的User名称";
$password = "你在phpMyAdmin里设定的密码";
$database = "你在phpMyAdmin里新增的资料库名称";

//接收HTML传来的资料
$member_account = @$_POST['account'];
$member_password = @$_POST['password'];
$member_country = @$_POST['country'];
$member_email = @$_POST['email'];

//连接资料库
$conn = new mysqli($servername, $username, $password, $database);

//设定连线编码,防止中文字乱码
$conn->query("SET NAMES utf8");

echo '<div class="box_result">';
echo '<br><a href="../index.html">'."返回选择介面".'</a><br>';
//若帐号栏位为空,则提醒输入帐号
if(!empty($member_account)) {
    //若密码栏位为空,则提醒输入密码
    if(!empty($member_password)) {
        //若eamil栏位为空,则提醒输入email
        if(!empty($member_email)) {
            //用INSERT新增资料至资料库
            $insertSql = "INSERT INTO `你的资料表名称` (`account`, `password`, `country`, `email`) VALUES ('$member_account', '$member_password', '$member_country', '$member_email')";
            
            //让资料库连接到INSERT的语法
            $conn->query($insertSql);
            
            //用mysqli_affected_rows判断资料库的资料数有没有增加,有则代表资料新增成功
            //没增加代表此帐号已注册过,提醒换一组新帐号
            if(mysqli_affected_rows($conn)>0) {
                echo "新会员".$member_account."注册成功!!".'<br><br>';
            } else {
                echo "此帐号已注册过,请换一组帐号!!".'<br><br>';
            }
        } else {
            echo "请输入email!!".'<br><br>';
        }
    } else {
        echo "请输入密码!!".'<br><br>';
    }
} else {
    echo "请输入帐号!!".'<br><br>';
}
echo '</div>';

?>
</body>
</html>

结果如下图所示:
https://ithelp.ithome.com.tw/upload/images/20211002/20141088wMR7BjYDY6.png
https://ithelp.ithome.com.tw/upload/images/20211002/20141088lsOqnn2JLt.png


Read(读取、查询)
既然我们新增了一笔kycz5566的资料,那就要做一个查询表单来查询这笔资料
这里我们设定form到Data_read.php,method用POST

read.html :

<form action="../php/Data_read.php" method="POST">
    <table>
        <tr>
            <td class="font_size" colspan="2">会员查询</td>
        </tr>
        <tr>
            <td class="font_size">请输入帐号</td>
            <td><input class="input" type="text" name="account"></td>
        </tr>
        <tr class="tr_center">
            <td colspan="2"><input class="input_submit" type="submit" name="submit" value="确认"></td>
        </tr>
    </table>
</form>

再设定Data_read.php请注意看我在程序码内下的注解
请注意:需在<?php ?>外套用html的基本格式,才能在php内使用css

Data_read.php :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../style.css">
</head>
<body>
<?php
//你在资料库里的设定
$servername = "localhost"; //你用哪个形式开启phpMyAdmin的,用127.0.0.1则改成127.0.0.1
$username = "你在phpMyAdmin里设定的User名称";
$password = "你在phpMyAdmin里设定的密码";
$database = "你在phpMyAdmin里新增的资料库名称";

//接收HTML传来的帐号
$select_account = @$_POST['account'];

//连接资料库
$conn = new mysqli($servername, $username, $password, $database);

//设定连线编码,防止中文字乱码
$conn->query("SET NAMES utf8");

echo '<div class="box_result box_size">';
echo '<br><a href="../index.html">'."返回选择介面".'</a><br>';
//若帐号栏位为空,则提醒输入帐号
if(!empty($select_account)) {
    //用SELECT查询资料库的资料
    $selectSql = "SELECT * FROM `你的资料表名称` WHERE `account` = '$select_account'";

    //让资料库连接到SELECT的语法,并将其结果存在$memberData
    $memberData = $conn -> query($selectSql);

    //用mysqli_affected_rows判断资料库的资料有没有受到影响,有则查询会员资料,并将其印出
    //没查到代表没有此资料
    if(mysqli_affected_rows($conn)>0) {
        //用fetch_assoc()取得欲查询的帐号为何
        //用while重复查询资料库,直到查到相符合的帐号,再将其印出
        while($row = $memberData->fetch_assoc()) {
            echo "会员查询结果".'<br>';
            echo "帐号:".$row['account'].'<br>';
            echo "密码:".$row['password'].'<br>';
            echo "国籍:".$row['country'].'<br>';
            echo "email:".$row['email'].'<br><br>';
        }
    } else {
        echo "查无".$select_account."的资料!!".'<br><br>';
    }
} else {
    echo "请输入要查询的帐号!!".'<br><br>';
}
echo '</div>';

?>
</body>
</html>

结果如下图所示:
https://ithelp.ithome.com.tw/upload/images/20211002/20141088NL4loqlJnD.png
https://ithelp.ithome.com.tw/upload/images/20211002/20141088qDTFUcRgsy.png

你也可以直接登入phpMyAdmin里看,确认有没有印错
https://ithelp.ithome.com.tw/upload/images/20211002/20141088AylVGj1GT2.png


Update (更新、修改)
那如果今天我不想当美国人了,我想去当日本人可以吗?
当然可以!你想顺便改密码和email也可以,只要做一个修改系统就可以更改资料罗
这里我们设定form到Data_update.php,method用POST

update.html :

<form action="../php/Data_update.php" method="POST">
    <table class="table">
        <tr class="font_size"><td colspan="2">修改会员资料</td></tr>
        <tr>
            <td class="font_size">帐号</td>
            <td><input class="input" type="text" name="account"></td>
        </tr>
        <tr>
            <td class="font_size">密码</td>
            <td><input class="input" type="password" name="password"></td>
        </tr>
        <tr>
            <td class="font_size">国家</td>
            <td>
                <select class="input_select" name="country">
                    <option value="台湾">台湾</option>
                    <option value="日本">日本</option>
                    <option value="美国">美国</option>
                    <option value="土耳其">土耳其</option>
                    <option value="韩国">韩国</option>
                </select>
            </td>
        </tr>
        <tr>
            <td class="font_size">email</td>
            <td><input class="input" type="email" name="email"></td>
        </tr>
        <tr class="tr_center">
            <td colspan="2"><input class="input_submit" type="submit" name="submit" value="确认"></td>
        </tr>
    </table>
</form>

再设定Data_update.php请注意看我在程序码内下的注解
请注意:需在<?php ?>外套用html的基本格式,才能在php内使用css

Data_update.php :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../style.css">
</head>
<body>
<?php
//你在资料库里的设定
$servername = "localhost"; //你用哪个形式开启phpMyAdmin的,用127.0.0.1则改成127.0.0.1
$username = "你在phpMyAdmin里设定的User名称";
$password = "你在phpMyAdmin里设定的密码";
$database = "你在phpMyAdmin里新增的资料库名称";

//接收HTML传来的资料
$update_account = @$_POST['account'];
$update_password = @$_POST['password'];
$update_country = @$_POST['country'];
$update_email = @$_POST['email'];

//连接资料库
$conn = new mysqli($servername, $username, $password, $database);

//设定连线编码,防止中文字乱码
$conn->query("SET NAMES utf8");

echo '<div class="box_result box_size">';
echo '<br><a href="../index.html">'."返回选择介面".'</a><br>';
//若帐号栏位为空,则提醒输入帐号
if(!empty($update_account)) {
    //用UPDATE更新资料库的资料
    $updateSql = "UPDATE `你的资料表名称` SET `password` = '$update_password', `country` = '$update_country', `email` = '$update_email' WHERE `account` = '$update_account'";
    
    //让资料库连接到UPDATE的语法
    $conn->query($updateSql);

    //用mysqli_affected_rows判断资料库的资料有没有受到影响,有则代表资料更新成功
    //没增加代表此帐号打错,或尚未注册,提醒重新输入帐号
    if(mysqli_affected_rows($conn)>0) {
        echo "会员".$update_account."的资料已修改成功".'<br><br>';
    } else {
        echo "无法修改".$update_account."的资料,可能是帐号打错or尚未注册,请重新输入帐号!!".'<br><br>';
    }
} else {
    echo "请输入要修改的帐号".'<br><br>';
}

echo '</div>';

?>
</body>
</html>

结果如下图所示:
https://ithelp.ithome.com.tw/upload/images/20211002/201410885U2H5tlD3N.png
https://ithelp.ithome.com.tw/upload/images/20211002/20141088gtF4lErvkZ.png

那现在kycz5566的资料修改成功了,我们去read查询一下其资料显示为何
https://ithelp.ithome.com.tw/upload/images/20211002/20141088wL6k5YW6ir.png

结果如下图所示:
恭喜你,成功从美国移民到日本罗!
https://ithelp.ithome.com.tw/upload/images/20211002/201410883UycZUPjsX.png


Delete (删除)
那如果我今天不想当会员了,我想删除帐号可以吗?
当然可以!尽管本公司有多麽不舍,依然会做一个删除系统供您删除资料 (泪
还会帮您贴心的设定form到Data_delete.php,method用POST

delete.html :

<form action="../php/Data_delete.php" method="POST">
    <table>
        <tr>
            <td class="font_size" colspan="2">删除会员资料</td>
        </tr>
        <tr>
            <td class="font_size">请输入帐号</td>
            <td><input class="input" type="text" name="account"></td>
        </tr>
        <tr class="tr_center">
            <td colspan="2"><input class="input_submit" type="submit" value="确认"></td>
        </tr>
    </table>
</form>

再设定Data_delete.php请注意看我在程序码内下的注解
请注意:需在<?php ?>外套用html的基本格式,才能在php内使用css

Date_delete.php :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../style.css">
</head>
<body>
<?php
//你在资料库里的设定
$servername = "localhost"; //你用哪个形式开启phpMyAdmin的,用127.0.0.1则改成127.0.0.1
$username = "你在phpMyAdmin里设定的User名称";
$password = "你在phpMyAdmin里设定的密码";
$database = "你在phpMyAdmin里新增的资料库名称";

//接收HTML传来的帐号
$delete_account = @$_POST['account'];

//连接资料库
$conn = new mysqli($servername, $username, $password, $database);

//设定连线编码,防止中文字乱码
$conn->query("SET NAMES utf8");

echo '<div class="box_result box_size">';
echo '<br><a href="../index.html">'."返回选择介面".'</a><br>';
//若帐号栏位为空,则提醒输入帐号
if(!empty($delete_account)) {
    //用DELETE删除资料库的资料
    $deleteSql = "DELETE FROM `你的资料表名称` WHERE `account` = '$delete_account'";

    //让资料库连接到DELETE的语法
    $conn->query($deleteSql);

    //用mysqli_affected_rows判断资料库的资料有没有受到影响,有则代表资料删除成功
    //没删除则代表此帐号打错,或尚未注册,提醒重新输入帐号
    if(mysqli_affected_rows($conn)>0) {
        echo "会员".$delete_account."的资料已删除成功!!".'<br><br>';
    } else {
        echo "无法删除".$delete_account."的资料,可能是帐号打错or尚未注册,请重新输入帐号!!".'<br><br>';
    }
} else {
    echo "请输入要删除的帐号!!".'<br><br>';
}
echo '</div>';

?>
</body>
</html>

结果如下图所示:
https://ithelp.ithome.com.tw/upload/images/20211002/20141088GzUbCKGRfQ.png
https://ithelp.ithome.com.tw/upload/images/20211002/2014108824ibnRinQG.png

那现在kycz5566的资料删除成功了,我们去read查询一下其资料显示为何
https://ithelp.ithome.com.tw/upload/images/20211002/20141088lduBEPGCr4.png

结果如下图所示:
很遗憾您解除我们的会员,敬请期待您回心转意 (泪
https://ithelp.ithome.com.tw/upload/images/20211002/20141088iIdVnoJ05T.png


以上就是今天的介绍

只要跟着动手做,人人都能做出一个有CRUD功能的会员管理系统唷


<<:  【Day21】[演算法]-排序Sort & 气泡排序法Bubble Sort

>>:  Day 22 HTML5 <HTML5 input类型、表单标签>

D7 第三周整理笔记

当周进度: ALG101 到 单元六:内建函式做做看 JS102 先自首,这周进度很多部分我当初都跳...

如果你不规画自己的人生,那你很可能会落入别人的规画里。

如果你不规画自己的人生,那你很可能会落入别人的规画里。 If you don't design yo...

我们的基因体时代-AI, Data和生物资讯 Day04- 深度学习在基因体学的建模架构01

上一篇我们的基因体时代-AI, Data和生物资讯 Day03- 基因医学的数据问题介绍了基因医学中...

Day12-救世主Promise

前言 在ES6之前,要使用非同步并且正确输出资料必须透过callback,然而callback不好学...

27 显示覆盖的牌

覆盖的牌 在测试出牌的时候我才想到, 同一回合如果只有我出牌,对方应该是要看不到我出什麽牌才对 我觉...