麻瓜程序员这几天折腾了一下phpcms,在弄表单向导的时候,发现只能在前台发表,但后台管理员却不能回复。那想要在后台可以回复表单的内容,就需要做二次开发了。

1. 进入后台->模块->表单向导->添加表单向导      可以看到

麻瓜程序员-phpcms表单向导

phpcms表单向导

我在这里就建立一个叫“在线问答”的表单向导, 表明是数据库生成的一个新表用来保存你这个表单提交的信息的,其他就自己酌情选择好了。

2.表单添加完之后,就要添加字段了(可以按照需求添加所要的),在这里添加了三个字段

phpcms表单向导添加字段

phpcms表单向导添加字段

添加完之后,可以在预览看到前台效果

phpcms表单向导前台显示

phpcms表单向导前台显示

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

phpcms表单查看

phpcms表单查看

3.为了实现在查看表单内容的时候,可以进行回复,需要对表单模板做修改(主要是添加一个文本框、一个提交按钮还有就是一段js代码用于提交地址),打开文件phpcms/modules/formguide/templates/formguide_info_view.tpl.php ,在27行附近 添加文本框和提交按钮

<tr> 
<td>问&nbsp;题&nbsp;回&nbsp;答</td> 
<td> <textarea id="answer" cols="65" rows="5" ><?php echo $answer ;?></textarea> </td> 
</tr> 
<tr> 
<td>&nbsp;</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自定义表单回答

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在线问答

phpcms在线问答

本文出自:麻瓜程序员的博客

转载请注明出处  http://blog.aiwebcom.com/%e7%bd%91%e7%ab%99%e5%bb%ba%e8%ae%be/phpcms/456.html

© 2012 Ai-WEB的博客 Suffusion theme by Sayontan Sinha