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中写一个表单,数据存入到数据库中,再从数据库读出来显示在列表中相关推荐

  1. MySql中把一个表的数据插入到另一个表中的实现代码--转

    MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我 ...

  2. 学习js,尝试写一个表单验证框架(1)-规划

    斗胆放到首页来,如果不合适的话就删了吧,谢谢 其实这个框架也已经写了一点了,但是越写越乱越没把握,最终决定写成博客的形式,强迫自己慢下步调,一点点仔细地规划,设计,思考,期间也一定会遇到不少问题,还请 ...

  3. 4.jQuery中Ajax提交表单数据

    目录 1  表单的同步提交 2  Ajax监听表单提交事件 submit 3  阻止表单的默认提交行为 e.preventDefault() 4  获取表单内的数据 4.1 字符串型 serializ ...

  4. mysql插入另一个表中数据_MySql中把一个表的数据插入到另一个表中的实现

    1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表; insert into insertTest select * ...

  5. html表单居中_如何在IE低版本中兼容HTML5表单属性placeholder属性

    WEB开发数据提交是必不可少的,为了更友好的用户体验,通常需要给输入框一个默认的提示信息.HTML5技术提供了一个表单属性placeholder专门用于输入框默认提示,但是在IE低版本中根本不兼容. ...

  6. 网络——提交表单数据(post方式)

    [0]README 1) 本文文字描述 转自 core java volume 2 , 旨在理解 网络--提交表单数据 的基础知识 : 2) for source code, please visit ...

  7. php获取post表单数据_PHP如何通过post方法来获取form表单中数据?(代码示例)

    我们在网站开发过程中,通常都会遇到关于php form表单的相关操作.如php获取带有post提交方法的表单数据,这种该如何操作呢?如果大家有看过我[PHP如何通过get方法获得form表单数据?]这 ...

  8. ThinkPHP中查询一个时间段的数据

    在实际操作的时候,需要从数据库中查询一个时间段的数据并返回使用,我在数据库中设置如下: 其中时间设置是datetime类型,没使用时间戳的显示,而是按照年月日时分秒的格式显示的,然后想从数据库中取出一 ...

  9. button layui 点击事件_解决layui中的form表单与button的点击事件冲突问题

    解决layui中的form表单与button的点击事件冲突问题 layui的form表单位置和button标签的位置重合,会使得button的click事件得不到响应,如图: 蓝色底为form的位置, ...

最新文章

  1. 备案网站管理系统是JSP做的
  2. php for windows二进制包,PHP5ForWindowsVC9-x865.4.3安装版
  3. dockerfile用源码包构建tomcat服务
  4. 5 个关于 API 中日期和时间设计规则
  5. python区块链开发_10个开源的Python区块链项目
  6. nginx ruoyi 配置静态资源服务
  7. 用UI讲故事,表达情感和创造个性
  8. 一份 2.5k star 的《React 开发思想纲领》
  9. An internal error occurred during: Launching New_configuration.
  10. Filter过滤器拦截方式
  11. 看看webpack打包优化
  12. python编程函数_python函数式编程
  13. java listt add_Java8 使用流抽取ListT集合中T的某个属性操作
  14. python的类和对象例题_Python类、类对象和实例对象、组合、绑定详细讲解
  15. 获取字符串中不重复的第一个字符
  16. HP笔记本ProBook 445R G6刷BIOS历险记
  17. Centos 安装 L2tp
  18. Accessibility辅助功能的使用
  19. 软件安装管家matlab教程,timesat软件怎么安装 timesat安装使用图文教程 - 驱动管家...
  20. python 微信公众号接口之上传图片素材

热门文章

  1. 在线JSON转CSV格式文件工具
  2. BCGControlBar教程:可视化管理器
  3. 【更新汇总】FastReport系列更新|附下载
  4. Qlik助力新西兰最大私人医院提高病患护理水平
  5. Goods:查询某个用户的购物车条目以及添加购物车条目
  6. PHP 判断点是否在多边形内
  7. RHCE认证培训+考试七天实录(三)
  8. GCC options总结
  9. IIS 故障一例(XP更新补丁后)
  10. 13、图解Elasticsearch容错机制:master选举,replica容错,数据恢复