5.22 站内留言系统——写成并发送留言
本节介绍站内留言的作成,单击“作成”按钮,进入如下图所示的留言写成页面。
留言写成
要点
因为不是真正的邮件发送系统,站内留言作成实际上只是向表recievemessage与表sendmessage中登录数据,逻辑非常简单。
这里需要补充的是,在输入框(相当于接受邮件地址)中输入用户ID后,必须单击“追加”按钮将用户ID追加到接受接受对象栏中的同时,进行输入用户ID的有效性检查。
当只是以草稿的形式保存留言时,只向表sendmessage中登录数据。而发送留言时,会向表recievemessage与表sendmessage中登录数据。
目录
代码
与其他页面相同,调用setHeaderInfo方法生成页面上部的菜单信息。
留言写成页面提供了从自己的朋友列表中直接选择发送对象的功能,getFriendList方法就是用于取得自己的朋友列表的。
取出Query信息中的留言发送对象、留言标题等信息。单击“回信”“转送”等链接时,会将上述信息传过来。
定义“送信”动作,实际上只是将输入的信息保存到系统的数据库中。
保存输入信息的是saveMessage方法完成的工作。
根据将输入信息保存为草稿或直接发送,而跳转到草稿箱或送件箱。
setMessageInfo方法取得留言信息,用于留言详细页面显示。
单击留言详细页面的删除链接,删除留言至垃圾箱。
delMessageOne方法删除当前显示的留言。
定义检查用户ID有效性的动作。
checkUser方法用于真正的用户ID有效性检查。
saveMessage方法用于保存输入的留言信息。如果单击了“保存为草稿”按钮(mode为2),则只在sendmessage表中保存数据。如果单击了“送信”按钮,则在表sendmessage与recievemessage中同时保存数据,这样接受用户就可以看到表recievemessage中的数据了,相当于将留言发送出去了。
分离选择的接受对象用户ID。
针对所有的接受对象用户,在表sendmessage里登录数据。
如果单击了“送信”按钮,则与上述的过程一样,循环在表recievemessage中登录留言信息,相当于将留言发送到接受方。
setMessageInfo方法根据留言ID取出留言用于详细页面的显示。
如果是从收件箱查看留言的话,则将阅读标志置为1(阅读标志置为0时,将在留言信息一览中显示未阅读的标志)。
如果是收件留言,则从表recievemessage中进行检索,在其他留言的情况下,则从表sendmessage中进行检索。
转换留言主体中的关于链接部分的代码。
定义留言详细页面的删除方法。根据显示留言的不同,删除的对象表是不同的。
如果显示的是收件箱里的留言,才更新表recievemessage里的相应留言记录的删除标志为1。
如果显示的是草稿或送件箱里的留言,则更新表sendmessage里的相应留言记录的删除标志为1。
上述以外,则肯定是从垃圾箱里的留言了,此时,根据垃圾箱留言的来源(表recievemessage或表sendmessage),物理删除来源表里的数据。
定义用户ID有效性检查方法。
处理过程就是,检索输入的用户ID是否在用户表user中存在。不存在时返回错误信息。
用户ID有效性检查用到了Ajax技术,有兴趣的朋友请参照本书的官方网站,或相关书籍以及Internet上的技术信息。
单击“朋友列表”按钮,将显示用户的朋友列表。
如果不是垃圾箱里的留言,则显示“编辑此留言”链接。