三秦IT网在线论坛's Archiver

蓝冰 发表于 2007-5-16 10:20

写了个函数

&lt;?php<BR>/**<BR>* 函数 data_box<BR>* 功能 根据模板输出数据源中的内容<BR>* 参数<BR>* $fun 回调函数,必须提供。作用是从数据源中读取数据。要求返回的最好是关联数组<BR>* $source 数据源,必须提供。可以是数组或查询结果<BR>* $template 模板,可以没有。未提供模板时用标准表格输出数据<BR>* 模板格式:<BR>* array(top=&gt;"",block=&gt;"",fool=&gt;"")<BR>* 其中:<BR>* top 开始部分<BR>* block 可重复部分,变量为关联数组的键,形如$IN_varname。其中前导的IN_可省略<BR>* fool 结束部分<BR>*/<BR>function data_box($_fun,$_source,$_template="") {<BR>$_ar = $_fun(&amp;$_source);<BR>if($_template == "") {<BR>while(list($k,) = each($_ar)) {<BR>$th .= "&lt;th&gt;$k&lt;/th&gt;";<BR>$td .= "&lt;td&gt;/$IN_$k&lt;/td&gt;";<BR>}<BR>$_template = array(top=&gt;"&lt;table border&gt;&lt;tr&gt;$th&lt;/tr&gt;",block=&gt;"&lt;tr&gt;$td&lt;/tr&gt;",fool=&gt;"&lt;/table&gt;");<BR>}else if(! preg_match("//$IN_/w+/",$_template[block]))<BR>$_template[block] = preg_replace("/[/$](/w*)/U","/$IN_//1",$_template[block]);<BR><BR>$buf = eval("return /"$_template[top]/";");<BR>do {<BR>extract($_ar, EXTR_PREFIX_ALL, "IN");<BR>$buf .= eval("return /"$_template[block]/";");<BR>}while($_ar = $_fun(&amp;$_source));<BR>$buf .= eval("return /"$_template[fool]/";");<BR>return $buf;<BR>}<BR><BR>function get_data($source) {<BR>if(list($k,$v) = each($source))<BR>return $v;<BR>return false;<BR>}<BR><BR>$arr = array(<BR>array(a=&gt;1,b=&gt;2,c=&gt;3,11,12,31),<BR>array(a=&gt;11,b=&gt;12,c=&gt;13,11,12,131)<BR>);<BR><BR>echo data_box("get_data",$arr);<BR>echo data_box("get_data",$arr,array(top=&gt;"列表测试&lt;select&gt;",block=&gt;@#&lt;option value=$a&gt;$b@#,fool=&gt;"&lt;/select&gt;&lt;br&gt;"));<BR><BR>$tpl = array(top=&gt;"月历测试&lt;table&gt;&lt;tr bgcolor=@##000000@# style=@#color:#cfcfcf@#&gt;&lt;th&gt;日&lt;/th&gt;&lt;th&gt;一&lt;/th&gt;&lt;th&gt;二&lt;/th&gt;&lt;th&gt;三&lt;/th&gt;&lt;th&gt;四&lt;/th&gt;&lt;th&gt;五&lt;/th&gt;&lt;th&gt;六&lt;/th&gt;&lt;/tr&gt;",block=&gt;@#&lt;tr&gt;&lt;td&gt;$0&lt;/td&gt;&lt;td&gt;$1&lt;/td&gt;&lt;td&gt;$2&lt;/td&gt;&lt;td&gt;$3&lt;/td&gt;&lt;td&gt;$4&lt;/td&gt;&lt;td&gt;$5&lt;/td&gt;&lt;td&gt;$6&lt;/td&gt;&lt;/tr&gt;@#,fool=&gt;"&lt;/table&gt;");<BR><BR>$a = array_merge(array_fill(0,$w=date("w",mktime(0,0,0,date("m"),1,date("Y")))," "),range(1,$d=date("t")),array_fill(0,(7-($w+$d)%7)%7," "));<BR>for($i=0;$i&lt;count($a);$i+=7)<BR>$ar[] = array_slice($a,$i,$i+7);<BR><BR>echo ereg_replace("&lt;td&gt;(".date("d")."&lt;/td&gt;)","&lt;td bgcolor=@##000000@# style=@#color:#ffffff@#&gt;//1",data_box("get_data",$ar,$tpl));<BR><BR>$tpl = array(top=&gt;"分页导航测试&lt;br&gt;",block=&gt;@#共{$0}条[{$1}页] 第{$2}页 {$3} {$4} {$5} {$6}@#,fool=&gt;"");<BR>$record = 20;<BR>$pagesize = 6;<BR>$pages = ceil($record/$pagesize);<BR>$page=2;<BR><BR>$ar = array(<BR>array($record,$pages,$page,<BR>$page&gt;1?"首页":"",<BR>$page&gt;1?"上页":"",<BR>$page&lt;$pages?"下页":"",<BR>$page&lt;$pages?"尾页":""<BR>)<BR>);<BR>echo data_box("get_data",$ar,$tpl);<BR>?&gt;<BR>

页: [1]



Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.