发新话题
打印

SmartTemplate模板的快速排表

SmartTemplate模板的快速排表

复制内容到剪贴板
代码:
<?php
/*
smarttemplate模板的快速取值
结合smarttemplate使用,用r凼数和c凼数
r凼数是 单列输出
c凼数是 多列输出
//快速排表
/*
主要参数
记得要找出必要的字段,不需要的,不要找,以加速程序运行
cols 表格内有多少列,最少是1 如果用1 不如用r行凼数
tabname 表名,如果同一个php里面,找同一个表两次,第二次要用 tabname1 不可以相同,这是唯一的标识,输出到html
color1 color2 隔行背景色
format_str 被格式化的字符串   要求格式   数据列名,,输出长度||       name,20||about,,50   返回一个 数据列名_all 的值是原值
返回一个二数组,给SmartTemplate使用实现自动输出表格
程序另外返回两个值i从0开始的下标
index 从1开始的下标
replace 替代需要的东西   要求格式   数据列名,,旧数据,,新数据,,如果最后的参数输入为1时,则完全替换       name,,old,,new,,1||about,,old,,new
sql 找查据数的SQL 例 $sql="from product limit 0,20 ";   
sql_col ="id,name,pic,pics,about"
sql语句,要分开写。select 不用写了
*/
function c($sql,$cols,$tabname,$sql_col,$color1="",$color2="",$format_str="",$replace="")
{
  //按输入生成新的sql
  $HQL="select $col $sql";
  //如果format_str不为空,则返回一个二维数组,保存列名,和取多长串符
  $str_arr=format($format_str);
  //查询
  $ph=mysql_query($HQL);
  //如果替代replace不为空,则返回一个三维数组,保存列名,和旧字符,新字符
  $rep_arr=replace($replace);

  $i=0;
  //如果多列,则生成多列
  $tab=explode(",",$sql_col);   
  //生成临时二维数据,保存数据
  while($row = mysql_fetch_array($ph))
  {
  foreach($tab as $a)
  {
  $a=unline($a);
    $show[$i]["$a"]=$row["$a"];
  }
  $i++;
  
  }

  //取出多少行
  $rows=Ceil($i/$cols);
  $count=0;
  //生成表格
  for($row=0;$row<$rows;$row++)
  {
  //换行颜色
  if($color1<>""){
  if($row%2==1)
  {
    $color=$color1;
  }else{
    $color=$color2;
  }
  }
  
  //生成td
  for($col=0;$col<$cols;$col++)
  {
  //生成td里面的内容
  foreach($tab as $a)
  {
  //去取内连接数据列的表名
  $a=unline($a);
  //替代指定字符
  if($replace<>""){
      if($a==$rep_arr[$a]['name'])
      {   
      $show[$count]["$a"]=str_replace($rep_arr[$a]['old'],$rep_arr[$a]['new'],$show[$count]["$a"]);   
      if($rep_arr[$a]['replace']==1){
      $show[$count]["$a"]=$rep_arr[$a]['new'];
      }
      }
    }
  //取部份字符串
  if($format_str<>"")
    {
      if($a==$str_arr[$a]['name'])
      {      
      $show[$i]["$a"]=lenlen($row["$a"],$str_arr[$a]['len']);
      $table["r_".$tabname][$row]["c_".$tabname][$col]["$a"]=lenlen($show[$count]["$a"],$str_arr[$a]['len']);
      $table["r_".$tabname][$row]["c_".$tabname][$col]["$a"."_all"]=$show[$count]["$a"];
      }else{
      
      $table["r_".$tabname][$row]["c_".$tabname][$col]["$a"]=$show[$count]["$a"];
      }
   
    }else{
    $table["r_".$tabname][$row]["c_".$tabname][$col]["$a"]=$show[$count]["$a"];
    }
  }
  $table["r_".$tabname][$row]["c_".$tabname][$col]['color']=$color;
  $table["r_".$tabname][$row]["c_".$tabname][$col]['i']=$count;
  $table["r_".$tabname][$row]["c_".$tabname][$col]['index']=$count+1;
  $count++;
  }
  }
  return $table;
}
function r($sql,$tabname,$sql_col,$color1="",$color2="",$format_str="",$replace="")
{
  $HQL="select $col $sql";
  $str_arr=format($format_str);
  $ph=mysql_query($HQL);
  $i=0;
  $rep_arr=replace($replace);
  $tab=explode(",",$sql_col);
  
  while($row = mysql_fetch_array($ph))
  {
  foreach($tab as $a)
  {
  $a=unline($a);
  $show[$i]["$a"]=$row["$a"];
  }
  $i++;
  }

  $count=0;
  for($row=0;$row<$i;$row++)
  {
    if($color1<>""){
    if($row%2==1)
    {
    $color=$color1;
    }else{
    $color=$color2;
    }
    }
  foreach($tab as $a)
  {
    $a=unline($a);   
    if($replace<>""){
      if($a==$rep_arr[$a]['name'])
      {   
      $show[$count]["$a"]=str_replace($rep_arr[$a]['old'],$rep_arr[$a]['new'],$show[$count]["$a"]);
      if($rep_arr[$a]['replace']==1){
      if($show[$count]["$a"]==""){
        $show[$count]["$a"]=$rep_arr[$a]['new'];
      }
      }
      }
    }
    if($format_str<>"")
    {   
        if($a==$str_arr[$a]['name'])
        {                       
        $show[$i]["$a"]=lenlen($row["$a"],$str_arr[$a]['len']);
        $table["r_".$tabname][$row]["$a"]=lenlen($show[$count]["$a"],$str_arr[$a]['len']);
        $table["r_".$tabname][$row]["$a"."_all"]=$show[$count]["$a"];
        }else{
        $table["r_".$tabname][$row]["$a"]=$show[$count]["$a"];   
        }   
      }else{
      $table["r_".$tabname][$row]["$a"]=$show[$count]["$a"];      
      }
    }
  $table["r_".$tabname][$row]['color']=$color;
  $table["r_".$tabname][$row]['i']=$count;
  $table["r_".$tabname][$row]['index']=$count+1;
  $count++;
  }
  return $table;
}

//决解两表查找时,的列名显示
function unline($a)
{
if(strrpos($a,".")<>false)
{
$a=substr($a,strrpos($a,".")+1,strlen($a)-strrpos($a,".")+1);
}
return $a;
}
//程序内自动调用,
function format($format_str="")
{
  $arr=explode("||",$format_str);
  
  foreach ($arr as $key => $value) {
  $str_arr[$key]=explode(",,",$value);
  }
  for($i=0;$i<count($arr);$i++)
  {
  $array[$str_arr[$i][0]]['name']=$str_arr[$i][0];
  $array[$str_arr[$i][0]]['len']=$str_arr[$i][1];
  }
return $array;
}
//程序内自动调用,
function replace($format_str="")
{
  $arr=explode("||",$format_str);
  
  foreach ($arr as $key => $value) {
  $str_arr[$key]=explode(",,",$value);
  }
  for($i=0;$i<count($arr);$i++)
  {
  $array[$str_arr[$i][0]]['name']=$str_arr[$i][0];
  $array[$str_arr[$i][0]]['old']=$str_arr[$i][1];
  $array[$str_arr[$i][0]]['new']=$str_arr[$i][2];
  $array[$str_arr[$i][0]]['replace']=$str_arr[$i][3];
  }
return $array;
}
//截短字符串
function lenlen($str,$len){
  if($len<=0){
    return false;
  }
  else{
    $sLen=strlen($str);
    if($len>=$sLen)
        return $str;
    else{
        for($i=0;$i<($len-1);$i++){
          if(ord(substr($str,$i,1))>0xa0)
            $i++;
        }
        if($i>=$len)
          return substr($str,0,$len)."...";
        elseif(ord(substr($str,$i,1))>0xa0)
          return substr($str,0,$len-1)."...";
        else
          return substr($str,0,$len);
    }
  }
}
?>
看贴不回者......小心背后~

TOP

呵呵,不知对大家有用没有?
看贴不回者......小心背后~

TOP

怎么把我的代码贴上来了

TOP

发新话题