设为首页 收藏本站
查看: 734|回复: 0

[经验分享] php分页显示类——在线拍卖行(1)

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-8-26 12:43:36 | 显示全部楼层 |阅读模式
  `自己周末做了一个在线拍卖行,虽然没有很好看的界面,但是上架商品,竞价,展示商品,展示热门商品等已经都有了,自己现在把里面用到的东西一点点写出来为以后复习用。

      首先就是一个php的分页显示的类:


<!--myDataGridClass.php:数据分页显示类------------------------------------>
<?php
/*********************************************
类名: myDataGridClass
功能:分页显示MySQL数据库中的数据
***********************************************/
class myDataGridClass{
//属性
var $sql;                          //所要显示数据的SQL查询语句
var $max_line;             //每页显示最多行数
var $begin_record;         //所要显示记录的首行序号
var $total_records;            //记录总数
var $current_records;      //本页读取的记录数
var $result;                       //读出的结果
var $total_pages;          //总页数  
var $current_page;         //当前页数
var $arr_page_query;       //数组,包含分页显示需要传递的参数
//方法
/*********************************************
构造函数:__construct()
输入参数:           
$pmax_line:每页显示最多行数   
***********************************************/
function myDataGridClass($pmax_line)
{
$this->max_line=$pmax_line;
$this->begin_record=0;
}
/*********************************************
构造函数:__destruct()
输入参数:           
***********************************************/
function __destruct()
{
}
/*********************************************
get函数:__get()
***********************************************/
function __get($property_name)
{  
if(isset($this->$property_name))
{
return($this->$property_name);
}
else
{
return(NULL);
}
}
/*********************************************
set函数:__set()
***********************************************/
function __set($property_name, $value)
{
$this->$property_name = $value;
}
/*********************************************
函数名:read_data
功能: 根据SQL查询语句从表中读取相应的记录
返回值:属性二维数组result[记录号][字段名]
***********************************************/
function read_data()
{
$psql=$this->sql;
if(isset($_GET['begin_record']))
$this->begin_record=$_GET["begin_record"];
else
$this->begin_record=0;
//查询数据,数据库链接等信息应在类调用的外部实现
$result=mysql_query($psql) or die(mysql_error());
$this->total_records=mysql_num_rows($result);
//利用LIMIT关键字获取本页所要显示的记录
if($this->total_records>0)
{
$psql=$psql.  " LIMIT ".$this->begin_record." , ".$this->max_line;
$result=mysql_query($psql) or die(mysql_error());
$this->current_records=mysql_num_rows($result);
//将查询结果放在result数组中
$i=0;
while($row=mysql_fetch_Array($result))
{
$this->result[$i]=$row;
$i++;
}
}
}

/*********************************************
函数名:navigate()
功能: 显示首页、下页、上页、未页
***********************************************/
function navigate()
{
//获取总页数、当前页信息
$this->total_pages=ceil($this->total_records/$this->max_line);
$this->current_page=$this->begin_record/$this->max_line+1;
echo "<div align=center>";
echo "<font color = red size ='4'>第".$this->current_page."页/共".$this->total_pages."页</font>";
echo "    ";
//获取将要导航到的分页的初始记录号
$first=0;
$next=$this->begin_record+$this->max_line;
$prev=$this->begin_record-$this->max_line;
$last=($this->total_pages-1)*$this->max_line;
//生成导航链接
if($this->begin_record>=$this->max_line)
echo "<A href=".$_SERVER['PHP_SELF']."?begin_record=".$first.">首页</A>|";
if($prev>=0)
echo "<A href=".$_SERVER['PHP_SELF']."?begin_record=".$prev.">上一页</A>|";
if($next<$this->total_records)
echo "<A href=".$_SERVER['PHP_SELF']."?begin_record=".$next.">下一页</A>|";
if($this->total_pages!=0 && $this->current_page<$this->total_pages)
echo "<A href=".$_SERVER['PHP_SELF']."?begin_record=".$last.">末页</A>";      
echo "</div>";
}
}
?>
  当然还可能有些小问题,但是里面自己加上去的是这几行,实际上感觉还蛮关键的,php一般的话不用这种方式好像变量并不能直接传到到新的界面上去:


if(isset($_GET['begin_record']))
$this->begin_record=$_GET["begin_record"];
else
$this->begin_record=0;
  display 函数就是调用这个类:


<!--display_goods.php:显示商品页面---------------------------->
<?php
//包含分页显示类
include "myDataGridClass.php";
//global $view;
/******************************************
函数名:    display_goods()
功能:     显示所有商品
******************************************/
function display_goods(){
//全局分页显示对象
global $view;
$DBHOST="localhost";
$DBUSER="root";
$DBPWD="";
$DBNAME="auction";
//连接数据库
//include "sys_conf.inc";
$link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);            
mysql_select_db($DBNAME);
//只显示没有结束竞标的商品
$time=time();
$view->__set("sql","select * from goods where endtime>'$time' order by gid desc");     
//读数据
$view->read_data();
//如果数据为空,则返回
if($view->current_records==0)
{
echo "<tr><td colbegin_record=4> </td></tr>";
return;
}        
//数据不为空,显示数据
echo "<table width='80%' border='0' align='center'>";
echo "<tr bgcolor='green'>";
echo "<td>商品名</td>";
echo "<td>结束时间</td>";
echo "<td>当前最高价格</td>";
echo "<td>出价人数</td>";
echo "</tr>";
for($i=0;$i<$view->current_records;$i++)
{
if(ceil($i/2)*2==$i)
$bgc="white";
else
$bgc="yellow";
echo "<tr bgcolor=$bgc><td>";
echo "<a href=detail.php?gid=".$view->result[$i]["gid"].">".$view->result[$i]["name"].$view->result[$i]["gid"]."</a>";
echo "</td><td>";
echo $view->result[$i]["endtime"];
echo "</td><td>¥";
echo $view->result[$i]["current_price"];
echo "</td><td>";
echo $view->result[$i]["reply_num"];
echo "</td></tr>";
}
echo "</table>";
//关闭数据库
mysql_close($link_id);
}
//*********显示最热的10条记录**********
function displsy_top10()
{
//全局分页显示对象
global $view;
$DBHOST="localhost";
$DBUSER="root";
$DBPWD="";
$DBNAME="auction";
//每页显示记录数
$PAGE_MAX_LINE=5;
//连接数据库
//include "sys_conf.inc";
$link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);         
mysql_select_db($DBNAME);
//显示出价者最多的10个商品
$view->__set("sql","select *  from goods order by reply_num desc");   
//读数据
$view->read_data();
//如果数据为空,则返回
if($view->current_records==0)
{
echo "<tr><td colbegin_record=4> </td></tr>";
return;
}        
//数据不为空,显示数据
echo "<table width='80%' border='0' align='center'>";
echo "<tr bgcolor='green'>";
echo "<td>商品名</td>";
echo "<td>结束时间</td>";
echo "<td>当前最高价格</td>";
echo "<td>出价人数</td>";
echo "</tr>";
for($i=0;$i<$view->current_records;$i++)
{
if(ceil($i/2)*2==$i)
$bgc="white";
else
$bgc="yellow";
echo "<tr bgcolor=$bgc><td>";
echo "<a href=detail.php?gid=".$view->result[$i]["gid"].">".$view->result[$i]["name"]."</a>";
echo "</td><td>";
echo $view->result[$i]["endtime"];
echo "</td><td>¥";
echo $view->result[$i]["current_price"];
echo "</td><td>";
echo $view->result[$i]["reply_num"];
echo "</td></tr>";
}
echo "</table>";
//关闭数据库
mysql_close($link_id);
}
//*********显示最新10条记录***********
function displsy_latest10()
{
//全局分页显示对象
global $view;
$DBHOST="localhost";
$DBUSER="root";
$DBPWD="";
$DBNAME="auction";
//$PAGE_MAX_LINE=5;
//连接数据库
//require_once("sys_conf.inc");         //系统配置文件,包含数据库配置信息
$link_id=mysql_connect($DBHOST,$DBUSER,$DBPWD);         
mysql_select_db($DBNAME);
//显示最新的10个商品
$view->__set("sql","select * from goods order by gid desc");   
//读数据
$view->read_data();
//如果数据为空,则返回
if($view->current_records==0)
{
echo "<tr><td colbegin_record=4> </td></tr>";
return;
}        
//数据不为空,显示数据
echo "<table width='80%' border='0' align='center'>";
echo "<tr bgcolor='green'>";
echo "<td>商品名</td>";
echo "<td>结束时间</td>";
echo "<td>当前最高价格</td>";
echo "<td>出价人数</td>";
echo "</tr>";
for($i=0;$i<$view->current_records;$i++)
{
if(ceil($i/2)*2==$i)
$bgc="white";
else
$bgc="yellow";
echo "<tr bgcolor=$bgc><td>";
echo "<a href=detail.php?gid=".$view->result[$i]["gid"].">".$view->result[$i]["name"]."</a>";
echo "</td><td>";
echo $view->result[$i]["endtime"];
echo "</td><td>¥";
echo $view->result[$i]["current_price"];
echo "</td><td>";
echo $view->result[$i]["reply_num"];
echo "</td></tr>";
}
echo "</table>";
//关闭数据库
mysql_close($link_id);
}
//主程序
include("head.html");
//include "sys_conf.inc";
//实例化myDataGridClass对象
$PAGE_MAX_LINE=5;
$view=new myDataGridClass($PAGE_MAX_LINE);
//初始化所要显示的具体记录
if(isset($begin_record))
$view->__set("begin_record",$begin_record);
else
$view->__set("begin_record",0);
//显示商品列表
if(!isset($task) || $task=="")
{
display_goods();
$view->navigate();
}
else if($_GET['task']=="topten")
{
displsy_top10();
}
else if($_GET['task']=="latestten")
{
displsy_latest10();     
}   
?>
  当然还有head头部:


<br>
<div align=center>
<a href=login.php>|登录|</a>
<a href=add_goods.php>|添加商品|</a>
<a href=display_goods.php>|商品列表|</a>
<a href=display_goods.php?task=topten>|HOT商品|</a>
<a href=display_goods.php?task=latestten>|最新商品|</a>
<a href=about:blank>|退出系统|</a>
</div>
<br>
  当然注意include那个地方,自己实际上不知道为什么include的不管用(下面还是会说变量未定义),然后自己只能都重新写一遍了…希望有热心的网友可以帮忙解答一下~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-104469-1-1.html 上篇帖子: php des 加密解密实例 下篇帖子: php 字符串相似度计算similar_text()函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表