Skip to content

freedom5566/bulletin-tkphp

Repository files navigation

寫在前頭

這個庫是三重某公司面試過後的給出的作業

請您以PHP(thinkphp框架)+mysql+javascript 寫個公告系統,功能如下: 1.設計公告的資料表,需標題、內文及發文者。 2.寫出新增、修改、刪除、查詢語法,公告內包含標題與內文。 3.利用javascript ,做表單驗證,僅需驗證標題與內文是否已填寫即可。

寫完之後兩個禮拜給我罐頭拒絕信,沒有任何理由QQ

這個CURD作業之後拿來練習看看SPA好了

thinkphp5.1

實作CURD

主要檔案
.
├── application
│     └── index
│             ├── controller
│             ├── model
│             ├── service
│             └── view
├── config
├── public
│ └── static
│             ├── css
│             └── js
└── route

controller:放了Home.php(主要功能所在controller)、Index.php(用來確認目錄正確的頁面)
model:model
service:輔助controller用
view:CRUD4個html加上一個共用的menu.html
config:有改動的是app.php(主要是debug用)、database.php(資料庫連線用)
public:放了css、js
route:CRUD4個頁面的路由

Route::get("select","index/home/select");//查看頁面
Route::get("insert","index/home/insert");//新增頁面
Route::get("update","index/home/update");//修改頁面
Route::get("delete","index/home/delete");//刪除頁面

重建說明

先clone這個專案

git clone https://github.com/freedom5566/bulletin-tkphp.git tp5

然後cd tp5(進入tp5目錄),clone thinkphp 核心(不要改動thinkphp目錄名稱)

git clone https://github.com/top-think/framework thinkphp

連接資料庫請看config/database.php

database預設連HelloTest,table連bulletin(要改掉也行)

server目錄請設定tp5/public port設定8080(要改掉也行)

訪問127.0.0.1:8080應該會出現
圖片不見了,請開issuse告知

成功後可以訪問
127.0.0.1:8080/select
127.0.0.1:8080/insert
127.0.0.1:8080/update
127.0.0.1:8080/delete

可以看到對應的查訊新增修改刪除

如果出現
圖片不見了,請開issuse告知
這表示server設定目錄不對


docker-compose方便快速的重建方法

原始碼

thinkphp5.1 要求

PHP >= 5.6.0
PDO PHP Extension
MBstring PHP Extension

先新增兩個dump、tkphp資料夾,等等會用到
接著新增docker-compose.yml

~ $ mkdir rebuild && cd rebuild 
~ /rebuild $ mkdir dump tkphp
~ /rebuild $ vim docker-compose.yml
version: "3"
services: 
  db: 
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: 123 #帳號root密碼123
    volumes:
      - ./dump:/docker-entrypoint-initdb.d
       # 啟動時, 執行sql檔案
    networks:
      - my_network 
  php:
    build: ./tkphp # build tkphp資料夾下的Dockerfile
    image: tkphp:latest #build後images名稱和標籤
    depends_on:
      - db #等待mariadb啟動完成
    ports:
      - 8080:80 #映射主機8080port
    networks:
      - my_network
    working_dir: /usr/src/myapp/tp5/public #切換目錄
    command: php -S 0.0.0.0:80 #啟動內建伺服器
    
networks:
    my_network:

:wq存檔
yml需要注意空格,可以用config指令檢查

~ /rebuild $ docker-compose config

正確返回docker-compose內容,否則返回格式錯誤

新增dump.sql檔案

~ /rebuild $ vim dump/dump.sql
CREATE DATABASE `HelloTest` CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE TABLE `HelloTest`.`bulletin` 
( `id` INT(10) NOT NULL AUTO_INCREMENT ,
  `article` VARCHAR(100) NOT NULL ,
  `author` VARCHAR(10) NOT NULL ,
  `title` VARCHAR(10) NOT NULL , 
  PRIMARY KEY (`id`)) ENGINE = InnoDB;

:wq存檔

新增Dockerfile檔案

~ /rebuild $ vim tkphp/Dockerfile
# 基礎映像
FROM php:7.2-alpine3.7

# alpine來源替換成國內元智大學,然後安裝git 並clone重建專案,裝完後刪除git, 接著安裝pdo_mysql, MBstring、PDO在php:7.2-alpine3.7已經有了,所以不需要再裝
RUN sed -i 's/http\:\/\/dl-cdn.alpinelinux.org/https\:\/\/ftp.yzu.edu.tw\/Linux/g' /etc/apk/repositories  && \
    apk add --update --no-cache   --virtual build-dependencies  \
    git \
    && git clone https://github.com/freedom5566/bulletin-tkphp.git /usr/src/myapp/tp5 \
    && git clone https://github.com/top-think/framework /usr/src/myapp/tp5/thinkphp \
    && apk del build-dependencies \
    && docker-php-ext-install pdo_mysql 

:wq存檔

開始建立compose

~ /rebuild $ docker-compose up

第一次使用要稍微等一下,主要是下載images跟gitclone專案

就能訪問127.0.0.1:8080了

想關閉回到終端機按Ctrl+c,接著

~ /rebuild $ docker-compose down 
~ /rebuild $ docker volume prune

關閉docker-compose並且清掉volume(資料庫)
P.S:這邊所用的docker-compose並不會保留資料