资源管理系统之---把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");
}
?>

 

 

 

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