phpcms2008的表单向导功能很强大,可以实现用户的留言功能以及问答功能都是可以的.针对这部分需求,我把我的经验总结写出来,分享给有需要的朋友.
步骤1 -------------请用IE浏览器(基于IE内核的也可以)打开
两套模板----提问模板,回答模板,完整点的话还有个问答首页模板用来展示问题的.
提问模板 对应建立提问表单(这里的字段信息会在data/formguide/目录里面有你建立的表单文件1.html)
如建立自定义表名yhwd (phpcms_form_yhwd)并设立字段
字段名 字段别名 字段类型
name 姓名 单行文本
tel 电话 单行文本
title 问题 单行文本
type 问题分类 选项
intro 详细说明 多行文本
模板里面主要代码:
- <form action="/formguide/index.php" method="post" enctype="multipart/form-data">
- 姓名<input type="text" name="info[name]" id="name">
- 电话<input type="text" name="info[tel]" id="tel">
- 问题<input type="text" name="info[title]" id="title">
- 问题分类
- <select name="info[type]" id="type" >
- <option value="0" selected>选择分类</option>
- <option value="1" >分类1</option>
- <option value="2" >分类2</option>
- <option value="3" >分类3</option>
- <option value="4" >分类4</option>
- <option value="5" >分od</option>
- <option value="6" >女性不孕</option>
- </select>
- 详细说明<textarea name="info[intro]" id="intro"></textarea>
- <input type="hidden" name="dataid" value="{$dataid}" />
- <input type="hidden" name="formid" value="{$formid}" /> //{$formid}在这里要指定
- <input name="dosubmit" type="submit" class="" value="提 交"/>
- //这三句一定要加上 并且名字不能改变 value里面必须有值 才能提交 {$formid}就是表单ID
- </form>
之后就是回答页面模板 对应回复表单 一般俩字段就可以了
questionid 问题ID (这里最好把患者的问题全部调出来特别是问题ID也就是dataid 以便针对问题回复)
answer 回复 编辑器
调用问题或回复(只是表不同而已)相关代码:
- {get sql="select * from phpcms_form_yhwd order by datetime desc"}
- {$r[name]} 提问人
- {$r[title]} 问题
- {date('Y-m-d',$r[datetime])} 提问时间
- {/get}
步骤2.建立相应栏目 可以(最好)用单网页 原来的模板不用修改
问答首页 栏目页url规则可以用静态的
在线提问 ---
专家答复 栏目页url规则用动态传值 list.php?catid=1&page=2
链接传值页面 <a href="list.php?catid=111&dataid={$r[dataid]}">{$r[title]}</a>
传catid=111 意思是要传页面的栏目ID dataid是那边要接收的,接收用$dataid
答复展示模板里用到代码(单独放到一个模板页面展示的):
- {get sql="SELECT * FROM phpcms_form_yhwd WHERE dataid = $dataid"}
- 问题:{$r[title]}
- {$r[intro]}
- 提问者:{$r[name]}
- {/get}
- //顺便也可以调出回复出来(因为当前页面有接收$dataid)
- {get sql="select * from phpcms_form_reply where questionid = $dataid" row="1"}
- {$r[answer]}
- {/get}
步骤3(可选可不选)
加个针对问题ID回复问题的简单修改 修改的地方是表单模板form_index.html
在这里可以直接写get标签调出问题表的内容与回复表的内容,下面是我写的代码 你也可以自己排列样式,但变量是一样的用
- <table cellpadding="0" cellspacing="1" class="table_form">
- <caption>一问一答</caption>
- {get sql="select * from phpcms_form_hzwd"}
- <tr>
- <td><strong>问题{$r[dataid]}</strong></td>
- <td><strong>{$r[content]}</strong></td>
- <td><strong><a href='/phpcms/formguide/index.php?formid=2'>回复</a></strong></td>
- <td><strong><a href='/phpcms/formguide/index.php?formid=1'>提问</a></strong></td>
- </tr>
- {get sql="select * from phpcms_form_reply where dataid=$r[dataid]" }
- <tr>
- <td><strong>回复{$r[dataid]}</strong></td>
- <td><strong>{$r[answer]}</strong></td>
- <td colspan="2"><strong><a href=''>修改回复</a></strong></td> //修改回复功能,涉及到改数据库,这个到后面我再补上,思路已经想出来了.
- </tr>
- {/get}
- {/get}
- </table>
要注意的是 用表单向导系统生成的调用也不是不可以,但有个BUG
在任意页面调用这句话时 {cache_read('14.html', CACHE_FORM)}
用这个输出 <?php cache_read('14.html', CACHE_FORM)?>
生成一次之后 如果想再修改模板 这个重新生成可能就不会变了,还是你第一次生成的那样.
转载于:https://blog.51cto.com/hnllyrp/936790