<?php
/**
 * 金戈企业建站系统：企业新闻页
 *
 *
 * @name 
 * @author 烟鬼 QQ:460874 Email:460874@qq.com
 * @version 0.1  $id  news.php
 * @copyright Copyright (c) 2007 - 2008 烟鬼
 */
require('header.php');

/**
 * 取出所有的新闻分类
 */
$news_class = root_all(new_class);
if ($news_class) 
{
     $news_class = setarray($news_class);
}

/**
 * 取回所有新闻并做分页处理
 */

//每页显示多少条留言
$page = 0;
$page=isset($_GET['page'])?intval($_GET['page']):1;
if ($web) 
 {
      $num = $web['w_news'];
 } 
else 
{
	$num = 10;
}

try
{
	$conn = db_connect();
	$result=$conn->query("set names 'gb2312'");
	
	$result = $conn->query('SELECT n_n_id FROM new_news');
	//返回有多少条数据
	$total=$result->num_rows;
	if ($total <= 0) 
	 {
	      $total = 1;
	      $error = NONW;
	 } 
	//返回总页数 ceil()函数是取整的意思。用数据库的总条数/每页显示条数=多少分页
	$pagenum=ceil($total/$num);
	if ($page > $pagenum || $page == 0) 
	{
		throw new Exception(NOLY);
	}
	// 获取limit的第一个参数的值，假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10
	//对offset初始化
	$offset = 0;
	$offset=($page-1)*$num;
	
	//验证需要在数据库操作的变量是否是数字类，如果不是停止脚本运行。
	//这里主要是防止SQL注入，这类变量是最危险的。比如下面的
	//$page我们根本就不需要去验证它，因为它根本接触不到数据库
	$offset = my_yz($offset);
	$num = my_yz($num);
	if (!is_numeric($offset) || !is_numeric($num)) 
	{
	     exit;
	}
	
	$result = $conn->query('SELECT * FROM new_news
							ORDER BY n_n_id DESC
							LIMIT '.$offset.','.$num);
	if (!$result) 
	{
	     throw new Exception(DBEO);
	}
	//为了方便在模板中处理，将取出的所有内容构造成一个二维数组setarray在myfun.php中定义
	$result = setarray($result);
}
//将捕获的异常付值给一个变量，在将变量传递给模板处理。当模板接受到这个变量就显示，否则不显示
catch (Exception $e)
{
	$error = $e->getMessage();
}

//将分页构造成一个二维数组。传递给模板后方便操作。本来用一维数组边足够用，可我在
//模板下调用一维数组10多次都失败，气急败坏之下用二维的算了
for($i=1;$i<=$pagenum;$i++)
{
   $pages[][]= ($i!=$page)?"<a href='news.php?page=".$i."'>$i</a>":"<a id='nourl'>$i</a>";
}


$smarty->assign('notnews',$error);
$smarty->assign('news_class',$news_class);
$smarty->assign('news_allnew',$result);
$smarty->assign('pagenum',$pagenum);
$smarty->assign('pages',$pages);
$smarty->display('news.html');
require('footer.php');
?>
