背景:公司内部的项目情况,云点、服务器、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
然后创建表,先选一个简单的表格实践下。
先填入表名,字段数,然后点击执行。再输入字段名字以及类型。
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");
}
?>