找回密码
 注册
首页 ≡≡网络技术≡≡ PHP语言 phpcms利用表单向导创建留言板(可以回复) ...

CMS phpcms利用表单向导创建留言板(可以回复)

灰儿 2014-3-23 20:10:40
麻瓜程序员这几天折腾了一下phpcms,在弄表单向导的时候,发现只能在前台发表,但后台管理员却不能回复。那想要在后台可以回复表单的内容,就需要做二次开发了。
1. 进入后台->模块->表单向导->添加表单向导      可以看到
phpcms表单向导

我在这里就建立一个叫“在线问答”的表单向导, 表明是数据库生成的一个新表用来保存你这个表单提交的信息的,其他就自己酌情选择好了。
2.表单添加完之后,就要添加字段了(可以按照需求添加所要的),在这里添加了三个字段
phpcms表单向导添加字段

添加完之后,可以在预览看到前台效果
phpcms表单向导前台显示

但就好像前面说的那样,当你填写完信息后,在后台查看,只能是查看而不能进行回复或者是更多的一些操作了。
phpcms表单查看

3.为了实现在查看表单内容的时候,可以进行回复,需要对表单模板做修改(主要是添加一个文本框、一个提交按钮还有就是一段js代码用于提交地址),打开文件phpcms/modules/formguide/templates/formguide_info_view.tpl.php ,在27行附近 添加文本框和提交按钮
<tr> <td>问 题 回 答</td> <td> <textarea id="answer" cols="65" rows="5" ><?php echo $answer ;?></textarea> </td> </tr> <tr> <td> </td> <td><input type="button" id="tijiaohuida" value="提交回答"></td> </tr>这里看到 添加了一个新的变量$answer ,那这个变量是怎么来的呢又是怎么提交的呢,看下面 在表格的最后位置添加一段js
<script type="text/javascript">$(document).ready(function(){var canshuStr=window.location.search;var pos=canshuStr.indexOf("&did"); // &did 的开始的位置 var posend=canshuStr.indexOf("&",pos+4); var did_c=canshuStr.substring(pos+5,posend); // 主要是获取 问题的id号 &did=*& var answer_c="";$("#tijiaohuida").click(function(){answer_c= $("#answer").val();$.post('index.php?m=formguide&c=formguide_info&a=public_answer', {did: did_c,answer: answer_c}, function(json) {if(json==1){alert("回答成功");}});});});</script>这里主要是获取当前表单的id和使用了ajax来提交地址,然后打开文件phpcms/modules/formguide/formguide_info.php ,在56行加如下代码:
$answer=$info['answer'];
在最后面添加一个方法
public function public_answer(){
$did=$_POST['did'];
$answer=$_POST['answer'];
$answer=mb_convert_encoding($answer,’gbk’,'utf-8′);
$re=this->db->query(“update  v9_form_online_ask  set answert ‘ “.$answer.” ‘, mark=’已回答’ where did=”.$did);
return $re;
}
这里要讲下“$answer=mb_convert_encoding($answer,’gbk’,'utf-8′);” 这句的功能,因为使用ajax提交内容的时候,编码都会使用utf-8(除非你的phpcms用的是utf-8的编码,就直接去掉这句就可以了),所以用“mb_convert_encoding”函数进行了编码的转换。
下一步就是到数据库里面找到v9_form_online_ask(按照你自己当时创建的表名来添加),在里面添加两个字段,一个是mark用来记录是否回答了,一个是answer用来记录回答的信息。
完成这些之后,回答后台
phpcms自定义表单回答功能


这时候进去数据库看到 已经有数据保存到数据表了!
4.最后就是要显示到网站页面上了,这里需要你懂得一些phpcms的标签写法。
{pc:get sql=”select * from v9_form_online_ask order by datetime desc”}
{loop $data $n $r}
<!–{print_r($data)}–>
<h1><a href=”"></a></h1>
<dl>
<dt style=”float:left”>{$r['ask_name']}</dt>
<dt>{stripslashes($r['ask_question'])}</dt>
{if ($r['answer']==”)}
<dd style=”color:#900;padding-left:60px”>等待回答</dd>
{else}
<dd style=”color:#060;padding-left:60px”>已回答:{$r['answer']}</dd>
{/if}
</dl><br/>
<div style=”clear:both”></div>
{/loop}
效果如下(可以自己添加css样式来美化界面)
phpcms在线问答

本文出自:麻瓜程序员的博客
转载请注明出处  http://blog.aiwebcom.com/%e7%bd%91%e7%ab%99%e5%bb%ba%e8%ae%be/phpcms/456.html

http://blog.aiwebcom.com/%E7%BD%91%E7%AB%99%E5%BB%BA%E8%AE%BE/phpcms/456.html

本帖被以下淘专辑推荐:

您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。