热搜:NVER node 开发 php

PHP之分页显示数据-新闻系统

2024-08-15 22:00:02
PHP之分页显示数据-新闻系统

一、项目设计

1.项目要求

2.主页面使用frame框架进行设计,内容如下:

   index.php











二、准备工作

1.创建项目文件夹,定义配信息

   文件夹名称:news

   配置文件名:config.php

<?php define("HOST","localhost");	define("USERNAME","root");	define("PASSWORD","");	define("CHARSET","utf8");?>

2..创建项目数据库

   create_db.php

			
创建数据库
<?php require_once 'config.php';		$conn=mysql_connect(HOST,USERNAME,PASSWORD);		if(!$conn)			die('Coucld not connect:'.mysql_error());		$result=mysql_query("CREATE DATABASE news default character set utf8");		if($result)		{			echo "Database create successful!";		}else		{			die('Could not connect:'.mysql_error());		}		mysql_close($conn);	?>

3.设计数据表,并创建数据表

     强烈建议,在创建数据表之前,一定要先设计好数据表,并反复思量,是否有问题。

     create_table.php

			
创建数据表
<?php require_once 'config.php';			$conn = mysql_connect(HOST,USERNAME, PASSWORD);			mysql_query("set names utf8");			if (!$conn){				die('Could not connect:'.mysql_error());			}			mysql_select_db("news");						#分页表格-数据表			$sql = "CREATE TABLE content(				id int primary key auto_increment,				name varchar(30),				age varchar(12)			)";			#统计页面浏览次数-数据表			$sql2 ="CREATE TABLE count_number(					id int primary key auto_increment,				content_id	int,				number int,				is_first varchar(10)			)";			$sql3="insert into count_number(content_id,number,is_first) values(100,0,'true')";			#mysql_query($sql2);			#mysql_query($sql3);						/*				创建新闻主体表,字段解释				id 主键				news_id	新闻的标识,通过该id可以找到新闻的详情				image	新闻的图片				title	新闻的标题			*/			$sql4 = "create table news_content(				id int primary key auto_increment,				news_id int ,				image varchar(150),				title varchar(150),				content varchar(150)			)ENGINE=MyISAM DEFAULT CHARSET=utf8";						/*				插入新闻内容			*/			$sql5 = "insert into news_content(news_id,image,title,content) values(				1001,				'http://img1.cache.netease.com/catchpic/9/9E/9E3EC2A48299CBD7AD007DFF54060EE9.jpg',				'人民日报梳理习近平这一年:累并快乐着',				'http://news.163.com/14/1211/08/AD5URVP800014SEH.html')";			$sql6 = "insert into news_content(news_id,image,title,content) values(				1002,				'http://img1.cache.netease.com/catchpic/8/86/86394708E37A7B759771855337792EED.jpg',				'香港警方今日将全面清障 \"占中\"者内部发生分歧',				'http://news.163.com/14/1211/00/AD53FEM900014JB6.html')";			$sql7 = "insert into news_content(news_id,image,title,content) values(				1003,				'http://img4.cache.netease.com/cnews/2014/12/10/2014121019041607f5e.jpg',				'太原市委组织部长李志江被调查 曾\"失踪\"14天',				'http://news.163.com/14/1211/02/AD5BFC5700014AED.html')";			$sql8="insert into news_content(news_id,image,title,content) values(				1004,				'http://img1.cache.netease.com/catchpic/B/BB/BB09886F9B84329626E13115159CB164.jpg',				'媒体揭秘中情局八大酷刑 花8000万美元请人设计',				'http://news.163.com/14/1211/02/AD5BFJJP00014AED.html')";			#mysql_query($sql4);			#mysql_query($sql5);			#mysql_query($sql6);			#mysql_query($sql7);			#mysql_query($sql8);			/*			插入测试数据			*/			for($x = 0; $x<100;$x++){				$sql ="Insert into content(name,age) values('zhangsan',($x+5))";				#mysql_query($sql);			}			mysql_close($conn);		?>

4.设计各个辅助页面

    home.php

   打开http://localhost/news/index.php时,显示给用户的信息


content
<?php include 'content_table.php';?>

   sidebar.php

   左右侧边栏的广告信息


sidebar









    navigationbar.php

    页面导航信息


navigatiobar

首页 新闻 表格 科技 娱乐 体育 要闻 财经 时尚 文化 教育 数码

    footer.php

    页面底部信息


footer

页面底部信息


5.操作数据库的类

   mysqlhelper.php

   该类用于对数据库进行一些基本操作

	
<?php require_once 'config.php';	class MySQLHelper{	private $table;	/*		构造函数:		参数1:主机名		参数2:数据库用户名		参数3:数据库密码		参数4:要操作的数据库		参数5:操作数据库的字符编码		初始化对象的同时,进行连接数据库操作	*/	function __construct($table){		  $this->table=$table;	  $this->connect();	}		function connect(){		 $link=mysql_connect(HOST,USERNAME,PASSWORD) or die("连接数据库失败".mysql_error());		 mysql_select_db($this->table,$link) or die ("没有该数据库:".$this->table);		 mysql_query("SET NAMES ".CHARSET);	  	}	//受影响的行数	 function affected_rows(){				 return mysql_affect_rows();	 }	//数据条数	 function num_rows($query){				 return $mysql_num_rows($query);	 }	//插入的数据所在的id	 function insert_id(){			 return mysql_insert_id();	 }	 //处理返回的结果	 function fetch_row($query){		 return mysql_fetch_row($query);	 }	//服务器版本	 function version(){				 return mysql_get_server_info();	 }	 	//增	 function fn_insert($table,$name,$value){	  //insert into[表名] values('','',......顺序排列的数据);	   mysql_query("insert into $table ($name) values ($value)");	 }			 //删	 function fn_del($table,$data){	  //delete from [表名] where ([条件]);		 mysql_query("delete from $table where (id=$data)");	 }			 //查询全部结果	 function fn_search($table){		$res = mysql_query("select * from $table");		return $res;	 }			 //改	 function fn_update($table,$name1,$value,$name2,$id){		 //UPDATE [表名] SET [修改内容如name = 'Mary'] WHERE [条件];		 mysql_query("update $table set $name1='$value' where $name2='$id'");	 }}?>

6.设计分页数据主页面

    content_table.php

    分页显示数据,每一页的数据是一张表格。


page
<?php require_once 'mysqlhelper.php';?>
<?php $db = new MySQLHelper("news");				$res = $db->fn_search("content");				//var_dump($res);								//声明一些变量				$page_size="10";//每一页的条数				$count=mysql_num_rows($res);//总的条数				$page_number=ceil($count/$page_size);//向上舍入,获得最大页数				//当前的页数				if(empty($_GET['page']) || $_GET['page'] 						
<?php }			?>
id name age
<?php echo $row[0]?> <?php echo $row[1]?> <?php echo $row[2]?>

<?php $key=''; if($current_page ==1){ //当前页是首页 $key.='首页'; $key.=' 上一页'; }else{ $key.="首页 "; $key.=" 上一页 "; } /*for($x = $current_page ; $x $x "; }*/ //中间页码策略:中间页数左右偏移2个页码 for($x = 0 ; $x" ." ".($current_page+$x).""; }else{ $y =6+$x; $key.="" ." ".$y.""; } } if($current_page == $page_number){ //当前页是尾页 $key.=' 下一页'; $key.=' 尾页'; }else{ $key.=" 下一页 "; $key.="尾页"; } ?>
<?php echo $key;?>
浏览次数: <?php //查询数据库的次数 $sql="SELECT * FROM count_number where content_id=100"; $res = mysql_query($sql); #echo mysql_num_rows($res); #var_dump($res); //获取数据库的浏览次数 while($row = mysql_fetch_array($res)){ $number = $row['number']; } //次数+1 $sql = "UPDATE count_number set number =".($number+1)." WHERE content_id=100"; mysql_query($sql); //显示次数 echo $number; ?>

    content_news.php

    分页显示数据信息,每一页的数据是一个新闻列表,文字和图片都可以点击,并进入新闻详情页面。



<?php require_once 'mysqlhelper.php';	header("Content-type:text/html;charset=utf-8");		$helper = new MySQLHelper("news");	$res = $helper->fn_search("news_content");	//声明一些变量	$total_count = mysql_num_rows($res);	//总的数据行数	$page_count=6;	//每页显示的数据条数	$page_number=ceil($total_count / $page_count);//总的页数		//获取当前的页码	if(empty($_GET['page'])){		$current_page=1;	}else{		$current_page=$_GET['page'];	}	//当前页的第一条数据应该是	$offset=$page_count*($current_page-1);	$sql="select * from news_content limit $offset,$page_count";	$res = mysql_query($sql);	//查询当前页的数据		while($row = mysql_fetch_array($res)){		#echo $row['id']."
"; #echo $row['image']."
"; #echo $row['title']."
";?> <?php }?><?php $key=""; $key.="总页数:".$current_page."/".$page_number."  "; if($current_page == 1){ $key.="首页 "; $key.="上一页 "; }else{ $key.="首页 "; $key.="上一页 "; } if($current_page == $page_number){ $key.="下一页 "; $key.="尾页 "; }else{ $key.="下一页 "; $key.="尾页 "; } $key.="  总的数据条数:".$total_count;?>
<?php echo $row['title'];?>

<?php echo $key;?>


7.设计单条数据详情页面

  content.php


<?php require_once 'mysqlhelper.php';		$helper = new MySQLHelper("news");		//print_r($_GET);					$news_id =$_GET['news_id'];	//获取新闻的id				$sql = "select * from count_number where content_id=".$news_id;		$res = mysql_query($sql);		//判断是否是第一次进来		if(mysql_num_rows($res) == 0){			$sql = "insert into count_number(content_id,number,is_first) values($news_id,1,'true')";			#echo "第一次进来";			mysql_query($sql);			$number=1;		}else{			$sql="select number from count_number where content_id=".$news_id;				#echo "不是第一次进来";			$res = mysql_query($sql);			$row = mysql_fetch_array($res);			$number = $row['number']+1;			$sql="update count_number set number=".$number." where content_id=".$news_id;			mysql_query($sql);		}						$sql = "select * from news_content where news_id=".$news_id."";		$res = mysql_query($sql);		$row = mysql_fetch_array($res);		echo "

"; echo "

".$row['title']."

"; echo "
"; echo "
"; //显示浏览次数 echo "页面浏览次数:".$number."     "; //点击超链接,跳转到详情页面 $st =$row['content']; echo "跳转到详情页面"; ?>
三、界面效果