資源管理系統之---把excel中數據導入到mysql,然後通過PHP展現在web上

背景:公司內部的項目情況,雲點、服務器、IP等資源情況都需要做登記管理。起初都是用excel表格進行登記,但由於表格數量多,登記麻煩管理麻煩,而且不方便運維工程師們協同工作。針對這個問題,我們從svn轉到dzzoffice;但因爲表格過多還是很不方便。

由於本人可以說毫無數據庫和PHP經驗,所以只能做一回代碼界的搬運工了。

主題:

一、開設Centos7雲主機,搭建基本環境

基礎環境要求:http+php+phpmyadmin+mysql(本案適用了centos7自帶的mariadb,與mysql指令上會有些差別)

基礎環境搭建很簡單,只貼代碼不做闡述

systemctl stop firewalld
systemctl disable firewalld
yum install iptables iptables-services -y

systemctl start iptables
systemctl enable iptables
iptables -F
ptables -Z
iptables -X
iptables -L
service iptables save

yum install httpd -y
systemctl start httpd
yum install epel-release
yum -y install mariadb-server
systemctl start mariadb
systemctl enable mariadb
yum install -y install phpMyAdmin php-mysql php-mcrypt

mysql_secure_installation    #基本就是一路Y
setenforce 1   #記得進/etc/selinux/conf 把enforcing改成disabled

關於phpmyadmin的配置可以參考如下鏈接:

https://www.cnblogs.com/teamemory/p/8668030.html

主要是放行客戶端的web訪問:

 

二、把excel中的數據導入到mysql中

1. 首先創建數據庫和表

登入phpmyadmin,創建數據庫http://192.168.0.47:8780/phpmyadmin

圖1

 

 

圖2

 然後創建表,先選一個簡單的表格實踐下。

先填入表名,字段數,然後點擊執行。再輸入字段名字以及類型。

CaseID是爲了方便後期增刪改操作,故在excel基礎上增加了CaseID字段,並設置爲primary。

2. 在excel表格中自動生成mysql語句

參考博主https://blog.csdn.net/xxj_jing/article/details/8190146

在寫mysql指令的時候發現每次都要輸入CaseID,很麻煩。想着有沒有可以自增加的ID。網上找下,果然後自增主鍵。

進入數據庫,給CaseID 字段配置自增屬性:

alter table cases drop primary key;   //因爲前面有設置CaseID爲主鍵,所以先刪除主鍵屬性

alter table cases modify CaseID CaseID int(11) not null AUTO_INCREMENT primary key;
//重新配置自增主鍵屬性

 3. 複製步驟2中生成的指令,把數據導入到mysql

 

三、敲代碼

想法:PHP或者Python讀取數據庫中cases表,然後像excel一樣展示到web。同時能夠增刪改;

python只會腳本,不會web。PHP一直號稱”世界上最好的語言”。所以選擇PHP做嘗試。

喝水不忘挖井人:https://blog.csdn.net/bboyjoe/article/details/48731223

 

 

1. 首先肯定先寫連接數據庫的代碼,數據庫都對接不上還展示個啥。

在/var/www/html/test1/下創建鏈接數據庫的函數文件functions.php

<?php
define('MYSQL_HOST','localhost');
define('MYSQL_USER','root');
define('MYSQL_PW','xxxxxx');

function connnetDb(){
    //連接mysql數據庫
    $conn=mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PW);
    //排除連接數據庫異常錯誤
    if(!$conn){
        die('can not connect db');
    }
    //在mysql中選中myapp數據庫
    mysql_select_db("ydydatabase");
    mysql_query("set names utf8");
    return $conn;
}

?>

2. 寫展示cases表的代碼

在/var/www/html/test1/下創建展示的網頁文件case.php 。

<?php
    require_once 'functions.php';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>易達雲專案</title>
    <style>
        table{
            border-collapse: collapse;
        }
        th,td{
            border:1px solid #ccccff;
            padding: 5px;
        }
        td{
            text-align: center;
        }
    </style>
</head>
<body>
<a href="addcase.html">添加專案記錄</a><br></br>
<table>
    <tr><th>專案id</th><th>客戶編號</th><th>專案名</th><th>專案編號</th><th>客戶對接窗口</th><th>技術負責人</th><th>階段</th><th>服務時間</th><th>服務內容</th><th>操作</th></tr>
<?php
//連接數據庫
connnetDb();
//查詢數據表中的所有數據,並按照id降序排列
$result=mysql_query("SELECT * FROM `cases`");
//獲取數據表的數據條數
$dataCount=mysql_num_rows($result);
//echo $dataCount;
//打印輸出所有數據
 
 
for($i=0;$i<$dataCount;$i++){
    $result_arr=mysql_fetch_assoc($result);
    $caseid=$result_arr['CaseID'];
    $custnum=$result_arr['CustNum'];
    $casename=$result_arr['CaseName'];
    $casenum=$result_arr['CaseNum'];
    $custwindow=$result_arr['CustWindow'];
    $tecdirector=$result_arr['tecdirector'];
    $phase=$result_arr['phase'];
    $servicetime=$result_arr['servicetime'];
    $content=$result_arr['content'];
    //print_r($result_arr);
    echo "<tr><td>$caseid</td><td>$custnum</td><td>$casename</td><td>$casenum</td><td>$custwindow</td><td>$tecdirector</td><td>$phase</td><td>$servicetime</td><td>$content</td><td><a href='editcase.php?id=$caseid'>修改</a> <a href='deletecase.php?id=$caseid'>刪除</a></td></tr>";
}
?>
</table>
</body>
</html>

登入網頁看下效果:

3. 接下來寫添加數據的頁面。

vim addcase.html

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>添加專案</title>
</head>
<body>
<form action="addcase.php" method="post">
    <label>客戶編號:</label><input type="text" name="CustNum"><br></br>
    <label>專案名:</label><input type="text" name="CaseName"><br></br>
    <label>專案編號:</label><input type="text" name="CaseNum"><br></br>
    <label>客戶對接窗口:</label><input type="text" style="width:500px;" name="CustWindow"><br></br>
    <label>技術負責人:</label><input type="text" name="tecdirector"><br></br>
    <label>階段:</label><input type="text" name="phase"><br></br>
    <label>服務時間:</label><input type="text" name="servicetime"><br></br>
    <label>服務內容:</label><input type="text" style="width:900px;" name="content"><br></br>
    <input type="submit" value="提交">
</form>
</body>
</html>

 vim addcase.php

<?php
require_once 'functions.php';

//首先進行非空檢查
if(!isset($_POST['CaseName'])){
    die('請輸入專案名');
}
if(!isset($_POST['tecdirector'])){
    die('請輸入技術負責人');
}
if(!isset($_POST['phase'])){
    die('請輸入專案階段');
}
if(!isset($_POST['content'])){
    die('請輸入專案內容');
}

$CustNum=$_POST['CustNum'];
$CaseName=$_POST['CaseName'];
$CaseNum=$_POST['CaseNum'];
$CustWindow=$_POST['CustWindow'];
$tecdirector=$_POST['tecdirector'];
$phase=$_POST['phase'];
$servicetime=$_POST['servicetime'];
$content=$_POST['content'];
if(empty($CaseName)){
    die('CaseName is empty');
}
if(empty($tecdirector)){
    die('tecdirector is empty');
}
if(empty($phase)){
    die('phase is empty');
}
if(empty($content)){
    die('content is empty');
}

//連接數據庫
connnetDb();
  
//執行類型轉換,防止SQL注入
//$CaseID=intval($CaseID);  //因爲CaseID後面設置了自增屬性,所以不需要轉換

//插入數據
mysql_query("INSERT INTO cases (`CustNum`,`CaseName`,`CaseNum`,`CustWindow`,`tecdirector`,`phase`,`servicetime`,`content`) VALUES('$CustNum','$CaseName','$CaseNum','$CustWindow','$tecdirector','$phase','$servicetime','$content')");
//返回列表頁面
if(mysql_error()){
    echo mysql_error();
}else{
    header("Location:case.php");
}

4. 修改的功能

vim editcase.php

<?php
require_once 'functions.php';
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>修改專案</title>
</head>
<body>

<?php
    if(!empty($_GET['id'])){
        connnetDb();
 
        //查找CaseID
        $id=intval($_GET['id']);
        $result=mysql_query("SELECT * FROM cases WHERE CaseID=$id");
	echo("CaseID: $id");
        if(mysql_error()){
            die('can not connect db');
        }
        //獲取結果數組
        $result_arr=mysql_fetch_assoc($result);
    }else{
        die('CaseID not define');
    }
?>
<form action="editcase_server.php" method="post">
    <label>專案ID:</label><input type="text" name="CaseID" value="<?php echo $result_arr['CaseID']?>"><br></br>
    <label>客戶編號:</label><input type="text" name="CustNum" value="<?php echo $result_arr['CustNum']?>"><br></br>
    <label>專案名:</label><input type="text" name="CaseName" value="<?php echo $result_arr['CaseName']?>"><br></br>
    <label>專案編號:</label><input type="text" name="CaseNum" value="<?php echo $result_arr['CaseNum']?>"><br></br>
    <label>客戶對接窗口:</label><input type="text" style="width:900px;" name="CustWindow" value="<?php echo $result_arr['CustWindow']?>"><br></br>
    <label>技術負責人:</label><input type="text" name="tecdirector" value="<?php echo $result_arr['tecdirector']?>"><br></br>
    <label>階段:</label><input type="text" name="phase" value="<?php echo $result_arr['phase']?>"><br></br>
    <label>服務時間:</label><input type="text" name="servicetime" value="<?php echo $result_arr['servicetime']?>"><br></br>
    <label>服務內容:</label><input type="text" style="width:900px;" name="content" value="<?php echo $result_arr['content']?>"><br></br>
    <input type="submit" value="提交修改">
</form>
</body>
</html>

vim editcase_server.php

<?php
require_once 'functions.php';

if(empty($_POST['CaseID'])){
    die('CaseID is empty');
}
if(empty($_POST['CaseNum'])){
    die('CaseNum is empty');
}
if(empty($_POST['tecdirector'])){
    die('tecdirector is empty');
}
if(empty($_POST['phase'])){
    die('phase is empty');
}
 
$id=$_POST['CaseID']; 
$CustNum=$_POST['CustNum'];
$CaseName=$_POST['CaseName'];
$CaseNum=$_POST['CaseNum'];
$CustWindow=$_POST['CustWindow'];
$tecdirector=$_POST['tecdirector'];
$phase=$_POST['phase'];
$servicetime=$_POST['servicetime'];
$content=$_POST['content'];
 
 
//連接數據庫
connnetDb();
 
 
//修改指定數據
mysql_query("UPDATE cases SET CustNum = '$CustNum', CaseName = '$CaseName', CaseNum = '$CaseNum', CustWindow = '$CustWindow', tecdirector = '$tecdirector', phase = '$phase', servicetime = '$servicetime', content = '$content' WHERE CaseID = '$id'");
 
 
//排錯並返回
if(mysql_error()){
    echo mysql_error();
}else{
    header("Location:case.php");
}

 

5. 刪除功能

vim deletecase.php

<?php
require_once 'functions.php';
 
//判斷是否爲空
if(empty($_GET['id'])){
    die('CaseID is empty');
}
//連接數據庫
connnetDb();
 
$id=intval($_GET['id']);
//$id=$_POST['CaseID'];   //不行
 
//用唯一字段CaseID去匹配數據並刪除
mysql_query("DELETE FROM cases WHERE CaseID='$id'");

if(mysql_error()){
    echo mysql_error();
}else{
    header("Location:case.php");
}
?>

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章