一、项目设计
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';?>
id
name
age
<?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 echo $row[0]?> <?php echo $row[1]?> <?php echo $row[2]?>
<?php } ?>
<?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 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 $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 "跳转到详情页面"; ?>
三、界面效果