版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务八接收、阅读、删除邮件分页浏览邮件打开并阅读邮件删除邮件8.1分页浏览邮件实现收件箱基本功能三个知识点收件箱页面布局说明收件箱邮件总数查询方法说明获取并显示收件箱邮件总数收件箱页面运行效果点击email.php页面中左侧的“收信”或者“收件箱”超链接时,要从右侧的浮动框架子窗口中显示右图所示的页面运行效果8.1.4分页浏览邮件在众多的动态页面中,要浏览保存在数据库中的大量数据,都需要使用分页浏览技术,例如一个留言板下面的数千条留言、邮箱中的数千封邮件等等,使用分页浏览技术之后,无论数据量怎样变化,都能保证页面的长度不会发生任何变化,变化的只有页数,只要用户点击进入自己需要的页面查阅信息即可。收件箱页面布局需要创建的文件需要创建的文件有样式文件receiveemail.css和页面文件receiveemail.php,在页面文件中引用样式文件。收件箱页面的页面边距要定义为0(需要在receiveemail.css文件中增加样式代码body{margin:0;})盒子div1的样式要求盒子div1的样式要求如下:宽度为自动,高度为25px,上下填充为0,左右填充为10px,边距是0,盒子中文本字号为10pt,文本的行高是25px获取并显示收件箱中的邮件总数内容设计步骤设计这一部分内容需要通过如下几个操作步骤来实现:第一步,启用session,获取$_SESSION数组中存储的登录账号信息,并在后面连接上@163.com,为设计查询条件做好准备;第二步,连接打开数据库,查询表emailmsg列receiver中包含当前登录账号且没有被删除的邮件信息第三步,获取查询结果记录集中的记录数,即为当前用户收件箱中的邮件总数,在div1内部输出。查询条件分析获取当前登录账号收件箱中邮件总数时需要使用的查询语句中条件比较复杂,假设有四封邮件的收件人receiver列值分别如下:第一封:zhangmanyu@163.com;linqingxia@163.com;wangzuxian@163.com;第二封:linqingxia@163.com;gaoyuany@163.com;第三封:xglinqingxia@163.com;linqingxiamv@163.com;第四封:meinan@163.com;xglinqingxia@163.com;思考问题:设变量$uname的内容是linqingxia@163.com,如何设置条件,保证正确查到第一封和第二封邮件?能否直接使用receiverlike‘%$uname%’,为什么?使用receiverlike‘%$uname%’将获取到这四封邮件,不符合要求,所以不可使用查询条件设置方法正确设置方法为:receiverlike'$uname%'orreceiverlike'%;$uname%'即若是要查询的账号在所有收件人开始的位置,则通过receiverlike'$uname%'条件一定能够找到;若要查询的账号在中间的某个位置,则通过receiverlike'%;$uname%'一定能够精确找到。完成div1内容的代码在receiveemail.php文件中增加如下代码盒子div2及子元素的样式要求盒子div2的样式:宽度自动,高度25像素,上下填充5px,左右填充20px,上下边距5px,左右边距0,背景浅灰色#eee,下边框1像素、实线、颜色#aaf。盒子div2-1的样式:宽度自动,高度自动,填充是0,边距是0,向左浮动;使用样式选择符.div2-1input定义盒子内的两个按钮中显示的文本字号是10pt。盒子div2-2的样式:宽度自动,高度自动,填充0,边距0,向右浮动,文本行高25px,文本字号10pt。删除和刷新按钮说明删除按钮的功能:在页面中选择要删除的邮件之后,点击“删除”按钮时能够将邮件设置为已删除状态,该功能需要通过执行指定的delete.php文件来完成,该按钮需要设置为submit类型;点击刷新按钮时,要保证在当前窗口中重新运行页面文件receiveemail.php,目的是若用户收到了新的邮件,能够及时刷新页面(为了降低复杂性,该项目中没有使用自动刷新显示新邮件功能),该按钮需要设置为普通的button按钮。添加div、删除和刷新按钮在receiveemail.php中div1盒子的后面增加div2和内部嵌套的div2-1,添加如下内容:确定每页中要显示的记录数和邮件的总页数每页中要显示的记录数,直接在代码中给定即可,例如$pagesize=5;收件箱中的邮件页数根据邮件总数和每页中的记录数来计算,因为得到的邮件页数可能是小数,所以需要使用函数ceil()取得不小于该数的最小整数。例如,若获取的记录总数$reccount为17,设置的每页记录数$pagesize为5,则两者相除之后的结果为3.4,使用ceil(3.4)得到的结果是不小于3.4的最小整数4;在receiveemail.php中获取到邮件总数之后插入上面代码确定当前要显示邮件信息的页码获取当前要显示邮件信息的页码有两种情况:刚打开收件箱和点击换页超链接之后若是用户刚刚打开收件箱,显示的应当是第一页的邮件信息,之后则根据用户点击的“首页、上页、下页、尾页”超链接获取当前要显示的邮件信息的页码。例如,假设当前正在显示的是第3页内容,若点击“上页”超链接,接下来要显示的一定是第2页,这个页码数字将通过点击超链接的方式提交给服务器。确定当前要显示邮件信息的页码例如,假设每个超链接都在href属性中使用键名pageno向服务器提交数据,要判断用户是不是刚刚打开收件箱,需要通过检测这些超链接有没有向服务器端提交数据来实现,若元素$_GET['pageno']存在,说明已经通过点击超链接向服务器提交数据了,此时需要获取元素$_GET['pageno']的数据作为当前将要显示的邮件信息的页码,否则当前必须显示第一页邮件信息。在receiveemail.php中获取到总页数之后插入该语句设计“首页、上页、下页、尾页”时的原则若收件箱中邮件页数为0,则首页、上页、下页、尾页都是文本若当前显示第一页,则“首页”设置为普通文本,否则“首页”为超链接,点击时向服务器提交页码1;若当前显示第一页,则“上页”设置为普通文本,否则“上页”为超链接,在点击时需要向服务器提交的页码是当前正在显示的页面页码减去1;若当前显示最后一页,则“下页”设置为普通文本,否则“下页”为超链接,在点击时需要向服务器提交的页码是当前正在显示的页面页码加上1;若当前显示最后一页,则“尾页”设置为普通文本,否则设置的“尾页”超链接在点击时需要向服务器提交的页码是总页数值。完善div2的代码获取当前页中要显示记录(邮件)的起始记录号查询当前用户的邮箱时,若查询结果记录集$res中的记录数$reccount为17,则系统给定的记录编号是从0到16的数列,若每页显示的记录数$pagesize为5思考问题:当前页码与当前页中第一条记录编号之间存在着怎样的关系?即第一页从哪条开始显示?第二页从哪条开始?第三页?第四页?第一页从第0条开始,显示0~4条第二页从第5条开始,显示5~9条第三页从第10条开始,显示10~14条第四页从第15条开始,显示15~16条当前页码与当前页中第一条记录编号之间的关系根据上表中显示的数字关系,依据页码获取当前页起始记录编号的公式如下:$pagestart=($pageno-1)*$pagesize在receiveemail.php中获取到页码之后插入该语句获取当前页中要显示的若干条记录实现这一功能,需要考虑在收件箱中显示邮件信息时,要将最后收到的邮件排列在第一页第一条,即要按照收发邮件的日期进行降序排序,因此设计select语句时,要使用orderby子句按照邮件的收发日期进行降序排序,使用limit子句设置要获取记录的起始编号和记录数;在定义的查询收件箱所有记录的查询语句的基础上增加orderby和limit两个子句的应用,注意orderby前面一定要保留一个空格,与之前的条件子句分隔开执行定义的查询语句之后,使用变量$result保存查询结果记录集。在receiveemail.php中获取到当前页起始记录编号之后添加上面代码盒子div3及子元素的样式要求盒子div3的样式要求为:宽度自动,高度自动,填充0,边距0;超链接的样式定义为两种情况:没有阅读过的邮件超链接,使用类名a1定义为黑色,没有下画线,文本加粗显示;阅读过的邮件超链接,使用标签名a定义为黑色,没有下画线,文本非加粗显示。div3内部表格的样式要求使用包含选择符.div3table定义样式:宽度100%。表格单元格使用包含选择符.div3tabletd定义样式:高度30px,下边框1像素、实线、颜色#aaf,单元格内容在垂直方向居中,文本字号10pt。这里的下边框用于设置每封邮件下面的横线。表格需要包含5个列,列宽分别是30px、150px、自动auto、20px和120px,分别使用class类选择符.td1,.td2,.td3,.td4和.td5定义修改receiveemail.php文件在盒子div2后面增加下面代码,添加盒子div3及内部需要的表格<table>思考问题在变量$result中已经包含了当前页要显示的全部记录,使用怎样的程序结构、采取何种方法从该变量中逐条取出记录并输出?因为最后一页剩下的记录数并不确定,所以$result变量中的记录数也是不确定的,因此此处可采用的最佳方案是使用while循环结构,循环条件是$row=mysqli_fetch_array($result),若是能够从$result中取出记录,则条件成立,接下来可输出记录的信息,若是没有取出记录,则条件不成立,说明$result记录指针已经指向最后一条记录之后,循环结束即可处理$row中的数据处理$row记录中的数据,为输出做准备获取当前邮件的emailno列值,保存在变量$emailno中备用;截取当前邮件sender列值中@符号前面的用户名部分,保存在变量$sender中备用(使用list($sender)=explode('@',$row['sender'])实现);处理当前邮件datesorr列值中的日期时间信息,得到“Y年m月d日”的形式保存在变量$riqi中备用;使用空格做分割符,分割$row['datesorr']内容,保留前面日期部分保存在$datesorr中,使用-做分割符,分割$datesorr的内容,年月日分别保存在$y,$m,$d中,连接$y,$m,$d的内容,得到“Y年m月d日”形式处理$row中的数据确定收件人账号$uname是否阅读过当前邮件将当前邮件readflag列值使用分号分割之后,将其保存在数组$readArr中;使用代码in_array($uname,$readArr)获取账号$uname在数组$readArr中的索引,并将其保存在变量$isin中,该变量的取值可能是数组索引或者false。为false,则表示当前用户没有阅读过该邮件修改receiveemail.php文件修改receiveemail.php文件,在div3的表格内部设计循环,获取记录,处理记录中的数据为输出做准备输出邮件信息输出表格的行起始标记输出表格第一列的标记(引用选择符td1)及内容,内容是复选框,name定义为markup[],value属性取值为变量$emailno的值,类名为checkbox;输出表格第二列的标记(引用选择符td2)及内容,内容是超链接,链接热点为变量$sender的值,链接打开的文件是openemail.php,点击后使用键名emailno向服务器端提交变量$emailno的值;若变量$isin为false,则表示当前用户没有阅读过该邮件,超链接要引用类名a1。输出表格第三列的标记(引用选择符td3)及内容,内容是超链接,链接热点为当前邮件subject列值,链接打开的文件是openemail.php,点击后使用键名emailno向服务器端提交变量$emailno的值;若变量$isin为false,则表示当前用户没有阅读过该邮件,超链接要引用类名a1。输出邮件信息输出表格第四列的标记(引用选择符td4)及内容,判断当前邮件附件列attachment的值是否为空,为空,则在单元格中输出空格字符
(该字符不可或缺,若是该字符不存在,很多浏览器中将无法显示该单元格的下边框线);若附件列的列值不为空,则输出图片flag-1.jpg;输出表格第五列的标记(引用选择符td5)及内容,内容是变量$riqi的值;输出表格的行结束标记。修改receiveemail.php文件在准备好要输出的数据之后,增加如下代码分页浏览页面存在的问题问题分析:在运行receiveemail.php的页面中,若是选择了一封或者几封邮件,点击“删除”按钮时,需要运行delete.php文件将选中的文件放入已删除文件夹中,但是若用户没有选择要删除的邮件而直接点击了“删除”按钮,需要怎样阻止运行delete.php文件?需要对receiveemail.php文件中的表单进行数据验证,判断如果没有选择要删除的邮件,则阻止运行delete.php文件需要完成的设置在receiveemail.php的<form>标记中设置action为delete.php创建脚本文件receiveemail.js,在receiveemail.php文件中引用该脚本文件定义函数validate()函数validate()的功能说明使用document.getElementsByName('markup[]')获取当前页面中的所有复选框,构成一个组,使用数组markup表示;定义一个变量result,初始值为false,若是判断后发现页面中有被选择的复选框,则该变量值要修改为true,否则保持为false。使用for结构逐个判断复选框组中每个元素是否被选中,只要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级数学计算题专项练习1000题汇编
- 一年级数学(上)计算题专项练习汇编
- 2023年南宁市隆安县中医医院招聘笔试真题
- 权利保证书在交易中的重要性3篇
- 标准格式公司授权委托书3篇
- 柴山承包合同的续约法律要求3篇
- 机动车辆注册代理委托3篇
- 2024年新一代网络安全技术服务合同
- 2024员工离职后知识产权归属及使用授权合同3篇
- 物流网络仿真课程设计
- 钉钉数字化管理师中级题库
- 解一元二次方程(公式法)(教学设计)-九年级数学上册同步备课系列
- 2024版小学科学六年级上册第四单元《能量》教学课件
- TSHZSAQS 00255-2024 食葵病虫害防治技术规范
- 2024农村机井转让合同范本
- 2024年院前急救护士理论考核参考题库(含各题型)
- 2025届江苏省苏州市吴中学、吴江、相城区数学八上期末综合测试试题含解析
- 2024-2030年中国巨菌草市场需求规模及未来发展战略研究报告
- 人教版高一上学期化学(必修一)《第四章物质结构元素周期律》单元测试卷-带答案
- 2024至2030年中国文具市场发展预测及投资策略分析报告
- 水利工程承包人常用的表格(51个)
评论
0/150
提交评论