复制内容到剪贴板
代码:
<?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);
}
}
}
?>