⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 head_func.php

📁 自己实现一个实用的商店应用系统
💻 PHP
字号:
<?php###################################################### Editor by Shuweich## Date 2005.10.17## Modify by Shuweich## Date 2005.10.17#### Modify by Shuweich## Date 2005.10.21## 增加表达式求值 expr and func 两种方式并用#### Modify by Shuweich## Date 2005.10.24## 增加支持多条SQL语句查询功能(将 $que 改为数组)#### Modify by Shuweich## Date 2005.10.27## 改进合计方式,以配合多条SQL语句的执行#### 数据源:从MySQL数据库中提取## 列示数据到HTML表格中<table>#### 本函数支持表达式求值#################################################### 函数说明## $que 数据查询语句## $que : 2005.10.24 开始支持数组## $lk MySQL数据库线程名## $title库表头文字(可以加入HTML语句)## $tabHead 表头栏位名称(二维数组) 形如:## $tabHead = array## (## 0 =>array('name' =>'序 号','attr' =>'','w' =>42,'size' =>14,'sum' =>0,'expr' =>'$row[0] * $row[5] - $row[7]'),## 1 =>array('name' =>'金额','attr' =>'','w' =>64,'size' =>14,'sum' =>1,'expr' =>'$row[2] + $row[4]')## );## 数组定义说明:## 必选部分## 'name' =>'序号','attr' =>'align="center"','w' =>4,'sum' =>0,##  栏位名          属性(字段值显示水平位置)  宽度值  本列求和否 0 不求和 1求和##                 ;属性一般用来定义字段值显示的水平位置,也可加入其它属性#### 可选部分## 'size' =>14 (暂未启用)## 字体大小 默认值 14px## 'expr' =>'if (!empty($row[6])) $out=$row[6]*100; else $out=$row[5]*100;'##  表达式求值## 'func' =>'if (!empty($row[6])) $out=$row[6]*100; else $out=$row[5]*100;'##  表达式求值2## expr 与 func 的区别: expr 不遍历 $row[]数组 , func 遍历 $row[]数组## 注:表达式后的分号“;”不能省略!#### 'roundec' =>2##  四舍五入小数位数, 若此值存在,则对合计进行按小数位(roundec)的四舍五入处理## 技巧:## 可利用 func 遍历字段值数组 $row[] 的不同之处重定义字段($row[])的显示顺序## 如每次都在某 func 中写入 $out=$row[5] , 以强制某栏位使用 $row[5] 的字段值## 因PHP的特性,数组定义中,可实现参数顺序无关性的特点## 数组定义说明完毕## $Other 其它变量集 形如: val1=2&val2=3&val3=4&val4=金额小计## fieldcolor 特殊显示时使用的颜色 缺省 : #00ca20## fieldcno 不同颜色显示使用第n个字段进行判断 缺省 : 4## fieldwhere 判断特殊显示时采用的条件 缺省 : 1 { 0.不参与 1.( > 0 );2.( == 0 );3.( < 0 ) }## tabattrib 表格属性 被插入到 <table > 标记中## thattrib 表头HTML公用属性  被插入到 <th > 标记中## tdattrib 表体HTML公用属性  被插入到每个 <td > 标记中## rowno 是否加序号在表格中 缺省值 : 0 { 0 不加序号 1 增加序号 }## sumres 是否加合计栏在表格中 缺省值 : 1 { 0 不加合计 1 增加合计 }## 2005.10.27 增加求合计的方式:## sumres = (##   1:每条SQL语句后合计,每for($que)循环合计不清零,此值在单条SQL语句时效果一样##     多条SQL语句效果是显示每条SQL的结果合计为累进值##   2:每条SQL语句后合计,每for($que)循环合计清零,此值在单条SQL语句时效果一样##     多条SQL语句效果为显示合计不累加前一SQL语句的结果##   3:只显示一个合计,此值为多条SQL语句后的合计值,此值在单条SQL语句时效果一样##   4:合并了 2 和 3 的功能 即小计与合计并存## )## 注:序号字段 rowno 总是被忽略## 字段值数组 $row[] 的顺序按 sql 语句中字段的顺序从 0 算起function DispData($que,$title,$tabHead,$Other,$_ZY) {  global $xoopsDB;  parse_str($Other);  if (! isset($fieldcolor)) $fieldcolor='#00ca20';  if (! isset($fieldcno)) $fieldcno=4;  if (! isset($fieldwhere)) $fieldwhere=1;  if (! isset($tabattrib)) $tabattrib="border='1' cellspacing='0' cellpadding='1'";  if (! isset($thattrib)) $thattrib = '';  if (! isset($tdattrib)) $tdattrib = '';  if (! isset($rowno)) $rowno='0';  if (! isset($sumres)) $sumres='1';  $sum_w = 0;  for ($i=0 ; $i<count($tabHead) ; $i++) {    $sum_w += $tabHead[$i][w];  }  $sum_w += $i+2;  echo "<div aligh='center'>\n";  echo "<table id='t01' style='";  ## echo "border-collapse:separate;";  echo "width:".$sum_w."px;";  echo "font-size:14px;' ";  echo " bordercolor='#111111' cellspacing='0' cellpadding='1' ";  echo " border='0'>";  echo "<tbody>\n";  echo "<tr><td>\n";    echo "<table style='font-size:14px;' id='t02' cellspacing='0' cellpadding='1'";  echo " style='width:".$sum_w."px;'";  echo " align='center' summary='' border='0'>";  echo "<tbody>\n";  echo "<tr>\n";  if ( $rowno == '1' ) $csp=count($tabHead)+3;  else $csp=count($tabHead)+2;  echo "<td align='middle' bgcolor='#000080' colspan='".$csp."'>";  echo "<font color='#ffffff'>".$title."</font></td></tr>";  echo "<tr>\n";  $thattrib='bgColor="#6c95d0"';  ## 表头 Begin  if ( $rowno == '1' ) echo "<th style='width:32px; '".$thattrib.">序号</th>\n";  for ($i=0 ; $i<count($tabHead) ; $i++) {    echo "<th style='width:".$tabHead[$i][w]."px;'";    echo $thattrib.$tabHead[$i][attr].">".$tabHead[$i][name]."</th>\n";  }  echo "<th style='width:26px' ".$thattrib.">&nbsp;</th>\n";  echo "</tr></tbody></table>\n";  echo "</td></tr>\n";  ## 表头 End  echo "<tr>\n<td>\n";  ## 滚动表体定义 Begin  echo "<div style='overflow:auto; width:100%;height:500px;'>\n";  echo "<table id='t03' style='font-size:14px;' ";  echo " bordercolor='#aaaaaa' ";  echo " width='98%' height='45' cellspacing='0' cellpadding='1' >\n";  $recordNo=1;  ## 初始化各字段合计变量  for ($z=0 ; $z<count($tabHead) ; $z++) {    $fieldsumName = "fieldsum".$z;    $$fieldsumName = 0;  }  for ($sql_n=0; $sql_n<count($que); $sql_n++) {    $res=$xoopsDB->query($que[$sql_n]);    if ( $recordNo % 5 != 1 ) echo "<tbody>\n";    ## 是否每 for($que) 时合计清零    if ( $sumres == '2' || $sumres == '4' ) {      for ($z=0 ; $z<count($tabHead) ; $z++) {        $fieldsumName = "fieldsum".$z;        $$fieldsumName = 0;      }    }    while( $row=$xoopsDB->fetchrow($res) ) {      ## 整行记录文字的着色处理 Begin      $cval = false;      if ( $fieldwhere == '0' ) $cval=false;      if ( $fieldwhere == '1' ) if ( $row[$fieldcno] > 0 ) $cval=true;      if ( $fieldwhere == '2' ) if ( $row[$fieldcno] == 0 ) $cval=true;      if ( $fieldwhere == '3' ) if ( $row[$fieldcno] < 0 ) $cval=true;      if ( $cval ) {        $cgreentr = 'color: #0000ff; ';      } else {        $cgreentr = 'color: #000000; ';      }      ## 整行记录文字的着色处理 End      ## 整行记录背景的着色处理 Begin      if ( $recordNo % 3 == 0 )        $coStyle=" style='background-color: #f0ffc9;".$cgreentr." ' ";      if ( $recordNo % 3 == 1 )        $coStyle=" style='background-color: #eeefff;".$cgreentr." ' ";      if ( $recordNo % 3 == 2 )        $coStyle=" style='background-color: #ffffff;".$cgreentr." ' ";      ## 整行记录背景的着色处理 End        if ( $recordNo % 5 == 1 ) echo "<tbody>\n";      echo "<tr ".$coStyle.">\n";      ## 是否加序号栏      if ( $rowno == '1' ) echo "<td style='width:28px;'>".$recordNo."</td>\n";      $r=0;      ## 输出一条记录 Begin      for ($j=0; $j<count($tabHead); $j++) {        ## 赤字着色 Begin        if ( $row[$j] < 0 ) $redword = ' style="color: #ff0000; " ';        else $redword = '';        ## 赤字着色 End        echo "<td style='width:".$tabHead[$j][w]."px;' ";        echo $tabHead[$j][attr].$redword.">";        ## expr and func 表达式处理 Begin        if (isset($tabHead[$j]['expr']) && substr($tabHead[$j]['expr'],0,1) != '#')          { eval($tabHead[$j]['expr']);            echo $out; }        elseif (isset($tabHead[$j]['func']) && substr($tabHead[$j]['func'],0,1) != '#')          { eval($tabHead[$j]['func']);            echo $out; $r+=1; }        else          { $out=$row[$r]; echo $out; $r+=1; }        ## expr and func 表达式处理 End        echo "</td>\n";        ## 若此栏位要求汇总, 则累加之        if ( $tabHead[$j][sum] == 1 ) {          $fieldsumName = "fieldsum".$j;          $$fieldsumName += $out;        }      }	## 输出一条记录 End      ++$recordNo;      echo "</tr>\n";      if ( $recordNo % 5 == 1 ) echo "</tbody>\n";    }	## 查询语句 while $res -> $row 循环结束    if ( $recordNo % 5 != 1 ) echo "</tbody>\n";      $cgreentr = 'color: #002f30; ';    $coStyle=" style='background-color: #d6d6d6;".$cgreentr." ' ";    echo "<tbody><tr ".$coStyle.">\n";    ## if 合计 Begin    if ( $sumres == '1' || $sumres == '2' || $sumres == '4' ) {      ## 序号      if ( $rowno == '1' ) echo "<td style='width:28px;'>".$recordNo."</td>\n";      ## 序号 End      ## for 合计 Begin      for ($i=0 ; $i<count($tabHead) ; $i++) {        echo "<td style='width:".$tabHead[$i][w]."px;'";        echo $tabHead[$i][attr].">";        if ( $i == 0 ) {          if ( $sumres == '2' || $sumres == '4' ) echo "小计:";          else echo "合计:";        }        ## 某栏合计 Begin        if ( $tabHead[$i][sum] == 1 ) {          $fieldsumName = "fieldsum".$i;          $outsum=$$fieldsumName;          if ( isset($tabHead[$i][roundec]) )            $outsum=round($$fieldsumName,$tabHead[$i][roundec]);          echo $outsum;        } else {          echo "&nbsp;";        }	## if 谋栏合计 End        echo "</td>\n";      }	## for 合计 End      echo "</tr></tbody>\n";    }	## if 合计 End    ## 加计汇总 Begin    if ( $sumres == '4' || $sumres == '3' ) {      for ( $z=0 ; $z<count($tabHead) ; $z++ ) {        if ( $tabHead[$z][sum] == 1 ) {          $countSum = "cntName".$z;          $fieldsumName = "fieldsum".$z;          $$countSum += $$fieldsumName;        }      }    }	## if 加计汇总 End  }	## sql_n for 循环结束 处理多条 SQL 的循环  ## if 尾合计 Begin  if ( $sumres == '3' || $sumres == '4' ) {    ## 序号    $cgreentr = 'color: #000000; ';    $coStyle=" style='background-color: #6c95d4;".$cgreentr." ' ";    echo "<tbody><tr ".$coStyle.">\n";    $recordNo++;    if ( $rowno == '1' ) echo "<td style='width:28px;'>".$recordNo."</td>\n";    ## 序号 End    ## for 尾合计 Begin    for ($i=0 ; $i<count($tabHead) ; $i++) {      echo "<td style='width:".$tabHead[$i][w]."px;'";      echo $tabHead[$i][attr].">";      if ( $i == 0 ) echo "总计:";	## 某栏合计 Begin      if ( $tabHead[$i][sum] == 1 ) {        $countSum = "cntName".$i;        $outsum=$$countSum;        if ( isset($tabHead[$i][roundec]) )          $outsum=round($$countSum,$tabHead[$i][roundec]);        echo $outsum;      } else {        echo "&nbsp;";      }	## if 谋栏合计 End      echo "</td>\n";    }	## for 尾合计 End    echo "</tr></tbody>\n";    }	## if 尾合计 End  echo "</table>\n";  echo "</div>\n";  ## 滚动表体定义 End  echo "</td></tr>\n";  echo "</tbody></table>\n";  echo "</div>\n";}	## function End?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -