PHP+MySQL實現后臺管理系統增刪改查之夠用就好

說明

最近要給博客弄個后臺,不想搞得很復雜,有基本的增刪改查就夠了,到網上找了一圈發現這個不錯,很實用,希望可以幫到大家,需要的朋友評論區留下郵箱,我安排發送。

在這里插入圖片描述

演示效果

在這里插入圖片描述

項目介紹

本項目基于Php開發,實現最基本的增刪改查頁面,通常作為簡單的后臺管理系統使用。

技術棧

  • php7+
  • mysql5.7+

運行步驟

  1. 本機搭建好mysql數據庫和php運行環境(推薦下載安裝phpstudy軟件,運行mysql和apache,PHP建議選擇7.4+)
  2. 將本項目文件夾復制到web運行目錄,例如:d:/phpstudy/www,phpstudy中創建網站并指向該目錄
  3. mysql中創建數據庫: phpcrud,執行腳本:phpcrud.sql
  4. 修改db.php文件中數據庫密碼
  5. 瀏覽器訪問:localhost:端口/phpcrud

核心代碼

首頁

<?php
include 'functions.php';
// Your PHP code here.// Home Page template below.
?><?= template_header('Home') ?><div class="content"><h2>首頁</h2><p>歡迎來到首頁!</p>
</div><?= template_footer() ?>

列表查詢

<?php
include 'functions.php';
// Connect to MySQL database
$pdo = pdo_connect_mysql();
// Get the page via GET request (URL param: page), if non exists default the page to 1
$page = isset($_GET['page']) && is_numeric($_GET['page']) ? (int)$_GET['page'] : 1;
// Number of records to show on each page
$records_per_page = 5;
// Prepare the SQL statement and get records from our contacts table, LIMIT will determine the page
$stmt = $pdo->prepare('SELECT * FROM contacts ORDER BY id LIMIT :current_page, :record_per_page');
$stmt->bindValue(':current_page', ($page - 1) * $records_per_page, PDO::PARAM_INT);
$stmt->bindValue(':record_per_page', $records_per_page, PDO::PARAM_INT);
$stmt->execute();
// Fetch the records so we can display them in our template.
$contacts = $stmt->fetchAll(PDO::FETCH_ASSOC);
// Get the total number of contacts, this is so we can determine whether there should be a next and previous button
$num_contacts = $pdo->query('SELECT COUNT(*) FROM contacts')->fetchColumn();
?><?= template_header('Read') ?><div class="content read"><h2>聯系人列表</h2><a href="create.php" class="create-contact">新增</a><table><thead><tr><td>#</td><td>姓名</td><td>郵箱</td><td>電話</td><td>級別</td><td>創建時間</td><td></td></tr></thead><tbody><?php foreach ($contacts as $contact) : ?><tr><td><?= $contact['id'] ?></td><td><?= $contact['name'] ?></td><td><?= $contact['email'] ?></td><td><?= $contact['phone'] ?></td><td><?= $contact['title'] ?></td><td><?= $contact['created'] ?></td><td class="actions"><a href="update.php?id=<?= $contact['id'] ?>" class="edit"><i class="fas fa-pen fa-xs"></i></a><a href="delete.php?id=<?= $contact['id'] ?>" class="trash"><i class="fas fa-trash fa-xs"></i></a></td></tr><?php endforeach; ?></tbody></table><div class="pagination"><?php if ($page > 1) : ?><a href="read.php?page=<?= $page - 1 ?>"><i class="fas fa-angle-double-left fa-sm"></i></a><?php endif; ?><?php if ($page * $records_per_page < $num_contacts) : ?><a href="read.php?page=<?= $page + 1 ?>"><i class="fas fa-angle-double-right fa-sm"></i></a><?php endif; ?></div>
</div><?= template_footer() ?>

新增頁面

在這里插入圖片描述

<?php
include 'functions.php';
$pdo = pdo_connect_mysql();
$msg = '';
// Check if POST data is not empty
if (!empty($_POST)) {// Post data not empty insert a new record// Set-up the variables that are going to be inserted, we must check if the POST variables exist if not we can default them to blank$id = isset($_POST['id']) && !empty($_POST['id']) && $_POST['id'] != 'auto' ? $_POST['id'] : NULL;// Check if POST variable "name" exists, if not default the value to blank, basically the same for all variables$name = isset($_POST['name']) ? $_POST['name'] : '';$email = isset($_POST['email']) ? $_POST['email'] : '';$phone = isset($_POST['phone']) ? $_POST['phone'] : '';$title = isset($_POST['title']) ? $_POST['title'] : '';$created = isset($_POST['created']) ? $_POST['created'] : date('Y-m-d H:i:s');// Insert new record into the contacts table$stmt = $pdo->prepare('INSERT INTO contacts VALUES (?, ?, ?, ?, ?, ?)');$stmt->execute([$id, $name, $email, $phone, $title, $created]);// Output message$msg = '新增成功!';
}
?><?= template_header('Create') ?><div class="content update"><h2>Create Contact</h2><form action="create.php" method="post"><label for="id">ID</label><label for="name">姓名</label><input type="text" name="id" placeholder="26" value="auto" id="id"><input type="text" name="name" placeholder="John Doe" id="name"><label for="email">郵箱</label><label for="phone">電話</label><input type="text" name="email" placeholder="johndoe@example.com" id="email"><input type="text" name="phone" placeholder="2025550143" id="phone"><label for="title">級別</label><label for="created">創建時間</label><input type="text" name="title" placeholder="Employee" id="title"><input type="datetime-local" name="created" value="<?= date('Y-m-d\TH:i') ?>" id="created"><input type="submit" value="Create"></form><?php if ($msg) : ?><p><?= $msg ?></p><?php endif; ?>
</div><?= template_footer() ?>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719777.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719777.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719777.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Jetty使用入門

Jetty使用入門 社區當前推薦開發者使用Jetty 12.X版本。 依據End of Community Support for Jetty 9.x - June 2022&#xff0c;社區對Jetty 9.x的支持&#xff0c;已在2022年6月1日停止。 依據End of Community Support for Jetty 10 / Jetty 11 - January 2024&#xff0c;…

帶使能控制的鋰電池充放電解決方案

一、產品概述 TP4594R 是一款集成線性充電管理、同步升壓轉換、電池電量指示和多種保護功能的單芯片電源管理 SOC&#xff0c;為鋰電池的充放電提供完整的單芯片電源解決方案。 TP4594R 內部集成了線性充電管理模塊、同步升壓放電管理模塊、電量檢測與 LED 指示模塊、保護模塊…

關于python函數參數傳遞

參數傳遞 在 python 中&#xff0c;類型屬于對象&#xff0c;對象有不同類型的區分&#xff0c;變量是沒有類型的&#xff1a; 在下面的代碼示例重&#xff0c;[1,2,3] 是 List 類型&#xff0c;“qayrup” 是 String 類型&#xff0c;而變量 a 是沒有類型&#xff0c;它僅僅…

#WEB前端

1.實驗&#xff1a;vscode安裝&#xff0c;及HTML常用文本標簽 2.IDE&#xff1a;VSCODE 3.記錄&#xff1a; &#xff08;1&#xff09;網頁直接搜索安裝vscode &#xff08;2&#xff09;打開vscode&#xff0c;在下圖分別安裝以下插件&#xff1a; Html Css Support …

C++11線程同步之互斥鎖

C11線程同步之互斥鎖 std::mutex成員函數線程同步 std::lock_guardstd::recursive_mutexstd::timed_mutex 進行多線程編程&#xff0c;如果多個線程需要對同一塊內存進行操作&#xff0c;比如&#xff1a;同時讀、同時寫、同時讀寫對于后兩種情況來說&#xff0c;如果不做任何的…

《互聯網的世界》第四講-擁塞控制與編碼

需要澄清的一個誤區是&#xff0c;擁塞絕不是發送的數據量太大導致&#xff0c;而是數據在極短的時間段內到達了同一個地方以至于超過了網絡處理容量導致&#xff0c;擁塞的成因一定要考慮時間因素。換句話說&#xff0c;擁塞由大突發導致。 只要 pacing&#xff0c;再多的數據…

2024.3.4訓練記錄(8)

文章目錄 CF 459D Pashmak and Parmidas problemCF 1388C Uncle Bogdan and Country HappinessCF 1525D ArmchairsCF 220B Little Elephant and Array CF 459D Pashmak and Parmida’s problem 題目鏈接 最近感覺對數據結構題的反應度提升了&#xff0c;這一題是上午看的但是…

動態規劃(算法競賽、藍橋杯)--樹形DP樹形背包

1、B站視頻鏈接&#xff1a;E18 樹形DP 樹形背包_嗶哩嗶哩_bilibili #include <bits/stdc.h> using namespace std; const int N110; int n,V,p,root; int v[N],w[N]; int h[N],to[N],ne[N],tot; //鄰接表 int f[N][N];void add(int a,int b){to[tot]b;ne[tot]h[a];h[a…

數倉項目6.0(一)

尚硅谷大數據項目【電商數倉6.0】企業數據倉庫項目_bilibili 數據流轉過程 用戶??業務服務器??數據庫存儲??數倉統計分析??數據可視化 數據倉庫處理流程&#xff1a;數據源??加工數據??統計篩選數據??分析數據 數據庫不是為了數據倉庫服務的&#xff0c;需要…

B084-SpringCloud-Zuul Config

目錄 zuul系統架構和zuul的作用zuul網關實現配置映射路徑過濾器 Config概述云端管理本地配置 zuul zuul是分布式和集群后前端統一訪問入口 系統架構和zuul的作用 zuul把自己注冊進eureka&#xff0c;然后可通過前端傳來的服務名發現和訪問對應的服務集群 為了預防zuul單點故…

Java 枚舉類的深入理解與應用

Java 的枚舉類是一種特殊的類&#xff0c;通常表示一組常量。在編譯或設計時&#xff0c;當我們知道所有變量的可能性時&#xff0c;盡量使用枚舉類型。本文將通過一個具體的例子&#xff0c;深入探討 Java 枚舉類的定義、使用和高級特性。 目錄 枚舉類的定義與使用枚舉類的構造…

【OJ】求和與計算日期

文章目錄 1. 前言2. JZ64 求123...n2.1 題目分析2.2 代碼 3. HJ73 計算日期到天數轉換3.1 題目分析3.2 代碼 4. KY222 打印日期4.1 題目分析4.2 代碼 1. 前言 下面兩個題目均來自牛客&#xff0c;使用的編程語言是c&#xff0c;分享個人的一些思路和代碼。 2. JZ64 求123…n …

Vue 賦值后原數據隨賦值后的數據的變化而變化

很常見的&#xff0c;當我們直接用“”號等方式直接賦值后 原數據會隨賦值后的數據的變化而變化 但是有時候我們的需求是不需要原數據跟隨變化 所以怎么解決呢&#xff1f; 解決辦法有&#xff1a; 1.使用Object.assign() 方法 2.使用深拷貝函數 JSON.parse() 3.使用第三方庫lo…

畢業生信息招聘平臺|基于springboot+ Mysql+Java的畢業生信息招聘平臺設計與實現(源碼+數據庫+文檔+PPT)

目錄 論文參考 摘 要 數據庫設計 系統詳細設計 文末獲取源碼聯系 論文參考 摘 要 隨著社會的發展&#xff0c;社會的各行各業都在利用信息化時代的優勢。計算機的優勢和普及使得各種信息系統的開發成為必需。 畢業生信息招聘平臺&#xff0c;主要的模塊包括查看管理員&a…

#ifndef 和 #pragma once的區別

#ifndef 和 #pragma once 都是用來防止頭文件被重復包含的&#xff0c;但它們的工作方式和兼容性有所不同&#xff1a; #ifndef 是 C 的標準語法&#xff0c;它依賴于不重復的宏名稱&#xff0c;保證了包含在 #endif 的內容不會被重復包含。這個內容可以是一個文件的所有內容&…

Webpack配置與運行基礎教程

在前端開發中&#xff0c;Webpack是一款非常流行的模塊打包工具&#xff0c;它可以幫助我們將多個文件打包成一個或多個靜態資源文件&#xff0c;從而提高前端項目的性能和可維護性。本文將為你介紹Webpack的基礎配置和運行方法&#xff0c;幫助你快速上手Webpack。 什么是Web…

基于Springboot的無人智慧超市管理系統(有報告)。Javaee項目,springboot項目。

演示視頻&#xff1a; 基于Springboot的無人智慧超市管理系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層體系…

1.3 有哪些文本表示模型?它們各有什么優缺點?

1.3 有哪些文本表示模型?它們各有什么優缺點? 場景描述 文本是一類非常重要的非結構化數據&#xff0c;如何表示文本數據一直是機器學習領域的一個重要研究方向。 知識點 詞袋模型(Bag of Words)TF-IDF(Term Frequency-Inverse DocumentFrequency)主題模型(Topic Model)詞…

【每日刷題】數組-LC56、LC238、隨想錄1、LC560

1. LC56 合并區間 題目鏈接 Arrays.sort先讓intervals里的子數組按照子數組的第一個數字值從小到大排列。開一個新數組&#xff0c;newInterval&#xff0c;存放合并好的子數組讓intervals的當前子數組i的第一個數字與newInterval的當前子數組index的最后一個數字比較大小&am…

ARM 架構下國密算法庫

目錄 前言GmSSL編譯環境準備下載 GmSSL 源碼編譯 GmSSL 源碼SM4 對稱加密算法SM2 非對稱加密算法小結前言 在當前的國際形式下,國替勢不可擋。操作系統上,銀河麒麟、統信 UOS、鴻蒙 OS 等國產系統開始發力,而 CPU 市場,也是百花齊放,有 龍芯(LoongArch架構)、兆芯(X86…