从0实现html页面下拉加载与下一页
2016-11-17 15:36
183 查看
从0实现html页面下拉加载与下一页
两个个星期前因为自己写博客网站的需要,特地学习了一下"换页",现在反馈下自己的理解。
案例实现的语言为:php+html+mysql+javascript
下一页案例显示形式
学号 | 姓名 |
---|---|
xxx | xxx |
xxx | xxx |
mysql链接要操作的数据库
//假设本地测试,使用“localhost” $conn = mysql_connect("localhost","usrname","password"); mysql_query("set names 'gb2312'"); mysql_select_db("database_name",$conn);
获取数据库的记录数
//假设我们设置每条记录有一个id号 $sql1 = "select count(id) from guest"; $res1 = mysql_query($sql1,$conn); $row1=mysql_fetch_row($res1); if($row1){ $RecordCount = $row1[0]; //记录的总条数 }
初始化页面标号+页面设置
//如果有当前页就使用,没有就默认第一页。 if (!empty($_GET['PageCurrent'])){ $PageCurrent = $_GET['PageCurrent']; } else $PageCurrent = 1; $PageSize = number; //每页的记录数 $pre = ($PageCurrent-1)*$PageSize;//开始读数据的“起始”页数 $Page = ceil($RecordCount/$PageSize); //总页数 ceil:向上取整
从当前页面开始往后读number条记录
sql2 = "select * from guest limit $pre,$PageSize"; $res2 = mysql_query($sql2,$conn);
按照案例的显示读取两个数据
<tr> <td><?php echo $row2['num'];?></td> <td><?php echo $row2['name'];?></td> </tr>
实现当前页面随切换变化PageCurrent也变化
//设定首页 echo "<a href='?PageCurrent = 1'>首页</a>"; for($i=1;$i<=$Page;$i++){ //这里的形式会给每个页面分配一个PageCurrent //读者可以自己设置样式和不显示,这里作为例子不涉及 echo " <a href='?PageCurrent=$i'>$i</a> "; } //设定尾页 echo " <a href='?PageCurrent=$Page'>末页</a> "; echo "共 ".$RecordCount." 条记录";
[x] 图示
下拉加载
有了上面的例子,大家对sql的操作就有了一定的了解,对于我要实现的也就够用了。 我要这部分要讲的主要是实现下拉的中ajax的简单运用
首先我先贴出我自己写的一个ajax的php,看客看了上面的应该很容易懂
$link = mysql_connect($host, $db_user, $db_pass); mysql_select_db($db_name, $link); //让前端后段都能支持中文字符 mysql_query("set character set 'utf8'");//读库 mysql_query("set names 'utf8'");//写库 //接收前端传递过来的变量 $page = intval($_GET['page']); //获取请求的页数 $pagenum = number; //每页数量 $start = ($page) * $pagenum; $query = mysql_query("SELECT * FROM 博文信息表 order by 上传时间 DESC LIMIT $start," . $pagenum . ""); $arr = array(); //以数组的形式获取要在前端显示的信息,用于传递 while ($row = mysql_fetch_array($query)) { $arr[] = array( //我的数据库内存的各自信息的“名字” '博文地址' => $row['博文地址'], '博文题目' => $row['博文题目'], '上传时间' => $row['上传时间'], '作者' => $row['作者'], '图片地址' => $row['图片地址'], '简介' => $row['简介'] ); } if ($arr) { echo json_encode($arr); //转换为json数据输出 }
我贴出我前端对于这个ajax的“支持”
<script> i = 0; //设置当前页数 //pages的获取需要自己提前php设定,比如数据库总记录数/每页显示记录数目 var totalpage = "<?php echo $pages;?>"; //总页数,防止超过总页数继续滚动 $(function() { var winH = $(window).height(); //页面可视区域高度 $(window).scroll(function() { // 当滚动的页数小于总页数的时候,继续加载 if(i < totalpage) { var pageH = $(document.body).height(); var scrollT = $(window).scrollTop(); //滚动条top var aa = (pageH - winH - scrollT) / winH; //加入滚动条到达底部时下拉则“<0”,执行 if (aa <= 0) { // 设置一个卡顿延时,突出效果 for(var t = Date.now();Date.now() - t <= 400;); getJson(i); } } else { //否则显示无数据 showEmpty(); } }); getJson(0); //加载第一页 }); function getJson(page) { //将page这个变量传递到我的ajax中去 $.getJSON("ajax.php", {page: i}, function(json) { if (json) { //str用于接收信息,这里用于形成端完成的html var str = ""; $.each(json, function(index, array) { var str = "<h2><a title='#' href="; var str = str + array['博文地址'] + ">"; var str = str + array['博文题目'] + "</a></h2>"; var str = str + "<p class='dateview'><span>发布时间:"+ array['上传时间']; var str = str + "</span><span>作者:" + array['作者'] + "</span><span></span></p>"; var str = str + "<figure><a title=" + array['博文题目'] + "><img src=" + array['图片地址']; var str = str + "></a></figure> <ul class='nlist'><p>"; var str = str + array['简介']; var str = str + "</p> <a href=" + array['博文地址'] + " target='_blank' class='readmore'>详细信息>></a> </ul> <div class='line'></div>"; $("#div_id").append(str); }); } else { showEmpty(); } }); i++; } //全部读完给个提示,例如:<h2 id="hide" style="display: none">已经没有数据了<h2> function showEmpty() { hide.style.display = 'block'; } </script>
[x] 图示 (作者的未完工的demo…)
总结
很多问题网上零散已经有解决方案,我就是大致合成了一下。 肯定还有更好的解决方案+_+
相关文章推荐
- 两种方法实现在HTML页面加载完毕后运行某个js
- html嵌套iframe如何实现等iframe页面加载完进行下一步调用
- 使用WebView加载本地html页面,实现与java之间的相互响应
- winForm中如何实现Webbrowser控件加载html页面?
- 两种方法实现在HTML页面加载完毕后运行某个js:
- 两种方法实现在HTML页面加载完毕后运行某个js
- js技术实现html页面解析xml文档的级联下拉列表操作
- [置顶] viewPager+photoView实现网络图片加载左右滑动+手势缩放功能+滑动到下一页其他页面恢复默认大小
- 通过两种方法实现在HTML页面加载完毕后运行某个js
- 两种方法实现在HTML页面加载完毕后运行某个js
- 两种方法实现在HTML页面加载完毕后运行某个js
- 移动设备的HTML页面中图片实现滚动加载
- jquery+html三级联动下拉框及详情页面加载时的select初始化问题
- 两种方法实现在HTML页面加载完毕后运行
- Html利用锚点标记代替iframe实现页面无刷新加载
- html点击按钮 重新加载页面或者跳转页面实现
- html通过js实现页面加载动画
- 移动设备的HTML页面中图片实现滚动加载
- HTML+CSS实现页面加载(变灰显示请稍等、页面控件不可用)
- [HTML/JS]利用JQuery的load函数动态加载其它页面的内容的实现代码代替Ifram