PHP增删改查数据库(前端+后台)

PHP增删改查数据库(前端+后台)

要求:

  • 首页导航栏中内置功能
    在这里插入图片描述

  • 查看数据库
    在这里插入图片描述

  • 点击Edit修改数据库内容
    在这里插入图片描述

  • 点击Delete后删除数据库内此记录,返回首页输出删除成功。

  • 向数据库里增加数据
    在这里插入图片描述

  • 向搜索框输入查询的关键字
    在这里插入图片描述之后输出查询结果:
    在这里插入图片描述
    目录结构:
    在这里插入图片描述

代码如下:
index.php:

<?php

include_once('includes/header.php');
if (isset($_GET['action'])) {
    $action = $_GET['action'];
    if ($action == 'viewcontacts') {
        //read records code here
        $conn = new PDO("mysql:host=localhost;dbname=contactsdb;charset=utf8", "root", "");
        $statement = $conn->query("select * from contacts order by id");
        $statement->setFetchMode(PDO::FETCH_ASSOC);
        $records = [];
        while ($row = $statement->fetch()) {
            $records[] = $row;
        }
        //display records in bootstrap table
        include_once("includes/viewContacts.php");
    } else if ($action == 'editContacts') {
        $id = $_GET['id'];
        $firstname = $_GET['firstname'];
        $lastname = $_GET['lastname'];
        $Email = $_GET['email'];
        $Mobile = $_GET['mobile'];
        $photoname = $_GET['photoname'];

        $first_name = '';
        $last_name = '';
        $email = '';
        $mobile = '';
        $filename = '';
        $errors = [];
        if (isset($_POST['submit'])) {
            //validation
            if (isset($_POST['first_name'])) {//设定first_name的输入规范
                $first_name = $_POST['first_name'];
                if (strlen($first_name) == 0) {
                    $errors['first_name'] = 'First Name is missing input';
                } elseif (!ctype_alpha($first_name)) {
                    $errors['first_name'] = 'Enter a valid First Name';
                }
            }

            if (isset($_POST['last_name'])) {//设定last_name的输入规范
                $last_name = $_POST['last_name'];
                if (strlen($last_name) == 0) {
                    $errors['last_name'] = 'Last Name is missing input';
                } elseif (!ctype_alpha($last_name)) {
                    $errors['last_name'] = 'Enter a valid Last Name';
                }
            }

            if (isset($_POST['email'])) {//设定email的输入规范
                $email = trim($_POST['email']);
                if (strlen($email) == 0) {
                    $errors['email'] = "Email address is missing input";
                } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                    $errors['email'] = "Enter a valid Email Address";
                }
            }

            if (isset($_POST['mobile'])) {
                $mobile = trim($_POST['mobile']);
                if (strlen($mobile) == 0) {
                    $errors['mobile'] = "Missing input";
                } elseif (strlen($mobile) < 10) {
                    $errors['mobile'] = "Mobile number must be 10 digits";
                } else if (!ctype_digit($mobile)) {
                    $errors['mobile'] = "Enter a valid mobile number";
                }
            }
            // image 
            $filename = $_FILES["image"]["name"];
            $temp_file = $_FILES["image"]["tmp_name"];
            $type = $_FILES["image"]["type"];
            $size = $_FILES["image"]["size"];
            $errorLevel = $_FILES["image"]["error"];

            $error_messages = [
                "Upload successful",
                "File exceeds maximum upload size specified by default",
                "File exceeds size specified by MAX_FILE_SIZE",
                "File only partially uploaded",
                "Form submitted with no file specified",
                "",
                "No temporary folder",
                "Cannot write file to disk",
                "File type is not permitted"
            ];

            $destination = 'D:/xampp/htdocs/A1P4/img/';
            $target_file = $destination . $filename;
            $max = 3000000;

            if ($errorLevel > 0) {
                // Set the error message to the errors array        
                $errors["image"] = $error_messages[$errorLevel];
            } else {
                if (file_exists($temp_file)) {
                    $size = $_FILES["image"]["size"];
                    if ($size <= $max) {
                        $permitted = ["gif", "jpg", "jpeg", "png"];
                        $ext = pathinfo($filename, PATHINFO_EXTENSION);
                        if (in_array($ext, $permitted)) {
                            move_uploaded_file($temp_file, $target_file);
                            //$errors["image"] = "The file $filename has been uploaded.";
                        } else {
                            $errors["image"] = "$filename type is not permitted";
                        }
                    } else {
                        $errors["image"] = "$filename is too big – upload failed";
                    }
                } else {
                    $errors["image"] = "File upload has failed";
                }
            }

            if (count($errors) == 0) {
                $values = [$first_name, $last_name, $email, $mobile, $filename];
                $dsn = 'mysql:host=localhost;dbname=contactsdb';
                $username = 'root';
                $password = '';
                $conn = new PDO($dsn, $username, $password);
                $sql = "update contacts set first_name=? ,last_name=?,email=?,mobile=?,photo_filename=? where id = $id";
                $statement = $conn->prepare($sql);
                $success = $statement->execute($values);
                if ($success) {
                    include_once 'index.php'; //如果无错误就返回主页
                    echo"Edit contact record successed!";
                } else {
                    include_once 'index.php';
                    echo"Insert contact record failed!";
                }
            } else {
                include_once 'includes/editContacts.php'; //有不符合规范的就返回form并提示
            }
        } else {
            include_once 'includes/editContacts.php';
        }
    } else if ($action == 'deleteContacts') {
        $id = $_GET['id'];
        $dsn = 'mysql:host=localhost;dbname=contactsdb';
        $username = 'root';
        $password = '';
        $conn = new PDO($dsn, $username, $password);
        $sql = "delete from contacts where id = $id";
        $statement = $conn->query($sql);
        $success = $statement->execute();
        if ($success) {
            include_once 'index.php';
            echo "Delete booking record successed!";
        } else {
            include_once 'index.php';
            echo "Delete booking record failed!";
        }
    } else if ($action == 'addcontacts') {
        $first_name = '';
        $last_name = '';
        $email = '';
        $mobile = '';
        $filename = '';
        $errors = [];
        if (isset($_POST['submit'])) {
            //validation
            if (isset($_POST['first_name'])) {//设定first_name的输入规范
                $first_name = $_POST['first_name'];
                if (strlen($first_name) == 0) {
                    $errors['first_name'] = 'First Name is missing input';
                } elseif (!ctype_alpha($first_name)) {
                    $errors['first_name'] = 'Enter a valid First Name';
                }
            }

            if (isset($_POST['last_name'])) {//设定last_name的输入规范
                $last_name = $_POST['last_name'];
                if (strlen($last_name) == 0) {
                    $errors['last_name'] = 'Last Name is missing input';
                } elseif (!ctype_alpha($last_name)) {
                    $errors['last_name'] = 'Enter a valid Last Name';
                }
            }

            if (isset($_POST['email'])) {//设定email的输入规范
                $email = trim($_POST['email']);
                if (strlen($email) == 0) {
                    $errors['email'] = "Email address is missing input";
                } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                    $errors['email'] = "Enter a valid Email Address";
                }
            }

            if (isset($_POST['mobile'])) {
                $mobile = trim($_POST['mobile']);
                if (strlen($mobile) == 0) {
                    $errors['mobile'] = "Missing input";
                } elseif (strlen($mobile) < 10) {
                    $errors['mobile'] = "Mobile number must be 10 digits";
                } else if (!ctype_digit($mobile)) {
                    $errors['mobile'] = "Enter a valid mobile number";
                }
            }
            // image 
            $filename = $_FILES["image"]["name"];
            $temp_file = $_FILES["image"]["tmp_name"];
            $type = $_FILES["image"]["type"];
            $size = $_FILES["image"]["size"];
            $errorLevel = $_FILES["image"]["error"];

            $error_messages = [
                "Upload successful",
                "File exceeds maximum upload size specified by default",
                "File exceeds size specified by MAX_FILE_SIZE",
                "File only partially uploaded",
                "Form submitted with no file specified",
                "",
                "No temporary folder",
                "Cannot write file to disk",
                "File type is not permitted"
            ];

            $destination = 'D:/xampp/htdocs/A1P4/img/';
            $target_file = $destination . $filename;
            $max = 3000000;

            if ($errorLevel > 0) {
                // Set the error message to the errors array        
                $errors["image"] = $error_messages[$errorLevel];
            } else {
                if (file_exists($temp_file)) {
                    $size = $_FILES["image"]["size"];
                    if ($size <= $max) {
                        $permitted = ["gif", "jpg", "jpeg", "png"];
                        $ext = pathinfo($filename, PATHINFO_EXTENSION);
                        if (in_array($ext, $permitted)) {
                            move_uploaded_file($temp_file, $target_file);
                            //$errors["image"] = "The file $filename has been uploaded.";
                        } else {
                            $errors["image"] = "$filename type is not permitted";
                        }
                    } else {
                        $errors["image"] = "$filename is too big – upload failed";
                    }
                } else {
                    $errors["image"] = "File upload has failed";
                }
            }

            if (count($errors) == 0) {
                $values = [$first_name, $last_name, $email, $mobile, $filename];
                $dsn = 'mysql:host=localhost;dbname=contactsdb';
                $username = 'root';
                $password = '';
                $conn = new PDO($dsn, $username, $password);
                $sql = "insert into contacts (first_name,last_name,email,mobile,photo_filename)values(?,?,?,?,?)";
                $statement = $conn->prepare($sql);
                $success = $statement->execute($values);
                if ($success) {
                    include_once 'index.php'; //如果无错误就返回主页
                    echo"Insert contact record successed!";
                } else {
                    include_once 'index.php';
                    echo"Insert contact record failed!";
                }
            } else {
                include_once 'includes/addContacts.php'; //有不符合规范的就返回form并提示
            }
        } else {
            include_once 'includes/addContacts.php';
        }
    } else if ($action == 'seachercontacts') {
        $keyword = '';
        $errors = [];
        if (isset($_POST['send'])) {
            //validation
            if (isset($_POST['keyword'])) {//设定keyword的输入规范
                $keyword = $_POST['keyword'];
                if (strlen($keyword) == 0) {
                    $errors['keyword'] = 'keyword is missing input';
                }

                if (count($errors) == 0) {
                    $conn = mysqli_connect('localhost', 'root', '', 'contactsdb');
                    $res = mysqli_query($conn, "select * from contacts where first_name like '%$keyword%' or last_name like '%$keyword%' or email like '%$keyword%' or mobile like '%$keyword%' or photo_filename like '%$keyword%'") or die(mysqli_error($conn));
                    $records = [];
                    while ($row = mysqli_fetch_assoc($res)) {
                        $records[] = $row;
                    }
                    include_once("includes/viewContacts.php");
                }
            } else {
                include_once 'includes/seacherContacts.php'; //有不符合规范的就返回form并提示
            }
        } else {
            include_once 'includes/seacherContacts.php';
        }
    }
} else {
    include_once('includes/content.php');
}

include_once('includes/footer.php');

includes/addConacts.php:

<div class="container" >

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 box text-center">
            Add Contacts
        </div>
        <div class="col-sm-3"></div>
    </div>

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 jumbotron">
            <form action="" method="post" novalidate="true" enctype="multipart/form-data">
                <div class="form-group">
                    <label class="control-label">
                        First Name
                        <span class="error" style="color:red">
                            <?= isset($errors['first_name']) ? $errors['first_name'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="text" name="first_name"maxlength="30" value="<?= $first_name ?>" />
                </div>

                <div class="form-group">
                    <label class="control-label">
                        Last Name
                    </label>
                    <span class="error" style="color:red">
                        <?= isset($errors['last_name']) ? $errors['last_name'] : "" ?>
                    </span>
                    <input class="form-control" type="text" name="last_name"maxlength="30" value="<?= $last_name ?>" />
                </div>    

                <div class="form-group">
                    <label class="control-label">
                        Email
                    </label>
                    <span class="error" style="color:red">
                        <?= isset($errors['email']) ? $errors['email'] : "" ?>
                    </span>
                    <input class="form-control" type="email" name="email" value="<?= $email ?>"/>
                </div>  

                <div class="form-group">
                    <label>
                        Mobile:
                        <span class="error" style="color:red">
                            <?= isset($errors['mobile']) ? $errors['mobile'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="text" name="mobile" maxlength="10" value="<?= $mobile ?>"/>
                </div>

                <div class="form-group">
                    <label>
                        Portrait Photo:
                        <span class="error" style="color:red">
                            <?= isset($errors['image']) ? $errors['image'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="file" name="image" />
                </div>


                <input class="btn btn-primary btn-block" type="submit" name="submit" value="SUBMIT" />
        </div>  
        </form>
    </div>
    <div class="col-sm-3"></div>
</div>

includes/viewConacts.php:

<br>
<br>
<div class="container">
    <div class="row">
        <div class="col-md-3 text-center"></div>
        <div class="col-md-6 box text-center">View Contacts:<?= count($records) ?>results</div>
        <div class="col-md-3 text-center"></div>
    </div>
    <div class="row">
        <div class="col-md-3 text-center"></div>
        <div class="col-md-6 jumbotron text-center">
            <table class="table table-striped table-hover" >
                <tr class="info">
                    <th>ID</th><th>First Name</th><th>Last Name</th><th>Email</th><th>Mobile</th><th>Photo</th><th>Manage</th>
                </tr>
                <?php foreach ($records as $row): ?>
                    <tr>
                        <td align="left"><?= $row['id'] ?></td> 
                        <td align="left"><?= $row['first_name'] ?></td>
                        <td align="left"><?= $row['last_name'] ?></td> 
                        <td align="left"><?= $row['email'] ?></td> 
                        <td align="left"><?= $row['mobile'] ?></td> 
                        <td align="left"><img src="img/<?=$row['photo_filename'] ?>"width="40" height="50"/></td> 
                        <td align="left">
                            <a href="?action=editContacts&id=<?= $row['id'] ?>&firstname=<?= $row['first_name'] ?>&lastname=<?= $row['last_name'] ?>&email=<?= $row['email'] ?>&mobile=<?= $row['mobile'] ?>&photoname=<?= $row['photo_filename'] ?>">Edit</a> 
                            &nbsp;
                            <a href="?action=deleteContacts&id=<?= $row['id'] ?>" >Delete</a> 
                        </td>
                    </tr>
                <?php endforeach; ?>
            </table>
        </div>
        <div class="col-md-3 text-center"></div>
    </div>
</div>

includes/editConacts.php:

<div class="container" >

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 box text-center">
            Edit Contacts
        </div>
        <div class="col-sm-3"></div>
    </div>

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 jumbotron">
            <form action="" method="post" novalidate="true" enctype="multipart/form-data">
                <div class="form-group">
                    <label class="control-label">
                        First Name
                        <span class="error" style="color:red">
                            <?= isset($errors['first_name']) ? $errors['first_name'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="text" name="first_name"maxlength="30" value="<?= $firstname ?>" />
                </div>

                <div class="form-group">
                    <label class="control-label">
                        Last Name
                    </label>
                    <span class="error" style="color:red">
                        <?= isset($errors['last_name']) ? $errors['last_name'] : "" ?>
                    </span>
                    <input class="form-control" type="text" name="last_name"maxlength="30" value="<?= $lastname ?>" />
                </div>    

                <div class="form-group">
                    <label class="control-label">
                        Email
                    </label>
                    <span class="error" style="color:red">
                        <?= isset($errors['email']) ? $errors['email'] : "" ?>
                    </span>
                    <input class="form-control" type="email" name="email" value="<?= $Email ?>"/>
                </div>  

                <div class="form-group">
                    <label>
                        Mobile:
                        <span class="error" style="color:red">
                            <?= isset($errors['mobile']) ? $errors['mobile'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="text" name="mobile" maxlength="10" value="<?= $Mobile ?>"/>
                </div>

                <div class="form-group">
                    <label>
                        Portrait Photo:
                        <span class="error" style="color:red">
                            <?= isset($errors['image']) ? $errors['image'] : "" ?>
                        </span>
                    </label>
                    <input class="form-control" type="file" name="image" />
                </div>


                <input class="btn btn-primary btn-block" type="submit" name="submit" value="SUBMIT" />
        </div>  
        </form>
    </div>
    <div class="col-sm-3"></div>
</div>

includes/seacherConacts.php:

<div class="container" >

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 box text-center">
            Seacher Contacts
        </div>
        <div class="col-sm-3"></div>
    </div>

    <div class="row">
        <div class="col-sm-3"></div>
        <div class="col-sm-6 jumbotron">
            <form action="" method="post" >
                <div class="form-group">
                    <label class="control-label">
                        Keyword
                    </label>
                    <span class="error" style="color:red">
                        <?= isset($errors['keyword']) ? $errors['keyword'] : "" ?>
                    </span>
                    <input class="form-control" type="text" name="keyword"maxlength="30" value="<?= $keyword ?>" />
                </div>

                <input class="btn btn-primary btn-block" type="submit" name="send" value="SUBMIT" />
        </div>  
        </form>
    </div>
    <div class="col-sm-3"></div>
</div>

includes/header.php:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="">
  <meta name="author" content="">

  <title>E-Bookings Theme</title>

  <!-- Bootstrap Core CSS -->
  <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css">

  <!-- Fonts -->
  <link href="font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
  <link href="css/animate.css" rel="stylesheet" />
  <!-- Squad theme CSS -->
  <link href="css/style.css" rel="stylesheet">
  <link href="color/default.css" rel="stylesheet">


</head>

<body id="page-top" data-spy="scroll" data-target=".navbar-custom">
  

  <nav class="navbar navbar-custom navbar-fixed-top" role="navigation">
    <div class="container">
      <div class="navbar-header page-scroll">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main-collapse">
                    <i class="fa fa-bars"></i>
                </button>
        <a class="navbar-brand" href="index.html">
          <h1>E-CONTACTS DATABASE</h1>
        </a>
      </div>

      <!-- Collect the nav links, forms, and other content for toggling -->
      <div class="collapse navbar-collapse navbar-right navbar-main-collapse">
        <ul class="nav navbar-nav">
          <li class="active"><a href="#intro">Home</a></li>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown">E-CONTACTS<b class="caret"></b></a>
            <ul class="dropdown-menu">
              <li><a href="?action=addcontacts">ADD CONTACTS</a></li>
              <li><a href="?action=seachercontacts">SEACHER CONTACTS</a></li>
              <li><a href="?action=viewcontacts">VIEW CONTACTS</a></li>
            </ul>
          </li>
        </ul>
      </div>
      <!-- /.navbar-collapse -->
    </div>
    <!-- /.container -->
  </nav>
<!-- Section: intro -->
  <section id="intro" class="intro">

includes/footer.php:

 </section>
  <!-- /Section: intro -->
<footer>
    <div class="container">
      <div class="row">
        <div class="col-md-12 col-lg-12">
          <div class="wow shake" data-wow-delay="0.4s">
            <div class="page-scroll marginbot-30">
            
          </div>
          <p>&copy;SquadFREE. All rights reserved.</p>
          <div class="credits">
              Designed by <a href="https://bootstrapmade.com/">BootstrapMade</a>
          </div>
        </div>
      </div>
    </div>
  </footer>

  <!-- Core JavaScript Files -->
  <script src="js/jquery.min.js"></script>
  <script src="js/bootstrap.min.js"></script>
  <script src="js/jquery.easing.min.js"></script>
  <script src="js/jquery.scrollTo.js"></script>
  <script src="js/wow.min.js"></script>
  <!-- Custom Theme JavaScript -->
  <script src="js/custom.js"></script>
  

</body>

</html>

includes/content.php:

    <div class="slogan">
      <h2>WELCOME TO <span class="text_color">E-CONTACTS THEME</span> </h2>
      <h4>I AM A STUDENT IN THE WEB APPLICATION & SERVER MANAGEMENT UNIT</h4>
    </div>	

以上!

原创文章 85 获赞 46 访问量 9645

猜你喜欢

转载自blog.csdn.net/Deam_swan_goose/article/details/105810519