discuz中写一个表单,数据存入到数据库中,再从数据库读出来显示在列表中
2019独角兽企业重金招聘Python工程师标准>>>
要做到如下的一个效果:
创建的文件有:
./funds.php
./template/PHPChina/funds/funds_index.htm
./source/module/funds/funds_index.php
./source/class/table/table_app_funds.php
具体步骤如下:
1、在数据库中建一个表,用于存储表单中填入的数据。我这里建了一个pre_app_funds表。
2、写入口文件,在根目录下建一个funds.php的入口文件
入口文件主要是一些初始化、引入核心文件、路由定向的一些常规操作
3、写一个funds_index.htm文件,在template/PHPChina/funds/funds_index.htm。其中PHPChina是我用的模板,如果是用的默认的模板,写在default中即可。
在htm文件中记得引入<!--{template common/header}-->和<!--{template common/footer}-->
样式我就不截图了,效果就是第一个图的样子。再附上显示系统时间的代码:
4、写一个php文件,用于获取表单中写入的数据,并调用存入数据库的方法
<?php
if(!defined('IN_DISCUZ')){exit('Access Denied');
}
if(empty($_GET['mod'])){$_GET['mod'] = 'index';
}
if($_GET['action'] == 'index'){if($_G['uid'] == 0){showmessage('请先登录','member.php?mod=logging&action=login',array(),array('alert'=>'error','msgtype'=>2));}include template('funds/funds_index');
}elseif($_GET['action'] = 'save_funds'){ $add_funds = array();//$add_funds[app_id]为自增,不用写$add_funds[app_name] = $_POST['app_name'];$add_funds[app_date] = $_POST['app_date'];$add_funds[app_reason] = $_POST['app_reason'];$add_funds[app_money] = $_POST['app_money'];$result = C::t('app_funds')->add_funds($add_funds);if($result){showmessage('申请成功,请等待审核','funds.php?mod=index&action=index',array(),array('alert'=>'right','msgtype'=>2));}else{showmessage('申请失败','funds.php?mod=index&action=index',array(),array('alert'=>'error','msgtype'=>2));}}
其中,这行代码的意思是
C::t('app_funds')是数据库中的pre_app_funds表调用后面的add_funds方法,参数为上面获取到的数组$add_funds,数组里是表单中写入的数据。
5、写表调用的方法add_funds。建文件table_app_funds.php。
<?php
if(!defined('IN_DISCUZ')){exit('Access Denied');
}class table_app_funds extends discuz_table
{public function __construct(){$this->_table = 'app_funds';$this->_pk = 'app_id';parent::__construct();}public function add_funds($add_funds){ $result = DB::insert($this->_table,$add_funds);return $result;}
}
到此步骤已经写完,可以看到数据库中已经有这些数据了,但是表单中输入中文,在表里是乱码,这个问题我还没找到解决办法。
补充:终于解决了中文乱码问题!!之前网上搜了很多方法都不适合,我也很奇怪,在我的数据库里,有的表中文乱码,而有的却可以。就在刚刚我新建了一个其他的表,终于找到方法了,原来如此简单
打开数据库,对着表右键-设计表
选中有中文的那一列,下面的字符集和排序规则填成图中的选项即可,两个都要填才生效。
以上是数据在数据库的存储,以下是读取数据:
需要添加或修改的文件有:
./source/module/funds/funds_index.php
./source/class/table/table_app_funds.php
./template/PHPChina/funds.funds_list.htm
1、在funds_index.php增加一个action==funds_list的判断段落
<?php
if(!defined('IN_DISCUZ')){exit('Access Denied');
}
if(empty($_GET['mod'])){$_GET['mod'] = 'index';
}
if($_GET['action'] == 'index'){if($_G['uid'] == 0){showmessage('请先登录','member.php?mod=logging&action=login',array(),array('alert'=>'error','msgtype'=>2));}include template('funds/funds_index');
}elseif($_GET['action'] == 'save_funds'){ $add_funds = array();//$add_funds[app_id]为自增,不用写$add_funds[app_name] = $_POST['app_name'];$add_funds[app_date] = $_POST['app_date'];$add_funds[app_reason] = $_POST['app_reason'];$add_funds[app_money] = $_POST['app_money'];$result = C::t('app_funds')->add_funds($add_funds);if($result){showmessage('申请成功,请等待审核','funds.php?mod=index&action=index',array(),array('alert'=>'right','msgtype'=>2));}else{showmessage('申请失败','funds.php?mod=index&action=index',array(),array('alert'=>'error','msgtype'=>2));}
}elseif($_GET['action'] == 'funds_list'){$list = array();$list = C::t('app_funds')->funds_list();$page = empty($_GET['page'])?1:intval($_GET['page']);if($page<1) $page=1;//分页$perpage = 5;$start = ($page-1)*$perpage;//获得一个简单的分页,只有上一页和下一页,这个不需要count()数据表中的所有记录$multi = simplepage(count($list), $perpage, $page, 'funds.php?mod=index');//数据准备完毕,引入相应的模板,准备输出include_once template("funds/funds_list");
}
(困惑点一)分页那里没有成功,不知道哪里出了错,还望大神们指导!
$list是个数组,$list = C::t('app_funds')->funds_list();这句是C::t(数据表)调用后面funds_list函数
2、接下来写这个函数,在table_app_funds.php中
<?php
if(!defined('IN_DISCUZ')){exit('Access Denied');
}class table_app_funds extends discuz_table
{public function __construct(){$this->_table = 'app_funds';$this->_pk = 'app_id';parent::__construct();}public function add_funds($add_funds){ $result = DB::insert($this->_table,$add_funds);return $result;}public function funds_list(){$list = DB::fetch_all("SELECT * FROM %t ORDER BY %s DESC",array($this->_table,$app_date));return $list;}}
前面重复的我也写上了,这里只需要看最后一个函数funds_list。fetch_all是取所有的数据,%t,%s是后面那个参数的占位符,(困惑点二)这里按照时间降序排列,但是没生效,效果和下面是一样的,不知道为什么
取出的数据存储到list中,并返回到funds_index.php,数据取出来了要显示在htm中,所有下一步是写htm
3、增加funds_list.htm
<!--{template common/header}-->
<div id="ct" class="wp cl"><div class="bm"><!--{if $list}--> <!--{loop $list $funds}--><a><!--{$funds[app_name]}--></a>于<!--{$funds[app_date]}-->申请<!--{$funds[app_money]}-->元资金,理由是<!--{$funds[app_reason]}--><hr><!--{/loop}-->$multi<!--{else}--><p class="emp">暂时没有记录...</p><!--{/if}--></div>
</div>
<!--{template common/footer}-->
引入头部脚部就不用说了。如果$list中存储了数据,为真,就loop循环$list数组,$funds为每一项。那个$multi是分页用的
最后结果:
大功告成!(两个困惑点还未解决)
转载于:https://my.oschina.net/zhangxuman/blog/1548609
discuz中写一个表单,数据存入到数据库中,再从数据库读出来显示在列表中相关推荐
- MySql中把一个表的数据插入到另一个表中的实现代码--转
MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...
- 学习js,尝试写一个表单验证框架(1)-规划
斗胆放到首页来,如果不合适的话就删了吧,谢谢 其实这个框架也已经写了一点了,但是越写越乱越没把握,最终决定写成博客的形式,强迫自己慢下步调,一点点仔细地规划,设计,思考,期间也一定会遇到不少问题,还请 ...
- 4.jQuery中Ajax提交表单数据
目录 1 表单的同步提交 2 Ajax监听表单提交事件 submit 3 阻止表单的默认提交行为 e.preventDefault() 4 获取表单内的数据 4.1 字符串型 serializ ...
- mysql插入另一个表中数据_MySql中把一个表的数据插入到另一个表中的实现
1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表; insert into insertTest select * ...
- html表单居中_如何在IE低版本中兼容HTML5表单属性placeholder属性
WEB开发数据提交是必不可少的,为了更友好的用户体验,通常需要给输入框一个默认的提示信息.HTML5技术提供了一个表单属性placeholder专门用于输入框默认提示,但是在IE低版本中根本不兼容. ...
- 网络——提交表单数据(post方式)
[0]README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 网络--提交表单数据 的基础知识 : 2) for source code, please visit ...
- php获取post表单数据_PHP如何通过post方法来获取form表单中数据?(代码示例)
我们在网站开发过程中,通常都会遇到关于php form表单的相关操作.如php获取带有post提交方法的表单数据,这种该如何操作呢?如果大家有看过我[PHP如何通过get方法获得form表单数据?]这 ...
- ThinkPHP中查询一个时间段的数据
在实际操作的时候,需要从数据库中查询一个时间段的数据并返回使用,我在数据库中设置如下: 其中时间设置是datetime类型,没使用时间戳的显示,而是按照年月日时分秒的格式显示的,然后想从数据库中取出一 ...
- button layui 点击事件_解决layui中的form表单与button的点击事件冲突问题
解决layui中的form表单与button的点击事件冲突问题 layui的form表单位置和button标签的位置重合,会使得button的click事件得不到响应,如图: 蓝色底为form的位置, ...
最新文章
- 备案网站管理系统是JSP做的
- php for windows二进制包,PHP5ForWindowsVC9-x865.4.3安装版
- dockerfile用源码包构建tomcat服务
- 5 个关于 API 中日期和时间设计规则
- python区块链开发_10个开源的Python区块链项目
- nginx ruoyi 配置静态资源服务
- 用UI讲故事,表达情感和创造个性
- 一份 2.5k star 的《React 开发思想纲领》
- An internal error occurred during: Launching New_configuration.
- Filter过滤器拦截方式
- 看看webpack打包优化
- python编程函数_python函数式编程
- java listt add_Java8 使用流抽取ListT集合中T的某个属性操作
- python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解
- 获取字符串中不重复的第一个字符
- HP笔记本ProBook 445R G6刷BIOS历险记
- Centos 安装 L2tp
- Accessibility辅助功能的使用
- 软件安装管家matlab教程,timesat软件怎么安装 timesat安装使用图文教程 - 驱动管家...
- python 微信公众号接口之上传图片素材