当前位置: 首页 > news >正文

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具,可讓開發者靈活運用,同時其有數個表單模板和應用模組供挑選,方便且彈性。Form tools已開發超過20年,為不同領域的需求者或開發者提供一個自由和開放的平台,使他們可建構自定義的數據表單和格式,並透過網站發布,以及在Form tools管理後台或者MySQL中取得回填表單。另外,可藉由Form tools管理後台設定的資料可視化模組(Data   Visualization Module),讓需求者可實時監看和管理回填表單的狀態,如下兩圖所示。看到這裡,是不是迫不及待想玩玩這個開源工具了呢?  

如前所述,Form tools 需要搭配PHP 和 SQL,因此需要先在作業系統中安裝PHP和SQL環境,本文的電腦環境規格如下:
1.Ubuntu desktop 23.04

2.PHP 8.1.12-1ubuntu4.2

3.MariaDB 10.11.2

建置Form tools的步驟如下:

a.到官網下載Form tools下載Form tool3並解壓縮後,可利用下列指令將壓縮後的formtools資料夾複製到 var/www/html路徑下。

sudo cp -r /path/to/form-tools/* /var/www/html/

b.為確保 Form tools可順利運行,需要設置相關文件夾的權限,可使用下列指令,將用戶名raspberry加入www-data群組中,並使其和群組擁有/var/www/html的使用權限。另外,通過 755 的設置,將用戶名(raspberry)權限設定為讀、寫和執行; 群組(www-data)權限設定為讀和執行; 其他使用者權限設定為讀和執行。

sudo chown -R raspberry:www-data /var/www/html

sudo chmod -R 755 /var/www/html

c.請先確認Apache server是否有啟動,即可藉由瀏覽器進到Form tools的安裝頁面,如下圖安裝頁面。(一般都是http://IP address/formtools,如http://192.168.0.111/formtools)

d.根據需求選擇語系後,來到第二個步驟的系統檢查,發現upload和cache兩個資料夾未取得通行證,原因是兩個資料夾需要讀和寫的權限,可用下列指令對兩個資料夾設置使用權限,即可順利取得通行證。


sudo chmod -R 775 /var/www/html/formtools/upload
sudo chmod -R 775 /var/www/html/formtools/cache

e.來到"創建數據庫表",為了順利辨識,我將數據庫名稱設定為formtools。另外,請根據自身SQL的設定來填入正確的數據庫用戶名和密碼,使得位於var/www/html/formtools可被存取數據。

f.點選"創建數據庫表"按鈕後,此時Form tools即建立formtools數據庫以及帶有前綴ft的數據表,可同時在SQL中一併確認數據庫和表是否已建立完成。(OS:這裡需要一點時間,視電腦性能而定,我使用樹莓派來測試,以為其當機,多按幾次就出現下列"數據表已存在,是否要覆蓋已存在的數據表"的提示訊息。)

 

g.來到"創建配置文件"步驟,該步驟的用意即是將剛剛填寫的數據庫名、數據庫用戶名和密碼等等資訊,創建成config.php文件並置放在/var/www/html/formtools/global資料夾中。

h.來到"創建管理員帳戶"步驟,該管理員指的是Form tools後台介面的管理員,在後台管理介面中,可以創建表單、監看表單回填狀態和操控資料視覺化模組等等。

i.點選"創建帳戶"按鈕後,大功告成。

Reference:

1.Form tools installation

相关文章:

[Open-source tool] 可搭配PHP和SQL的表單開源工具_Form tools(1):簡介和建置

Form tools是一套可搭配PHP和SQL的表單開源工具,可讓開發者靈活運用,同時其有數個表單模板和應用模組供挑選,方便且彈性。Form tools已開發超過20年,為不同領域的需求者或開發者提供一個自由和開放的平台,使他們可建構…...

移动数据业务价值链的整合

3G 时代移动数据业务开发体系的建立和发展,要求运营商从封闭、统一的业 务形态、单一提供业务,向开放的、个性化多元化的业务体系以及多方合作参与提 供业务的方向发展,不可避免的使通信价值链不断延长和升级,内容提供商、服务 …...

合并两个链表

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 比如以下例子: 题目接口: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListN…...

测试框架pytest教程(9)跳过测试skip和xfail

skip无条件跳过 使用装饰器 pytest.mark.skip(reason"no way of currently testing this") def test_example(faker):print("nihao")print(faker.words()) 方法内部调用 满足条件时跳过 def test_example():a1if a>0:pytest.skip("unsupported …...

HTML <textarea> 标签

实例 <textarea rows="3" cols="20"> 收拾收拾 </textarea>定义和用法 <textarea> 标签定义多行的文本输入控件。 文本区中可容纳无限数量的文本,其中的文本的默认字体是等宽字体(通常是 Courier)。 可以通过 cols 和 rows 属性来…...

探索图结构:从基础到算法应用

文章目录 理解图的基本概念学习图的遍历算法学习最短路径算法案例分析&#xff1a;使用 Dijkstra 算法找出最短路径结论 &#x1f389;欢迎来到数据结构学习专栏~探索图结构&#xff1a;从基础到算法应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;I…...

Redis之GEO类型解读

目录 基本介绍 基本命令 geoadd 命令 geopos 命令 geodist 命令 georadius 命令 georadiusbymember 命令 geohash 命令 基本介绍 GEO 主要用于存储地理位置信息&#xff08;纬度、经度、名称&#xff09;添加到指定的key中。该功能在 Redis 3.2 版本新增。 GEO&…...

uniapp 微信小程序 路由跳转

保留当前页面&#xff0c;跳转到应用内的某个页面&#xff0c;使用uni.navigateBack可以返回到原页面 //在起始页面跳转到test.vue页面并传递参数 uni.navigateTo({url: test?id1&name"lisa" }); uni.redirectTo(OBJECT) 关闭当前页面&#xff0c;跳转到应用…...

【android12-linux-5.1】【ST芯片】HAL移植后没调起来

ST传感器芯片HAL按官方文档移植后&#xff0c;测试一直掉不起来&#xff0c;加的日志没出来。经过分析&#xff0c;是系统自带了一个HAL&#xff0c;影响的。 按照官方文档&#xff0c;移植HAL后&#xff0c;在/device/<vendor\>/<board\>/device.mk*路径增加PROD…...

Redis Lua脚本执行原理和语法示例

Redis Lua脚本语法示例 文章目录 Redis Lua脚本语法示例0. 前言参考资料 1. Redis 执行Lua脚本原理1.1. 对Redis源码中嵌入Lua解释器的简要解析&#xff1a;1.2. Redis Lua 脚本缓存机制 2. Redis Lua脚本示例1.1. 场景示例1. 请求限流2. 原子性地从一个list移动元素到另一个li…...

百望云华为云共建零售数字化新生态 聚焦数智新消费升级

零售业是一个充满活力和创新的行业&#xff0c;但也是当前面临很大新挑战和新机遇的行业。数智新消费时代&#xff0c;数字化转型已经成为零售企业必须面对的重要课题。 8 月 20 日-21日&#xff0c;以“云上创新 韧性增长”为主题的华为云数智新消费创新峰会2023在成都隆重召…...

JMETER基本原理

Jmeter基本原理是建立一个线程池&#xff0c;多线程运行取样器产生大量负载&#xff0c;在运行过程中通过断言来验证结果的正确性&#xff0c;可以通过监听来记录测试结果&#xff1b; JMETER是运行在JVM虚拟机上的&#xff0c;每个进程的开销比loadrunner的进程开销大&#x…...

elementUI自定义上传文件 前端后端超详细过程

下面是使用Element UI自定义上传文件的前后端详细过程&#xff1a; 前端过程&#xff1a; 引入Element UI组件库&#xff1a;在前端项目中引入Element UI库&#xff0c;可以通过CDN引入或者通过npm安装并导入。 创建上传组件&#xff1a;在前端代码中创建一个上传组件&#x…...

快速排序笔记

一、quick_sort方法中如果 il,jr 会死循环的分析 1、示例代码 void quick_sort(int a[],int l,int r){if(l>r) return;int il,jr; //此处设置会导致死循环int x num[(lr)>>1];while(i<j){while(a[i] <x); //死循环的地方while(a[--j] >x);if(i<j) swap(a…...

JAVA:(JSON反序列化Long变成了Integer)java.lang.Integer cannot be cast to java.lang.Long

困扰了好几个小时。。。 场景&#xff1a;mybatisplus从数据库取数据&#xff0c;只是用了最基础的 LambdaQueryWrapper 来查询&#xff0c;实体类如下。 TableField(typeHandler JacksonTypeHandler.class) private Set<Long> ids; 得到的Set数据却是Set<Integer…...

ui设计师简历自我评价(合集)

UI设计最新面试题及答案 1、说说你是怎么理解UI的? UI是最直观的把产品展示展现在用户面前的东西&#xff0c;是一个产品的脸面。人开始往往是先会先喜欢上美好的事物后&#xff0c;在去深究内在的东西的。 那么也就意味着一个产品的UI首先要做的好看&#xff0c;无论风格是…...

Nginx 反向代理

一. Nginx 反向代理 1.1 反向代理介绍 在计算机网络中&#xff0c;反向代理一般指代理服务器&#xff0c;其首先代替内网的服务器接收客户端请求 并从一个或多个服务器检索资源&#xff0c;然后将这些资源返回给客户端。在客户端看来&#xff0c;这些资 源就好像来自代理服务…...

[论文阅读笔记25]A Comprehensive Survey on Graph Neural Networks

这是一篇GNN的综述, 发表于2021年的TNNLS. 这篇博客旨在对GNN的基本概念做一些记录. 论文地址: 论文 1. 引言, 背景与定义 对于图像数据来说, CNN具有平移不变性和局部连接性, 因此可以在欧氏空间上良好地学习. 然而, 对于具有图结构的数据(例如社交网络 化学分子等)就需要用…...

iview时间控件 动态不可选日期 可选择24小时范围内 时间往后退24小时

演示 html 设定 起始时间 触发on-change 方法结束时间 options 动态设置不可选择的日期。 <!-- 起始时间 --> <FormItem :label"$t(startTime)" prop"startTime"><DatePickertransfertype"datetime":placeholder"$t(pleas…...

Rest学习环境搭建:服务消费者

建一个子模块 导入依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache…...

终极指南:如何为Zotero 6.0安装完美夜间模式插件,告别深夜阅读疲劳

终极指南&#xff1a;如何为Zotero 6.0安装完美夜间模式插件&#xff0c;告别深夜阅读疲劳 【免费下载链接】zotero-night Night theme for Zotero UI and PDF 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-night 还在为深夜阅读文献时刺眼的屏幕光线而烦恼吗&a…...

本地Cookie导出终极指南:Get cookies.txt LOCALLY 安全使用教程

本地Cookie导出终极指南&#xff1a;Get cookies.txt LOCALLY 安全使用教程 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾担心浏览器Coo…...

OpenClaw多模型切换指南:Qwen3-32B与本地Llama混合调用

OpenClaw多模型切换指南&#xff1a;Qwen3-32B与本地Llama混合调用 1. 为什么需要多模型切换&#xff1f; 去年冬天&#xff0c;当我第一次尝试用OpenClaw自动处理周报时&#xff0c;发现一个有趣的现象&#xff1a;用同一个模型处理文本润色和代码生成任务&#xff0c;效果差…...

实战指南:基于快马生成电商订单自动化n8n工作流,无缝衔接shopify与crm

实战指南&#xff1a;基于快马生成电商订单自动化n8n工作流&#xff0c;无缝衔接shopify与crm 最近在帮朋友优化他们电商业务的后台流程&#xff0c;发现手动处理订单实在太费时间了。特别是遇到大促期间&#xff0c;订单量暴增&#xff0c;人工操作不仅效率低还容易出错。于是…...

OpenClaw智能截图:nanobot自动识别图片中的文字信息

OpenClaw智能截图&#xff1a;nanobot自动识别图片中的文字信息 1. 为什么需要智能截图工具 在日常工作和学习中&#xff0c;我们经常遇到需要从图片中提取文字的场景。比如截取网页上的技术文档片段、保存会议白板上的讨论要点、或者整理纸质书籍中的关键段落。传统做法是手…...

终极指南:Autoenv如何彻底解决团队开发环境配置难题

终极指南&#xff1a;Autoenv如何彻底解决团队开发环境配置难题 【免费下载链接】autoenv 项目地址: https://gitcode.com/gh_mirrors/aut/autoenv Autoenv是一款强大的目录环境管理工具&#xff0c;能够在您进入包含.env文件的目录时自动执行其中的环境配置&#xff0…...

# 发散创新:基于群体智能的Python蚁群算法优化路径规划实战在人工智能快速演进的时代,**群体智能(Swarm Int

发散创新&#xff1a;基于群体智能的Python蚁群算法优化路径规划实战 在人工智能快速演进的时代&#xff0c;群体智能&#xff08;Swarm Intelligence&#xff09; 作为一类受自然界生物行为启发的计算范式&#xff0c;正逐渐成为解决复杂优化问题的重要工具。本文聚焦于蚁群算…...

OpenClaw定时任务管理:Qwen3.5-4B-Claude模型驱动智能提醒系统

OpenClaw定时任务管理&#xff1a;Qwen3.5-4B-Claude模型驱动智能提醒系统 1. 为什么需要AI驱动的定时任务系统 上个月我连续错过了三个重要会议&#xff0c;直到同事发消息询问"人到哪了"才猛然惊醒。这种尴尬促使我开始寻找解决方案——传统日历提醒太被动&#…...

基于双层规划模型的微网新能源经济消纳共享储能优化配置:MATLAB代码复现及详细解读

(文章复现)考虑微网新能源经济消纳的共享储能优化配置matlab代码 参考资料《考虑微网新能源经济消纳的共享储能优化配置》 提出了考虑新能源消纳的共享储能电站容量功率配置方法&#xff0c;针对储能电站投运成本最低与微能源网运行经济性最优的多目标&#xff0c;建立了双层规…...

GNSS数据处理效率翻倍:FileZilla+crx2rnx自动化脚本一键下载转换RINEX观测值

GNSS数据处理效率革命&#xff1a;构建全自动RINEX观测值处理流水线 凌晨三点的实验室里&#xff0c;李工程师盯着屏幕上堆积如山的.crx文件叹了口气——这已经是本周第三次通宵处理GNSS观测数据了。对于需要处理多站点、长时间序列GNSS数据的科研人员和工程师而言&#xff0c;…...