发新话题
打印

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

复制PHP内容到剪贴板
PHP代码:

<?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这样写:
复制PHP内容到剪贴板
PHP代码:

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

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

<?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内容到剪贴板
PHP代码:

<?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内容到剪贴板
PHP代码:

<?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内容到剪贴板
PHP代码:

<?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内容到剪贴板
PHP代码:

<?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

TOP

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

<?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://bbs.54php.com/
PHP讨论群:7429484,13342238
发新话题