JSNPP 学习记录
JSNPP框架是一个PHP框架,更好的处理JSON数据的框架。开发者开发了博客的CMS,企业CMS等。之前还跟着学习了一段时间。不过遗憾的是,因为身体原因过世了。
用于Powerbi连接的数据库放在mysql里面,是通过Python自动化处理一些txt来存储进去的。有时会因为人员的问题,导致一些数据错误。那么就需要去后台将旧资料清除。以往的时候,我都是用db工具直接连接处理。现在打算将这个方法放给使用者自己来处理。在处理上有好多种方式,我习惯是用python写一个工具。但是这样会要求使用的人员去配置一些环境。而PHP则有优势,直接放一个网站上。访问即可处理。
Chatgpt 生成
因为对于PHP语言很陌生。所以第一种实现方式,是将需求提给GPT,让GPT 帮我生成代码,然后部署测试,发现竟然直接成功了。实现思路也很简单,一个处理一个Php,然后嵌套相应的html即可。问题在于,有一些重复。比如删除和查询都要创建数据库连接。然后没有实现前后端分离。优势速度快前后半小时搞定一个需求!!!
![image]()
框架实现
框架的好处就是解决前后端问题,还有优化了数据库的处理方式。但是也增加了处理的复杂度。
- 首先配置config里面的db信息用于后续数据库连接。由于需求很简单,所以这里也不用配置额外的控制器。
![image]()
2. 接下来在app修改index.php方法。
PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public function chaxun($param) { $this->app->entrance->db->table('vfir_file_name')->where('filename',$param['filename'])->box('data') ->find()->output->assign('webroot', $this->route->rootUrl())->assign('file', ':box(data)')->display()->finish();
} public function queryppid($param) { $this->app->entrance->db->table('a31_vfir')->where('ppid',$param['inputppid']) ->field('PPID,Rtn_cycle,filename,Ship_Date,`RMA Received date`')->box('data') ->select()->output->assign('webroot', $this->route->rootUrl())->assign('result', ':box(data)')->display()->finish(); }
public function delete($param) { $this->app->db->table('vfir_file_name')->where('filename', $param['file_name'])->delete()->finish(); $this->app->db->table('a31_vfir')->where('filename', $param['file_name'])->delete()->finish(); return '记录已经删除 <a href="/index.php">返回</a>'; }
|
这里定义了三个方法,分别对应页面的查询文件名,查询PPID,删除文件对应的记录。备注一下遇到的问题。
- 单条记录查询用find(),多条记录要使用select()
- 在将数据放入box时,需要先导出field(),不然前段找不到变量
- field里面的变量是一个完整字符串,而不是用逗号分隔的不同列名
- 列名里面有空格的,引用时需要用反引号查询`RMA Received date`
- JSON数据引用时需要用双引号,不能直接用点$result[“RMA Received date”]
- 下面这段代码是常用的全链写法,然后传入前台的变量为file.
$this->app->entrance->db->table('vfir_file_name')->where('filename',$param['filename'])->box('data')->find()->output->assign('webroot', $this->route->rootUrl())->assign('file', ':box(data)')->display()->finish();
- 前台html实现
这里有个好处是可以使用标签语言,避免再进行额外语法检查。比如如果记录为空,显示查询无记录,否则显示查询结果。
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| {empty $result} <div>查询无记录</div> {else} <table class="table table-striped"> <tr> <th>PPID</th> <th>RMA Received date</th> <th>Ship_Date</th> <th>Rtn_cycle</th> <th>filename</th> </tr> {each $ppid in $result} <tr> <td>{$ppid.PPID}</td> <td>{$ppid["RMA Received date"]}</td> <td>{$ppid.Ship_Date}</td> <td>{$ppid.Rtn_cycle}</td> <td>{$ppid.filename}</td> </tr> </table> {endeach} {endempty}
|
- 美化装饰CSS
这个框架自带的bootstrap4的CSS,所以从里面挑几个简单的样式就可以美化一下后台了。