• 一个更复杂一些的例子


    <?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>

  • 相关阅读:
    【概念】using 三种使用方式
    2019-7-2 作业1 2 3
    异常
    java.lang.NullPointerException
    课外作业(建立double类型的小数,按照四舍五入保留2位小数)
    作业1.2.3.4
    左自增与右自增的区别
    深入了解JVM(Java虚拟机)
    Eclipse报错Could not resolve archetype
    ThinkPad E550 连蓝牙鼠标logitech M557
  • 原文地址:https://www.cnblogs.com/Denny_Yang/p/1962328.html
Copyright © 2020-2023  润新知