现在的位置: 首页 > 综合 > 正文

一个更复杂一些的例子

2013年07月19日 ⁄ 综合 ⁄ 共 10625字 ⁄ 字号 评论关闭

<?php
 header("content-Type: text/html; charset=gb2312");
 include_once("DBHelper.php");
        include_once("test_array.php");
?> 

<!--==========业务逻辑==========-->
<?php
 $conn = new ADOConnection;
 $conn -> PConnect("localhost","root","weoffice","eoffice");//数据库连接
 $conn -> SetUnicode("set names gb2312");//**设置字符集***
 
 //组建三级数组,当成一个空DataSet结构来用
 //DataSet => DataTable:成都公司/昆明公司/公司集团/...
 $copName = $conn -> ExecuteQuery("select DEPT_NAME from department where DEPT_PARENT=1 order by DEPT_NO");
 $arr = buildArr($copName);
 
 //记录一个保存有指定部门时所发生的情况:1.不指定部门2.所有范围3.指定一个(些)部门
 $counter = buildAllName($copName);
 //SQL语句:获取符合条件的公告(筛选条件:通告有效),按有效的开始时间倒排
 $sql = "SELECT a.DEPT_ID,a.NOTIFY_ID, a.SUBJECT, a.SEND_TIME, a.READERS, b.USER_NAME
   FROM notify a left join user b
   ON a.FROM_ID = b.USER_ID
   ORDER BY a.SEND_TIME DESC";
 //返回数据表
    $arrResult = $conn -> ExecuteQuery($sql);
 //遍历循环
 if(!$arrResult) {
  echo "<div>没有任何公告。</div>";
 }
 else{
  $file_channel_cache='test_array.php';
    $cachetime=filemtime($file_channel_cache);

    if(!file_exists($file_channel_cache)){
    //if(!file_exists($file_channel_cache) || time()-$cachetime>36000){
  //遍历指定了哪些部门
  for($i=0;$i<count($arrResult);$i++){
   if(!$arrResult[$i]["DEPT_ID"]){//没有指定部门,即部门为空
    //处理没有选择部门的数据 => "未指定部门"
    $n = count($arr["未指定部门"]);
    $arr["未指定部门"][$n] = array();
    //赋值
    $arr["未指定部门"][$n]["NOTIFY_ID"] = $arrResult[$i]["NOTIFY_ID"];
    $arr["未指定部门"][$n]["SUBJECT"] = $arrResult[$i]["SUBJECT"];
    $arr["未指定部门"][$n]["SEND_TIME"] = $arrResult[$i]["SEND_TIME"];
    $arr["未指定部门"][$n]["PUBUSER"] =  $arrResult[$i]["USER_NAME"];
    $arr["未指定部门"][$n]["READERS"] =  $arrResult[$i]["READERS"];
   }
   else if($arrResult[$i]["DEPT_ID"]=="ALL_DEPT") {//指定的所有全体
    //处理没有指定范围的数据=>"全部范围"
    $n = count($arr["全部范围"]);
    $arr["全部范围"][$n] = array();
    //赋值
    $arr["全部范围"][$n]["NOTIFY_ID"] = $arrResult[$i]["NOTIFY_ID"];
    $arr["全部范围"][$n]["SUBJECT"] = $arrResult[$i]["SUBJECT"];
    $arr["全部范围"][$n]["SEND_TIME"] = $arrResult[$i]["SEND_TIME"];
    $arr["全部范围"][$n]["PUBUSER"] = $arrResult[$i]["USER_NAME"];
    $arr["全部范围"][$n]["READERS"] = $arrResult[$i]["READERS"];
   }
   else{//指定了一个(些)部门
    //分离开指定的部门
    $arrNum = explode(",",$arrResult[$i]["DEPT_ID"]);
    //遍历选择的所有部门
    for($j=0;$j<count($arrNum)-1;$j++){
     //遍历反查所有的结点,直到找到DEPT_PARENT=1为止
     $name = runback($arrNum[$j]);
     //定义一个数组arr["公司名"]++
     $counter[$name]++;
    }
    //遍历前面定义的那个数组
    foreach($counter as $key=>$value){
     //判断,如果arr["公司名"]>0
     //赋值arr["公司名"][count(arr["公司名"])]["NOTIFY_ID"]=..
     if($value>0)
     {
      $n = count($arr[$key]);
      $arr[$key][$n] = array();
      //赋值
      $arr[$key][$n]["NOTIFY_ID"] = $arrResult[$i]["NOTIFY_ID"];
      $arr[$key][$n]["SUBJECT"] = $arrResult[$i]["SUBJECT"];
      $arr[$key][$n]["SEND_TIME"] = $arrResult[$i]["SEND_TIME"];
      $arr[$key][$n]["PUBUSER"] = $arrResult[$i]["USER_NAME"];
      $arr[$key][$n]["READERS"] = $arrResult[$i]["READERS"];
     }
    }
    //else over. It will jump to the next loop
    $counter = initArr($counter);
   }
  }
  //for is over
  //print_r($arr);
               //字符串处理
             $string_start   = "<?php\n";
             $string_v   = '$'."arra=";
             $string_process = var_export($arr, TRUE);
             $string_end     = "\n?>";
             $string         = $string_start.$string_v.$string_process.$string_end;
 
             //开始写入文件
             echo file_put_contents('test_array.php', $string);
 }
 //if...else 结束
 }
 //这下面的一切都是为了一个new标记..汗...
 $curUser = $_COOKIE[USER_NAME_COOKIE];
 $userName = "";
 if($curUser == "admin"){
  $userName = "系统管理员";
 }else{
  $userName = iconv("utf-8","gb2312",$curUser);
 }
 $sql = "SELECT USER_ID FROM user WHERE USER_NAME='".$userName."'";
 $userID = $conn -> ExecuteQuery($sql);
 foreach($arr as $key=>$value){
  for($i=0;$i<count($value);$i++){
   $temp = $arr[$key][$i]["READERS"];
   if($temp && $userID[0][0]){
    $arr[$key][$i]["READERS"] = "new".substr_count($temp,$userID[0][0]);
   }
  }
 }
 //这上面的一切都是为了一个new标记..汗...
 /*活动数据(新闻)
 ----------------------------------------------*/
 $sql = "SELECT NEWS_ID,SUBJECT,NEWS_TIME,news_reader,ATTACHMENT_ID,ATTACHMENT_NAME from news order by NEWS_ID desc LIMIT 0 , 5";
 $activity = $conn -> ExecuteQuery($sql);
 //print_r($activity);
?>
<!--==========辅助方法==========-->
<?php
//在department中去遍历,直到找到第二级节点为止
function runback($depID)
{
 $sql = "select * from department where DEPT_ID=".$depID;
 $result = mysql_query($sql);
 $info = mysql_fetch_array($result);
 if(!$info) {
 //"发表的公告有异常:指定的部门编号在Department表中找不到!";
 //"隐藏了这个异常"
  return "未指定部门";
 }
 if($info["DEPT_PARENT"] != 1){
  return runback($info["DEPT_PARENT"]);
 }
 else{
  return $info["DEPT_NAME"];
 }
}
//辅助方法:建立数组
function buildArr($arrCopName)
{
 $arr = array(
  "全部范围"=>array()
 );
 for($i=0;$i<count($arrCopName);$i++)
 {
  $arr[$arrCopName[$i]["DEPT_NAME"]] = array();
 }
 $arr["未指定部门"] = array();
 return $arr;
}
//辅助方法:建立计数器(存所有公司名+全部范围+未指定部门),并初始化为0
function buildAllName($arrCopName)
{
 $arr = array(
  "全部范围"=>0
 );
 for($i=0;$i<count($arrCopName);$i++)
 {
  $arr[$arrCopName[$i]["DEPT_NAME"]] = 0;
 }
 $arr["未指定部门"] = 0;
 return $arr;
}
//初始化数组,将值清空为0
function initArr($arr)
{
 foreach($arr as $key=>$value)
 {
  $arr[$key] = 0;
 }
 return $arr;
}
?>

<?php
$conn -> ConnClose();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>无标题文档</title>
<meta http-equiv="content-type" content="text/html" charset="gb2312" />
<link href="css/style.css" type="text/css" rel="stylesheet" />

<script type="text/javascript" src="/inc/common2.js"></script>
<script language="javascript" src="js/getNewID.js"></script>
<script language="javascript" src="js/prototype.js"></script>

<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript" src="js/jquery.KinSlideshow-1.1.js"></script>
<script type="text/javascript">
<!--
$(function(){
 var w = Math.round($(window).width()*0.48);
 $("#KinSlideshow a img").css("width",w);
 $("#KinSlideshow").KinSlideshow({
   moveStyle:"left",   //设置切换方向为向下 [默认向左切换]
   intervalTime:4,     //设置间隔时间为8秒  [默认为5秒]
   mouseEvent:"mouseover",  //设置鼠标事件为“鼠标滑过切换”  [默认鼠标点击时切换]
   titleFont:{TitleFont_size:12,TitleFont_color:"#fff"} //设置标题文字大小为14px,颜色:#FF0000
 });
 
 testimg();//加载活动图片
});
function openDiv(alink){
 //打开当前DIV
 $("#KinSlideshow").addClass("hiden");
 $("div.block").addClass("hiden");
 $(alink).parent().parent().attr("id","topDIV");
 $("#topDIV").addClass("show");
 $("#topDIV").css("overflow","auto");
 var arr = $("#topDIV li a");
 for(var i=0;i<arr.length;i++){
  arr.eq(i).text(arr.eq(i).attr("title"));
 }
 $(alink).hide();
 $(alink).parent().append("<a href='javascript:void(0)' onclick='refresh();'>返回</a>");
 
 //设置分页
 $("#topDIV div.pager").attr("id","pager");
 $("#pager").show();
 var pagesize = parseInt($("#pager strong").text()); //每页显示记录数
 var licount = $("#topDIV ul li").length; //总条数
 var totalpage = Math.round(licount/pagesize);//总页数
 if(totalpage == 0) totalpage = 1;
 $("#pager .totalpage").text(totalpage); //显示页数
 $("#topDIV ul li").hide();
 for(var i=0;i<pagesize;i++){ //初始化第一页
  $("#topDIV ul li").eq(i).show();
 }
 //第一页
 $("#pager .firstpage").click(function(){
  if($("#pager .curpage").text() == "1"){
   alert("已经是第一页了");
   return;
  }
  $("#topDIV ul li").hide();
  for(var i=0;i<pagesize;i++){
   $("#topDIV ul li").eq(i).fadeIn(1000);
  }
  $("#pager .curpage").text(1);
  //alert("第一页");
 });
 //前一页
 $("#pager .prepage").click(function(){
  var curpage = parseInt($("#pager .curpage").text());
  if(curpage == 1){
   alert("当前已经是第一页了");
  }else{
   $("#topDIV ul li").hide();
   var end = (curpage-1)*pagesize;
   var start   = end - pagesize;
   for(var i=start;i<end;i++){
    $("#topDIV ul li").eq(i).fadeIn(1000);
   }
   $("#pager .curpage").text(curpage-1);
  }
  //alert("前一页");
 });
 //下一页
 $("#pager .nextpage").click(function(){
  var curpage = parseInt($("#pager .curpage").text());
  if(curpage == totalpage){
   alert("当前已经是最后一页了");
  }else{
   $("#topDIV ul li").hide();
   var start = curpage*pagesize;
   var end   = start + pagesize;
   for(var i=start;i<end;i++){
    $("#topDIV ul li").eq(i).fadeIn(1000);
   }
   $("#pager .curpage").text(curpage+1);
  }
  //alert("下一页");
 });
 //最后一页
 $("#pager .lastpage").click(function(){
  var curpage = parseInt($("#pager .curpage").text());
  if(curpage == totalpage) {
   alert("已经是最后一页了");
   return;
  }
  var start = (totalpage-1)*pagesize;
  var end   = licount;
  $("#topDIV ul li").hide();
  for(var i=start;i<end;i++){
   $("#topDIV ul li").eq(i).fadeIn(1000);
  }
  $("#pager .curpage").text(totalpage);
  //alert("最后一页");
 });
 
 //模糊搜索
 //var keyword = $("#pager input").eq(0).attr("value");
 $("#pager input").eq(1).click(function(){
  var keyword = $("#pager input").eq(0).attr("value");
  for(var i=0;i<arr.length;i++){
   var title = arr.eq(i).text();
   //alert(title);
   if(title.indexOf(keyword)==-1){
    $("#topDIV ul li").eq(i).hide();
   }else{
    $("#topDIV ul li").eq(i).fadeIn(1000);
   }
  }
  $("#topDIV span.pagerwrap").hide();
  //alert(licount);
 });
}
function refresh(){
 window.location.reload();
}
function showAImg(attachmentID,attachmentName,imgSeq){
 showAttachGeneral(attachmentID,'',1,0,0,attachmentName,imgSeq);
}
function testimg(){
 var i=$("#KinSlideshow a img").length;
 var x=i/2;
 var y=x;
 $("#KinSlideshow a img").each(function(){
  var attachmentID = $(this).attr("class");
  var attachmentName = $(this).attr("lang");
  if(attachmentID != "" && attachmentName != "")
  {
   $(this).attr("id","img"+attachmentID);
   showAImg(attachmentID,attachmentName,y++);
  }
  if((--i) == x) return false;
 });
}
//-->
</script>
</head>

<body>

 <div id="KinSlideshow" style="visibility:hidden; overflow:hidden;">
 <?php
 foreach($activity as $key=>$value)
 {
  if($key > 5) break;
  //if(!$value["ATTACHMENT_ID"]) continue;//如果没有图片,跳出本次循环
 ?>
        <a href='/general/news/show/read_news.php?NEWS_ID=<?php echo $value["NEWS_ID"]; ?>' target="_blank"><img src="images/5.jpg" lang="<?php echo $value["ATTACHMENT_NAME"]; ?>" class="<?php echo $value["ATTACHMENT_ID"]; ?>" alt="<?php echo $value["SUBJECT"]; ?>" /></a>
 <?php
 }
 ?> 
    </div>
 <?php
 foreach($arra as $key=>$value)
 {
  if($key == "鑫**" || $key == "全国其他公司" || $key == "未指定部门") continue;
 ?>
 <div class="block"><h1><?php echo $key ?><a href="javascript:void(0)" onclick="openDiv(this);">&gt;&gt;更多</a></h1>
 <ul>
 <?php
  for($k=0;$k<count($value);$k++)
  {
 ?>
  <li><a href="publicread.php?NOTIFY_ID=<?php echo $value[$k]["NOTIFY_ID"] ?>&USER_NAME=<?php echo urlencode($value[$k]["PUBUSER"]) ?>&USER_ID=<?php echo $userID[0][0]; ?>" target="_blank" title="<?php echo $value[$k]["SUBJECT"] ?>"><?php echo $value[$k]["SUBJECT"];?></a><span>(<?php echo substr($value[$k]["SEND_TIME"],0,10) ?>)</span><?php echo $value[$k]["PUBUSER"] ?><span class='<?php echo $value[$k]["READERS"] ?>'>&nbsp;</span></li>
 <?php 
  }
  if($k==0) echo "该公司下还没有公告。";
 ?>
 </ul>
 <div class="pager">模糊搜索:<input type="text" /><input type="button" value="搜索" /><span class="pagerwrap">每页显示:<strong>13</strong>条 当前页:<span class="curpage">1</span>/<span class="totalpage">xxx</span><span class="firstpage">&lt;&lt;</span><span class="prepage">&lt;</span><span class="nextpage">&gt;</span><span class="lastpage">&gt;&gt;</span></span></div>
 </div>
 <?php 
 }
 ?> 
</body>
</html>

抱歉!评论已关闭.