首页 | PHP资讯 | 技术专栏 | 资源共享 | PHP培训 | PHP职场 | 图书 | PHP ON WIN | PHP圈子
返回列表 回复 发帖

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

[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 < 1 ? $current_page = 1 : true;
        $start = ($current_page - 1) * $rows;

        $start_s = floor($current_page / $link_num);
        ($current_page % $link_num) == 0 ? $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);
}
?>
[/php]

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

php这样写:

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


模板这样写:
[code]
一共有{$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}
[/code]

效果类似这样(假设当前在第11页):
[code]
一共有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>
[/code]

[ 本帖最后由 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]<?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;
}
?>[/php]

[ 本帖最后由 machine_马 于 2006-12-29 12:53 编辑 ]
[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;
}
?>
[/php]

[ 本帖最后由 machine_马 于 2006-12-29 12:53 编辑 ]
[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];
}
?>
[/php]

[ 本帖最后由 machine_马 于 2006-12-29 12:54 编辑 ]
[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_arr, array_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_arr, CASE_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);
}
?>
[/php]

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

[ 本帖最后由 machine_马 于 2006-12-29 12:56 编辑 ]
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

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

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