返回列表 回复 发帖

专为新手写的结合smarty的类,诚挚邀请大家多提宝贵意见


<?php

// 分页函数

function m_page($count$current_page 1$rows 10$link_num 7) {

    @
$pages ceil($count $rows);

    
$current_page $pages $current_page $pages true ;

    
$current_page $current_page true;

    
$start = ($current_page 1) * $rows;



    
$start_s floor($current_page $link_num);

    (
$current_page $link_num) == $start_s-- : true;

    
$start_page = ($start_s $link_num) + 1;

    
$prve $start_page 1;

    
$next $start_page $link_num;

    

    for(
$i=0$i $link_num$i++) {

        if(
$start_page $i $pages) {

            break;

        }

        
$links[] = $start_page $i;

    }



    return array(
'rows'=>$rows'prve'=>$prve'next'=>$next'pages'=>$pages'start'=>$start,

    
'count'=>$count'links'=>$links'current_page'=>$current_page);

}

?>

复制代码
////////////////////////////////////////////////////////////////////////////////////////////////////
//  例子, 具体使用的时候可以把输出改为格式化后的html代码,这样就不需要反复的写模板
//////////////////////////////////////////////////////////////////////////////////////////////////

php这样写:

<?

// $tit_nums这个变量为记录总数,$page这个变量为当前页码,第三个参数为每页显示10行,第四个参数为每次显示7个链接例如: << 8,9,10,11,12,13,14 >>这样

$page_arr m_page($tit_nums$page107);

$m->assign($page_arr);

?>

复制代码
模板这样写:
  1. 一共有{$pages}页
  2. 一共有{$count}条数据
  3. 每页显示{$rows}行
  4. {if $prve>1}
  5.   <a href="test.php?page={$prve}">上一页</a>
  6. {/if}
  7. {foreach from=$links item=page_num}
  8.   {if $current_page==$page_num}
  9.     <u>{$page_num}</u>
  10.   {else}
  11.     <a href="test.php?page={$page_num}">{$page_num}</a>
  12.   {/if}
  13. {/foreach}
  14. {if $next<=$page_count}
  15.   <a href="test.php?page={$next}">下一页</a>
  16. {/if}
复制代码
效果类似这样(假设当前在第11页):
  1. 一共有19页
  2. 一共有197条数据
  3. 每页显示10行
  4. <a href="test.php?page=7">上一页</a>
  5.      <a href="test.php?page=8">8</a>
  6.      <a href="test.php?page=9">9</a>
  7.      <a href="test.php?page=10">10</a>
  8.      <u>11</u>
  9.      <a href="test.php?page=12">12</a>
  10.      <a href="test.php?page=13">13</a>
  11.      <a href="test.php?page=14">14</a>
  12. <a href="test.php?page=15">下一页</a>
复制代码
[ 本帖最后由 machine_马 于 2007-4-27 00:55 编辑 ]

<?php

function m_print_r($var) {

    echo 
'<pre>';

    
print_r($var);

    echo 
'</pre>';

}

?>



<?php

function m_var_dump($var) {

    echo 
'<pre>';

    
var_dump($var);

    echo 
'</pre>';

}

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:52 编辑 ]

<?php

// 二维数组排序函数

function m_sort($arr$f_a$m_a SORT_ASC$f_b ''$m_b SORT_ASC$f_c ''$m_c SORT_ASC) {

    
$ok false;

    foreach(
$arr as $rs) {

        foreach(
$rs as $key => $value) {

            ${
"{$key}_x"}[] = $value;

        }

    }

    if(empty(
$f_b)) {

        @
$ok array_multisort(${"{$f_a}_x"}, $m_a $arr);

    } elseif(empty(
$f_c)) {

        @
$ok array_multisort(${"{$f_a}_x"}, $m_a , ${"{$f_b}_x"}, $m_b$arr);

    } else {

        @
$ok array_multisort(${"{$f_a}_x"}, $m_a , ${"{$f_b}_x"}, $m_b, ${"{$f_c}_x"}, $m_c$arr);

    }

    if(!
$ok) {

        die(
"二维数组排序时,参数传递错误。");

    }

    return 
$arr;

}

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:53 编辑 ]

<?php

// 去斜线

function m_stripslashes($gpc) {

    if(
get_magic_quotes_gpc())

    {

        if(
is_array($gpc)) {

            while(list(
$k$v) = each($gpc)) {

                if(
is_array($gpc[$k])) {

                    while (list(
$k2$v2) = each($gpc[$k])) {

                        
$gpc[$k][$k2] = stripslashes($v2);

                    }

                    @
reset($gpc[$k]);

                } else {

                    
$gpc[$k] = stripslashes($v);

                }

            }

            @
reset($gpc);

        } else {

            
$gpc stripslashes($gpc);

        }

    }

    return 
$gpc;

}

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:53 编辑 ]

<?php

// 文本操作函数

// 修改

function m_txt_replace($pattern$text$content) {

    
$pattern_start =  "<!--$pattern-->";

    
$pattern_end =  "<!--/$pattern-->";

    @
$ok preg_match("{{$pattern_start}.*{$pattern_end}}Ssi"$content$match);

    if(
$ok != true) {

        return 
false;

    }

    
$replace "{$pattern_start}{$text}{$pattern_end}";

    
$new_content str_replace($match[0], $replace$content);

    return 
$new_content;

}



// 追加

function m_txt_add($pattern$text$content) {

    
$pattern "<!--{$pattern}-->";

    @
$ok preg_match("{{$pattern}}Ssi"$content);

    if(
$ok != true) {

        return 
false;

    }

    
$add "{$text}\n{$pattern}";

    
$new_content str_replace($pattern$add$content);

    return 
$new_content;

}



// 删除

function m_txt_delete($pattern$content) {

    
$pattern_start =  "<!--$pattern-->";

    
$pattern_end =  "<!--/$pattern-->";

    @
$ok preg_match("{{$pattern_start}.*{$pattern_end}}Ssi"$content$match);

    if(
$ok != true) {

        return 
false;

    }

    
$new_content str_replace($match[0], ''$content);

    return 
$new_content;

}



//获取

function m_txt_get($pattern$content) {

    
$pattern_start =  "<!--$pattern-->";

    
$pattern_end =  "<!--/$pattern-->";

    @
$ok preg_match("{{$pattern_start}.*{$pattern_end}}Ssi"$content$match);

    if(
$ok != true) {

        return 
false;

    }

    return 
$match[0];

}

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:54 编辑 ]

<?php

// 上传函数

function m_up_file($files$up_url$type$max_size 2097152) {

    
$i 0;

    if(!
is_array($files)) {

        die(
'参数传递错误');

    }

    
$type_pattern is_array($type) ? '\.('.implode(")|("$type).')' "\.($type)";

    

    foreach(
$files as $key => $arr) {

        
$ok false;

        if(
$arr['error'] == 0) {

            if(!
is_uploaded_file($arr['tmp_name'])) {

                
$err_msg .= "文件:<b>{$arr['name']}</b>不可上传<br>";

                continue;

            } elseif(
$_FILES['up_file']['size'] > $max_size) {

                
$err_msg .= "文件:<b>{$arr['name']}</b>上传失败,原因是:文件超过限定大小<br>";

                continue;

            } elseif(!
preg_match("!{$type_pattern}!Si"$arr['name'])) {

                
$err_msg .= "文件<b>{$arr['name']}</b>上传失败,原因是:格式不正确<br>";

                continue;

            } else {

                
$txt substr(str_shuffle('abcdefghijklmnopqrstuvwxyz'), -4);

                
$hz strtolower(strstr($arr['name'], '.'));

                
$new_name date('YmdHis').$txt.$hz;

                if(
is_array($up_url)) {

                    
$hz_key str_replace('.'''$hz);

                    
$up_url_arr = array();

                    foreach(
$up_url as $url_key => $value) {

                        
$key_arr explode('|'$url_key);

                        
$key_arr array_combine($key_arrarray_pad(array(), count($key_arr), $value));

                        
$up_url_arr array_merge($up_url_arr$key_arr);

                    }

                    
$up_url_arr array_change_key_case($up_url_arrCASE_LOWER);

                    !
preg_match('!\/$!'$up_url_arr[$hz_key]) ? $up_url_arr[$hz_key] .= '/' true;

                    
$new_url $up_url_arr[$hz_key];

                } else {

                    !
preg_match('!\/$!'$up_url) ? $up_url .= '/' true;

                    
$new_url $up_url;

                }

                if(!
file_exists(THIS_DIR.$new_url)) {

                    die(
"系统错误:上传文件夹{$new_url}不存在。");

                }

                @
$ok move_uploaded_file($arr['tmp_name'], THIS_DIR.$new_url.$new_name);

            }

        }

        if(
$ok == true) {

            
$rs[$i]['url'] = $new_url;

            
$rs[$i]['name'] = $arr['name'];

            
$rs[$i]['type'] = strtoupper(str_replace('.'''$hz));

            
$i++;

        } elseif(!empty(
$arr['name'])) {

            
$err_msg .= "文件<b>{$arr['name']}</b>上传出错<br>";

            continue;

        }

    }

    return array(
'arr' => $rs'err_msg' => $err_msg'num' => $i);

}

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:54 编辑 ]
支持 创新!
我就是 我!
http://blog.48474.com
谢谢上面的兄弟支持,只是如果能再给点建议发表点评论就更好了。
为了便于大家理解,放一个例子吧,没有特意去写例子,这个是我的一个程序中的目录树部分。
还有,不是偶说,好歹也是原创阿,我很尽心写的,咋就这么冷清呢?连管理员都不回复
我可是浏览过斑竹守则的哦,里面有说道要鼓励发帖,特别是原创的帖子。
拜托,各位高手们,来看看,提提意见吧。看完觉得不爽骂我两句都行,有交流才有提高啊,拜托各位DX了。

<?php

/********************************************************************

* 文件头

*******************************************************************/

define('THIS_DIR''../');

if(@!include_once(
THIS_DIR.'inc/head.php')) die('系统错误:系统文件丢失');

//设置静态页面永不过期

$m->goto_html(-1'html/bbs');

//载入m_sort函数

$m->load_func('m_sort');



/********************************************************************

* 读取所有的板块

*******************************************************************/

$block_part_res $m->send_query('

    SELECT        part_id, part_layer, part_name, part_index, part_show

    FROM        '
.BLOCK_PART_TABLE.'

    ORDER BY    part_layer'
);

//配置二层循环数组,

$i=-1;$j=0;

while(
$rs mysql_fetch_assoc($block_part_res)) {

    
//如果整除10000,则说明该板块是一级板块(本系统只需二级板块,多级以此类推)

    
if($rs['part_layer'] % 10000 == 0) {

        
$i++;$j=0;

        
$part_rs[$rs['part_show']][$i] = $rs;

    } else {

        
$part_rs[$rs['part_show']][$i]['arr'][$j] = $rs;

        
$j++;

    }

}

//这里就是典型的对二维数组排序了,将板块按part_ind

if(!empty($part_rs['Y'])) {

    
$part_rs['Y'] = m_sort($part_rs['Y'], 'part_index'SORT_ASC);

}

if(!empty(
$part_rs['N'])) {

    
$part_rs['N'] = m_sort($part_rs['N'], 'part_index'SORT_ASC);

}

$m->assign(array('this_url'=>'../../''op_menu'=>$part_rs['N'], 'menu'=>$part_rs['Y']));

$m->create_html($tpl_arr['bbs_tree_tpl'], 'html/bbs');

?>

复制代码
[ 本帖最后由 machine_马 于 2006-12-29 12:56 编辑 ]
附件: 您所在的用户组无法下载或查看附件

辛苦了,没得说的,收藏慢慢看!!谢谢楼主!!

:) 非常的好,受益了!
感谢楼主提供这么好的资料信息.
http://www.54php.com/
PHP讨论群:7429484,13342238
返回列表