EcStart PHP 技術討論論壇's Archiver

kathy1986 發表於 2008-10-2 16:14

分頁顯示資料的問題

分頁程式已寫好,但在htm的部份不知如何把它顯示出來

程式部份
<?php
    require "config.php";
    $query = "SELECT * FROM $manager order by no";
    $result = mysql_query($query) or die("Query failed");      
    $std = array();
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($std, $line);
    }
   $PageSize = 10;      
   $sql  = "select no,id,file,type,name from $img order by id desc";
   $rs    =   mysql_query($sql,$link);
   $total =   mysql_num_rows($rs);
   $page_count = ceil($total / $PageSize);  
   $rows = ($page -1) * $PageSize;   
   $result = mysql_query($sql ." LIMIT ".$rows.",".$PageSize);
   $page_string = '<a href=?page=1>第一頁</a>|';   
   if( $page - 1 )   
   $page_string .= '<a href=?page='.($page-1).'>上一頁</a>|';   
   else  
   $page_string .= '上一頁';     
   $nextpage = ($page == $page_count) ? 0 : $page+1;   
   if($nextpage)   
   $page_string .= '<a href=?page='.($page+1).'>下一頁</a>';   
   else  
   $page_string .= '下一頁';      
   $page_string .= "|<a href=?page=$page_count>最後一頁</a>";     
   $tpl->assign("page_string", $page_string);
?>

htm部份
<html>
<head>
<meta http-equiv="Content-Type" c>
</head>
<body>
<div align="center">
  <p><br>
  </p>
</div>
<table align=center cellspacing=0 cellpadding=0><tr><td bgcolor="#FFCCCC">
      
                <table cellspacing=1 cellpadding=3 border=0>
                        <tr bgcolor=#ff69b4>
                           <td align=center>
                              姓 名
                           </td>
                        </tr>
<{section name=show_name loop=$img}>
<{if $smarty.section.show_name.rownum is div by 1  && $smarty.section.show_name.rownum < $smarty.section.show_name.total}>
<td align=center nowrap>
<a href="pic.php?no=<{$img[show_name].no}>"><{$img[show_name].name}>
</a>
</tr>
    <tr>
<{/if}><{/section}>                        


</table> </td></tr></table>
<div class="change_page" align="center"><{$page_string}>
</div>
</body>
</html>

試了很多方法,還是只能顯示出全部的資料,或者是前10筆,或者是最後幾筆的....
剛接觸smarty...還是不太懂...請大大幫幫忙

FIEND 發表於 2008-10-2 17:20

邏輯沒有搞清礎 assign 進去的資料沒有 整理好 很亂  .

這是我三年前寫的 你參考看看我的寫法 如果你 看不懂 可以畫一下流程圖 應該可以加強你的邏輯能力 .

搞懂邏輯後 這種功能就沒什麼難的了  .


page function :[code]####################################################################################################
// $ecstart["input"]["get"] get 陣列變數
// $max_page 最大頁數
// $max_range 每多少頁數為一週期

function ecstart_record_page($ecstart , $max_page ,$max_range , $rows){
        if(!isset($ecstart["input"]["get"]["p"])){$ecstart["input"]["get"]["p"] = "" ;}
        if(trim($ecstart["input"]["get"]["p"])=="" or $ecstart["input"]["get"]["p"] < 1){$ecstart["input"]["get"]["p"] = 1  ; }
        $lastpage = ceil($rows/$max_page);
        if($ecstart["input"]["get"]["p"] > $lastpage){ $ecstart["input"]["get"]["p"]=1 ;}
        $rec_start= ($ecstart["input"]["get"]["p"]-1)*$max_page +1;
        $rec_end  = $rec_start + $max_page -1;
        $ploops   = floor(($ecstart["input"]["get"]["p"]-1)/$max_range)*$max_range + 1 ;
        $ploope   = $ploops + $max_range -1;
        if($ploope >= $lastpage){ $ploope=$lastpage;}
        $ppg      = $ecstart["input"]["get"]["p"] - 1 ;
        $npg      = $ecstart["input"]["get"]["p"] + 1 ;
        if($ppg<= 0) $ppg=$lastpage;
        if($npg > $lastpage) $npg=1;
        if($rec_end > $rows) $rec_end=$rows;

        $ecstart_page["rec_start"]       = $rec_start ;
        $ecstart_page["rec_end"]         = $rec_end ;
        $ecstart_page["firstpage"]       = 1 ;
        $ecstart_page["lastpage"]        = $lastpage ;
        $ecstart_page["previousrange"]   = $ploops - $max_range ;
        $ecstart_page["nextrange"]       = $ploops + $max_range ;
        $ecstart_page["previouspage"]    = $ppg ;
        $ecstart_page["nextpage"]        = $npg ;
        $ecstart_page["thispage"]        = $ecstart["input"]["get"]["p"] ;
        $ecstart_page["total"]           = $rows ;
        $ecstart_page["loop"]            = $lastpage+1 ;
        for($i=$ploops;$i <= $ploope;$i++){
                $ecstart_page["item"][]["p"] = $i ;
        }
        return $ecstart_page;
}[/code]smarty :[code]                <!--{if $page.total > 0}-->
                        <a href="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$page.firstpage}--><!--{if $status.wizard !=''}-->&wizard=<!--{$status.wizard}--><!--{/if}--><!--{if $parameters.last_fun !=''}-->&last_fun=<!--{$parameters.last_fun}--><!--{/if}--><!--{if $parameters.status !=''}-->&status=<!--{$parameters.status}--><!--{/if}-->" class="link">最前頁</a> |
                        <a href="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$page.previouspage}--><!--{if $status.wizard !=''}-->&wizard=<!--{$status.wizard}--><!--{/if}--><!--{if $parameters.last_fun !=''}-->&last_fun=<!--{$parameters.last_fun}--><!--{/if}--><!--{if $parameters.status !=''}-->&status=<!--{$parameters.status}--><!--{/if}-->" class="link">上一頁</a> |
                        <!--{section name=loop1 loop=$page.item}-->
                        <!--{if $page.item[loop1].p == $page.thispage}-->
                        <b>[<!--{$page.item[loop1].p}-->]</b>
                        <!--{else}-->
                        <a href="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$page.item[loop1].p}--><!--{if $status.wizard !=''}-->&wizard=<!--{$status.wizard}--><!--{/if}--><!--{if $parameters.last_fun !=''}-->&last_fun=<!--{$parameters.last_fun}--><!--{/if}--><!--{if $parameters.status !=''}-->&status=<!--{$parameters.status}--><!--{/if}-->" class="link"><!--{$page.item[loop1].p}--></a>
                        <!--{/if}-->
                        <!--{/section}-->
                          |
                        <a href="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$page.nextpage}--><!--{if $status.wizard !=''}-->&wizard=<!--{$status.wizard}--><!--{/if}--><!--{if $parameters.last_fun !=''}-->&last_fun=<!--{$parameters.last_fun}--><!--{/if}--><!--{if $parameters.status !=''}-->&status=<!--{$parameters.status}--><!--{/if}-->" class="link">下一頁</a> |
                        <a href="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$page.lastpage}--><!--{if $status.wizard !=''}-->&wizard=<!--{$status.wizard}--><!--{/if}--><!--{if $parameters.last_fun !=''}-->&last_fun=<!--{$parameters.last_fun}--><!--{/if}--><!--{if $parameters.status !=''}-->&status=<!--{$parameters.status}--><!--{/if}-->" class="link">最終頁</a>
                        </span>
                         
                        <!--{if $page.lastpage > 0}-->
                        <select name="page" size="1" onChange="location.href=this.options[this.selectedIndex].value;" class="select-01">
                                    <!--{section name=p loop=$page.loop start=$page.firstpage max=$page.lastpage step=1}-->
                                     <option value="./?action=<!--{$status.path.action}-->&fun=<!--{$status.path.fun}-->&permit=<!--{$status.path.permit}--><!--{$status.path.search}--><!--{$status.path.sort}-->&p=<!--{$smarty.section.p.index}-->&wizard=<!--{$status.wizard}-->&last_fun=<!--{$parameters.last_fun}-->" <!--{if $smarty.request.p == $smarty.section.p.index}-->selected<!--{/if}-->>
                                        <!--{$smarty.section.p.index}-->
                                    </option>
                                   <!--{/section}-->
                        </select>
                        <!--{/if}-->
                <!--{/if}-->[/code]下面是 smarty assign 進去的 array .

你參照它 比對上述

function  和 page array 就明白了 .[code]Array
(
    [SCRIPT_NAME] => /register/admin/index.php
    [parameters] => Array
        (
            [default_title] => XX大學線上報名系統
            [copyright] => Copyright (C) 2005 EcStart All rights reserved .
            [request_uri] => /register/admin/?action=module&fun=fun&permit=view&show_me_the_var=1
            [charset] => Big5
            [action] => module
            [fun] => fun
            [permit] => view
            [show_me_the_var] => 1
        )

    [user] => Array
        (
            [prefixid] => ecstart
            [id] => 2
            [groupid] => super
            [deptid] => 100
            [memberid] => FIEND
            [idcard] =>
            [passwd] => d4d511cf5a6695b486391fd80c0xxxxx
            [email] => fiend@ecstart.com
            [sex] => 1
            [mobile] =>
            [realname] => 黃xx
            [tel] => 0952719xxx
            [fax] =>
            [address] =>
            [idatetime] => 2005-09-10 00:16:53
            [sdatetime] => 2007-10-18 23:54:59
            [odatetime] => 0000-00-00 00:00:00
            [status] => Y
        )

    [record] => Array
        (
            [0] => Array
                (
                    [no] => 1
                    [sno] => 1
                    [prefixid] => ecstart
                    [id] => member
                    [pjid] => member
                    [name] => 會員系統
                    [node] => 0
                    [layer] => 1
                    [link] =>
                    [seq] => 10
                    [descript] =>
                    [message] => 您沒有管理此項的權限
                    [open] => Y
                    [idatetime] => 0000-00-00 00:00:00
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [1] => Array
                (
                    [no] => 2
                    [sno] => 2
                    [prefixid] => ecstart
                    [id] => usergms
                    [pjid] => member
                    [name] => 會員群組
                    [node] => member
                    [layer] => 2
                    [link] =>
                    [seq] => 11
                    [descript] => 管理會員資料


                    [message] => 您沒有會員管理此項權的權限
                    [open] => Y
                    [idatetime] => 2005-05-29 12:39:25
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [2] => Array
                (
                    [no] => 3
                    [sno] => 3
                    [prefixid] => ecstart
                    [id] => dept
                    [pjid] => member
                    [name] => 單位管理
                    [node] => member
                    [layer] => 2
                    [link] =>
                    [seq] => 11
                    [descript] => 單位管理
                    [message] => 您沒有會員管理此項權的權限
                    [open] => Y
                    [idatetime] => 2005-05-29 12:39:25
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [3] => Array
                (
                    [no] => 4
                    [sno] => 4
                    [prefixid] => ecstart
                    [id] => userms
                    [pjid] => member
                    [name] => 會員管理
                    [node] => member
                    [layer] => 2
                    [link] =>
                    [seq] => 12
                    [descript] => 管理會員資料
                    [message] => 您沒有會員管理此項權的權限
                    [open] => Y
                    [idatetime] => 2005-05-29 12:21:47
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [4] => Array
                (
                    [no] => 5
                    [sno] => 5
                    [prefixid] => ecstart
                    [id] => permitms
                    [pjid] => permitms
                    [name] => 系統權限管理
                    [node] => 0
                    [layer] => 1
                    [link] =>
                    [seq] => 120
                    [descript] =>
                    [message] => 您沒有管理此項的權限
                    [open] => Y
                    [idatetime] => 0000-00-00 00:00:00
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [5] => Array
                (
                    [no] => 6
                    [sno] => 6
                    [prefixid] => ecstart
                    [id] => project
                    [pjid] => permitms
                    [name] => 專案
                    [node] => permitms
                    [layer] => 2
                    [link] =>
                    [seq] => 121
                    [descript] =>
                    [message] => 您沒有管理此項的權限
                    [open] => Y
                    [idatetime] => 2005-06-15 23:01:44
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [6] => Array
                (
                    [no] => 7
                    [sno] => 7
                    [prefixid] => ecstart
                    [id] => fun
                    [pjid] => permitms
                    [name] => 功能設定
                    [node] => permitms
                    [layer] => 2
                    [link] =>
                    [seq] => 122
                    [descript] => 設定功\能
                    [message] => 您沒有管理此項的權限
                    [open] => Y
                    [idatetime] => 0000-00-00 00:00:00
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [7] => Array
                (
                    [no] => 8
                    [sno] => 8
                    [prefixid] => ecstart
                    [id] => permit
                    [pjid] => permitms
                    [name] => 系統群組權限設定
                    [node] => permitms
                    [layer] => 2
                    [link] =>
                    [seq] => 123
                    [descript] => 根據群組設定權限
                    [message] => 您沒有群組權限設定的管理權限
                    [open] => Y
                    [idatetime] => 0000-00-00 00:00:00
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [8] => Array
                (
                    [no] => 9
                    [sno] => 9
                    [prefixid] => ecstart
                    [id] => permitdump
                    [pjid] => permitms
                    [name] => 重設權限
                    [node] => permitms
                    [layer] => 2
                    [link] => ./dumpdata/permit.php
                    [seq] => 124
                    [descript] => 重設權限
                    [message] => 您沒有管理此項的權限
                    [open] => Y
                    [idatetime] => 2005-08-14 13:22:06
                    [sdatetime] => 0000-00-00 00:00:00
                )

            [9] => Array
                (
                    [no] => 10
                    [sno] => 10
                    [prefixid] => ecstart
                    [id] => services
                    [pjid] => permitms
                    [name] => 服務名稱
                    [node] => permitms
                    [layer] => 2
                    [link] =>
                    [seq] => 125
                    [descript] =>
                    [message] =>
                    [open] => Y
                    [idatetime] => 0000-00-00 00:00:00
                    [sdatetime] => 0000-00-00 00:00:00
                )

        )

    [rt] => Array
        (
            [project] => Array
                (
                    [0] => Array
                        (
                            [id] => classms
                            [name] => 課程管理
                        )

                    [1] => Array
                        (
                            [id] => member
                            [name] => 會員系統
                        )

                    [2] => Array
                        (
                            [id] => permitms
                            [name] => 系統權限系統
                        )

                )

        )

    [status] => Array
        (
            [sitmap] => Array
                (
                    [thisfun] => fun
                    [thispermit] => view
                    [thisnode] => permitms
                    [thislayer] => 2
                    [thisname] => 功能設定
                    [nodefun] => permitms
                    [nodelayer] => 1
                    [nodename] => 系統權限管理
                )

            [message] => 您沒有管理此項的權限
            [list] => 1,2,3,4,5,6,7,8,9,10
            [path] => Array
                (
                    [action] => module
                    [fun] => fun
                    [permit] => view
                    [search] =>
                    [sort] =>
                )

            [search] =>
            [sort] =>
        )

    [page] => Array
        (
            [rec_start] => 1
            [rec_end] => 10
            [firstpage] => 1
            [lastpage] => 2
            [previousrange] => -9
            [nextrange] => 11
            [previouspage] => 2
            [nextpage] => 2
            [thispage] => 1
            [total] => 15
            [loop] => 3
            [item] => Array
                (
                    [0] => Array
                        (
                            [p] => 1
                        )

                    [1] => Array
                        (
                            [p] => 2
                        )

                )

        )

)[/code]

kathy1986 發表於 2008-10-3 14:12

不好意思...我試了好久還是不行...又要麻煩板大了...= =
試了好多的板本都不行...只好勉強放上沒有出錯但內容出不來的板本請板大幫幫忙了.....

<?
// $ecstart["input"]["get"] get 陣列變數
// $max_page 最大頁數
// $max_range 每多少頁數為一週期
require "config.php";
    $query = "select * from $cfg_img";
    $result = mysql_query($query,$link) or die("Query failed");
    $total =   mysql_num_rows($result);
    $std = array();
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($std, $line);
    }
    mysql_free_result($result);
    function ecstart_record_page($ecstar, $max_page,$max_range=10, $rows=10){
    global $total;
    $max_page = $total;
        if(!isset($ecstart["input"]["get"]["p"])){$ecstart["input"]["get"]["p"] = "" ;}
        if(trim($ecstart["input"]["get"]["p"])=="" or $ecstart["input"]["get"]["p"] < 1){$ecstart["input"]["get"]["p"] = 1  ; }
        $lastpage = ceil($rows/$max_page);
        if($ecstart["input"]["get"]["p"] > $lastpage){ $ecstart["input"]["get"]["p"]=1 ;}
        $rec_start= ($ecstart["input"]["get"]["p"]-1)*$max_page +1;
        $rec_end  = $rec_start + $max_page -1;
        $ploops   = floor(($ecstart["input"]["get"]["p"]-1)/$max_range)*$max_range + 1 ;
        $ploope   = $ploops + $max_range -1;
        if($ploope >= $lastpage){ $ploope=$lastpage;}
        $ppg      = $ecstart["input"]["get"]["p"] - 1 ;
        $npg      = $ecstart["input"]["get"]["p"] + 1 ;
        if($ppg<= 0) $ppg=$lastpage;
        if($npg > $lastpage) $npg=1;
        if($rec_end > $rows) $rec_end=$rows;
        $ecstart_page["rec_start"]       = $rec_start ;
        $ecstart_page["rec_end"]         = $rec_end ;
        $ecstart_page["firstpage"]       = 1 ;
        $ecstart_page["lastpage"]        = $lastpage ;
        $ecstart_page["previousrange"]   = $ploops - $max_range ;
        $ecstart_page["nextrange"]       = $ploops + $max_range ;
        $ecstart_page["previouspage"]    = $ppg ;
        $ecstart_page["nextpage"]        = $npg ;
        $ecstart_page["thispage"]        = $ecstart["input"]["get"]["p"] ;
        $ecstart_page["total"]           = $rows ;
        $ecstart_page["loop"]            = $lastpage+1 ;
        for($i=$ploops;$i <= $ploope;$i++){
                $ecstart_page["item"][]["p"] = $i ;
}
        return $rec_start;
}
echo $page.total;
$tpl->assign("page.item", ecstart_record_page($ecstar, $max_page,$max_range=10, $rows=10));
$tpl->assign("img", $std);
$tpl->display('3.htm');
?>



<{section name=show_name loop=$img}>
<{$img[show_name].name}>
<{/section}>
<{if $page.total > 0}>
                        <a href="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$page.firstpage}><{if $status.wizard !=''}>&wizard=<{$status.wizard}><{/if}><{if $parameters.last_fun !=''}>&last_fun=<{$parameters.last_fun}><{/if}><{if $parameters.status !=''}>&status=<{$parameters.status}><{/if}>" class="link">最前頁</a> |
                        <a href="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$page.previouspage}><{if $status.wizard !=''}>&wizard=<{$status.wizard}><{/if}><{if $parameters.last_fun !=''}>&last_fun=<{$parameters.last_fun}><{/if}><{if $parameters.status !=''}>&status=<{$parameters.status}><{/if}>" class="link">上一頁</a> |
                        <{section name=loop1 loop=$page.item}>
                        <{if $page.item[loop1].p == $page.thispage}>
                        <b>[<{$page.item[loop1].p}>]</b>
                        <{else}>
                        <a href="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$page.item[loop1].p}><{if $status.wizard !=''}>&wizard=<{$status.wizard}><{/if}><{if $parameters.last_fun !=''}>&last_fun=<{$parameters.last_fun}><{/if}><{if $parameters.status !=''}>&status=<{$parameters.status}><{/if}>" class="link"><{$page.item[loop1].p}></a>
                        <{/if}>
                        <{/section}>
                          |
                        <a href="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$page.nextpage}><{if $status.wizard !=''}>&wizard=<{$status.wizard}><{/if}><{if $parameters.last_fun !=''}>&last_fun=<{$parameters.last_fun}><{/if}><{if $parameters.status !=''}>&status=<{$parameters.status}><{/if}>" class="link">下一頁</a> |
                        <a href="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$page.lastpage}><{if $status.wizard !=''}>&wizard=<{$status.wizard}><{/if}><{if $parameters.last_fun !=''}>&last_fun=<{$parameters.last_fun}><{/if}><{if $parameters.status !=''}>&status=<{$parameters.status}><{/if}>" class="link">最終頁</a>
                        </span>
                         
                        <{if $page.lastpage > 0}>
                        <select name="page" size="1" onChange="location.href=this.options[this.selectedIndex].value;" class="select-01">
                                    <{section name=p loop=$page.loop start=$page.firstpage max=$page.lastpage step=1}>
                                     <option value="./?action=<{$status.path.action}>&fun=<{$status.path.fun}>&permit=<{$status.path.permit}><{$status.path.search}><{$status.path.sort}>&p=<{$smarty.section.p.index}>&wizard=<{$status.wizard}>&last_fun=<{$parameters.last_fun}>" <{if $smarty.request.p == $smarty.section.p.index}>selected<{/if}>>
                                        <{$smarty.section.p.index}>
                                    </option>
                                   <{/section}>
                        </select>
                        <{/if}>
                <{/if}>


看起來好像沒啥改到...但是我真的有試著去改了...
煩麻板大了...sorry...佔用你的時間

kathy1986 發表於 2008-10-3 14:17

還有...我還有一個怪問題...
為什麼板大的htm程式部份要用<!--{}-->...我用了之後好像沒反應...
要用<{ }>才有反應...
是因為這個嗎???
$tpl->left_delimiter = '<{';
$tpl->right_delimiter = '}>';
可是我改了
$tpl->left_delimiter = '<!--{';
$tpl->right_delimiter = '}-->';
也是沒反應...

FIEND 發表於 2008-10-3 18:37

[quote]原帖由 [i]kathy1986[/i] 於 2008-10-3 14:17 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=89786&ptid=33681][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]
還有...我還有一個怪問題...
為什麼板大的htm程式部份要用...我用了之後好像沒反應...
要用才有反應...
是因為這個嗎???
$tpl->left_delimiter = '';
可是我改了
$tpl->left_delimiter = '';
也是沒反應... [/quote][code]############################################################################
# new smarty obj  start
############################################################################
//define( 'SMARTY_LEFT_DELIMITER', '<!--{' );
//define( 'SMARTY_RIGHT_DELIMITER', '}-->' );
include_once $path_class."/template/libs/Smarty.class.php";
$smarty = new Smarty;
$smarty->left_delimiter ='<!--{' ;
$smarty->right_delimiter='}-->' ;
$smarty->compile_dir = $path_ecstart."/data/smarty";
$smarty->use_sub_dirs = !ini_get('safe_mode');
############################################################################[/code]這是我的 code ...
你看看那裡不對 對照一下 .

FIEND 發表於 2008-10-3 18:41

那支 function 不是直接給 它 10 , 10 就可以動了 .

你還要去跟 query 語法做結合 .

kathy1986 發表於 2008-10-6 18:00

[quote]原帖由 [i]FIEND[/i] 於 2008-10-3 18:37 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=89800&ptid=33681][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]
############################################################################
# new smarty obj  start
############################################################################
//define( 'SMARTY_L ... [/quote]



感謝板大的回答....
這個部分已解決...
但是分頁部分還在努力中....一直出不來.....= =
哎...之前用php可以做出來的東西改成smarty之後好多不會用的....

FIEND 發表於 2008-10-6 18:12

[quote]原帖由 [i]kathy1986[/i] 於 2008-10-6 18:00 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=89882&ptid=33681][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]




感謝板大的回答....
這個部分已解決...
但是分頁部分還在努力中....一直出不來.....= =
哎...之前用php可以做出來的東西改成smarty之後好多不會用的.... [/quote]

重點是會不會用 .. 習不習慣不重要 ..

[color=Red]大部份的人都以為 用 smarty 只能將 版型和程式分離... ( 如果目的只是這樣 web 的設計功力還太膚淺 )[/color]

在使用上 可以發現 smarty 可以將 資料邏輯 和 展示邏輯 切出來 ...

設法讓 資料邏輯 和 展示邏輯 達到一致性 , 可以讓 模組的延展性很高 .

假設 今天寫過的展示邏輯 , 可以切的很漂亮 .

那資料邏輯的部份 只要丟對應的參數 , 一百多支程式都可以同時套用同一個展示邏輯 .

一來 加快程式的開發速度

二來 減少 debug 和維護的問題.

整個 架構在設計時是如何思考要怎麼去用 smarty .

不習慣是很正常的 , 如果 只是覺得用了它很 炫 跟別人不一樣...

沒有了解它真正的好處 那不如不要用 因為並沒有減輕你的工作量.

況且 smarty 的效能其實是很慢的 ( 它雖然遠比其它 template obj 快 ) , 但還是遠比你直接寫在 html 上慢多了 .

kathy1986 發表於 2008-10-15 15:52

呼...終於把分頁用好了...雖然到最後不是用板大提供的程式碼...不過板大的回答也是對我很有幫助...
這次的問題雖然解決了...不過依我這個新手來講,一定還會遇到問題,到時後還請板大多多費心了...

最近比較忙...改天比較有空時,再把我的程式碼整理一下po上來...

FIEND 發表於 2008-10-16 11:26

[quote]原帖由 [i]kathy1986[/i] 於 2008-10-15 15:52 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=90244&ptid=33681][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]
呼...終於把分頁用好了...雖然到最後不是用板大提供的程式碼...不過板大的回答也是對我很有幫助...
這次的問題雖然解決了...不過依我這個新手來講,一定還會遇到問題,到時後還請板大多多費心了...

最近比較忙.. ... [/quote]

恭喜~~ ^^

kathy1986 發表於 2008-10-20 17:46

雖然我也是抓別人的程式來改的…
還是po上來給有需要的人參考看看吧…
第一次po不知會不會太亂……有需要的人看看吧!!還是有覺得我的程式寫不好或有問題的也請指教…

function.pager.php
<?php
function smarty_function_pager($params, &$smarty)
{
       
        $posvar = 'pos';
       

        $separator = ' &laquo;&laquo; ';
        $class_text = 'nav';
        $class_num = 'small';
        $class_numon = 'big';

        $txt_pos = 'bottom';                                       


       
        $txt_prev = '上一頁';                                       
        $txt_next = '下一頁';                               
        $txt_first = 'More';               

        foreach($params as $key=>$value)        {
                $tmps[strtolower($key)] = $value;
                $tmp = strtolower($key);
                if (!(${$tmp} = $value))        {
                        ${$tmp} = '';
                }
        }       

        $minVars = array('limit');
        foreach($minVars as $tmp)  {
                if (empty($params[$tmp]))        {
                        $smarty->trigger_error('plugin "pager": missing or empty parameter: "'.$tmp.'"');
                }
        }

        if ($txt_pos == 'middle')        {
                $txt_pos = 'side';
        }
        if (!in_array($txt_pos, array('side', 'top', 'bottom'))) {
                        $smarty->trigger_error('plugin "pager": bad value for : "txt_pos"');
        }

        if (is_array($rowcount))        {
                $rowcount = count($rowcount);
        }
        if ($rowcount <= $limit)        {
                return '';
        }
        if (!empty($no_first))        {
                unset($txt_first);
        }

        if (!is_array($forwardvars))        {
                $forwardvars = preg_split('/[,;\s]/', $forwardvars, PREG_SPLIT_NO_EMPTY);
        }

        $pos = $_REQUEST[$posvar];
        $pages = array();

        $removeVars = array($posvar, '_rc');
        $url = $_SERVER['REQUEST_URI'];
        foreach($removeVars as $tmp)        {
                $url = preg_replace('/&'.$tmp.'\=[^&]*/', '', $url);
        }
       
    $link_tag = substr_count($url,"php?") > 0 ? "&" : "?";

        if ((empty($pos) OR ($pos < 1)) AND ($rowcount > $limit))        {
                if (!empty($firstpos))        {
                        $url .= $link_tag.$posvar.'='.$firstpos;
                } elseif ($pos == -1)        {
                        $url .= $link_tag.$posvar.'=1';
                } else        {
                        $url .= $link_tag.$posvar.'='.$limit;
                }
                foreach ((array)$forwardvars as $tmp)        {
                        if (!empty($tmp) AND (!empty($_REQUEST[$tmp])))
                                $url .= '&'.$tmp.'='.$_REQUEST[$tmp];
                }
                $short['first'] = $url;
        }

        if ($rowcount > $limit)  {
                if ($rowcount < ($limit * 30))        {
                        for ($i=1; $i < $rowcount+1; $i+=$limit)        {
                                if (($pos+1 >=$i) and ($pos+1 < ($i+$limit)) )                {
                                        $short['now'] = $i;
                                }
                                $pages[$i] = $url.'&'.$posvar.'='.($i-1);
                        }
                } else {
                        for ($i=1;$i < ($pos-16*$limit); $i+=10*$limit)        {
                                $pages[$i] = $url.'&'.$posvar.'='.($i-1);
                        }
                        for ($tmp=1;($i < $pos+16*$limit) AND ($i < $rowcount+1); $i += $limit)        {
                                if (($pos+1 >= $i) and ($pos+1 < ($i+$limit)) )        {
                                        $short['now'] = $i;
                                }
                                $pages[$i] = $url.'&'.$posvar.'='.($i-1);
                        }
                        for ($tmp=1;$i < $rowcount+1; $i += 10*$limit)        {
                                $pages[$i] =  $url.'&'.$posvar.'='.($i-1);
                        }
                }
                if ($pos >= $limit)        {
                        $short['prev'] = $url.'&'.$posvar.'='.($pos - $limit);
                }

                if ( ($pos) < ($rowcount-$limit))        {
                        $short['next'] = $url.'&'.$posvar.'='.($pos + $limit);
                }
        }
        if (($pos == 0)        AND ((!empty($txt_first)) OR !empty($img_first))){
                print '<p align="center">';
                print '<a class="'.$class_text.'" href="'.$short['first'].'">';
               
                if (!empty($img_first))        {
                        if (preg_match('/\</', $img_first)) {
                                print $img_first;
                        } else {
                                print '<img src="'.$img_first.'" border="0" />';
                        }
                } else        {
                        print $txt_first;
                }
                print '</a></p>'."\n";
        } else        {
                if ($pos >= $limit)        {
                        $cache['prev'] = '<a class="'.$class_text.'" href="'.$short['prev'].'">';
                        if (!empty($img_prev))        {
                                if (preg_match('/\</', $img_prev)) {
                                        $cache['prev'] .= $img_prev;
                                } else {
                                        $cache['prev'] .= '<img src="'.$img_prev.'" border="0" />';
                                }
                        } else        {
                                $cache['prev'] .= $txt_prev;
                        }
                        $cache['prev'] .= '</a>   &nbsp; ';
                } else        {
                        $cache['prev'] = '';
                }
                if ($pos < ($rowcount-$limit))        {
                        $cache['next'] = '&nbsp;&nbsp;&nbsp;<a class="'.$class_text.'" href="'.$short['next'].'">';
                        if (!empty($img_next))        {
                                if (preg_match('/\</', $img_next)) {
                                        $cache['next'] .= $img_next;
                                } else {
                                        $cache['next'] .= '<img src="'.$img_next.'" border="0" />';
                                }
                        } else        {
                                $cache['next'] .= $txt_next;
                        }
                        $cache['next'] .= '</a>';
                } else {
                        $cache['next'] = '';
                }
                if ($txt_pos == 'top')        {
                        print '<p align="center">'.$cache['prev'].$cache['next'].'</p>'."\n";
                }
                print '<p align="center">';
                if ($txt_pos == 'side')        {
                        print $cache['prev'];;
                }
                foreach($pages as $num=>$url)        {
                                if ($num > $limit)        {
                                        print ' '.$separator.' ';
                                }
                                print '<a class="'.(($num == $short['now']) ? $class_numon : $class_num).'" href="'.$url.'">'.$num.'</a>';
                }
                if ($txt_pos == 'side')        {
                        print $cache['next'];;
                }
                print '</p>'."\n";
                if ($txt_pos == 'bottom')        {
                        print '<p align="center">'.$cache['prev'].$cache['next'].'</p>'."\n";
                }
        }
        return '';
}



111.php
<?php
include "library/Smarty/Smarty.class.php";
include "library/Smarty/plugins/function.pager.php";

    define('APP_PATH', str_replace('\\', '/', dirname(__FILE__)));
    $link = mysql_connect("主機", "帳號", "密碼");
    mysql_select_db("資料庫名稱") or die("Could not select database");
    mysql_query("SET NAMES BIG5");
       
        $smarty = new Smarty;
        $smarty->left_delimiter ='<!--{' ;
        $smarty->right_delimiter='}-->' ;
        $smarty->compile_dir = $path_ecstart."/data/smarty";
        $smarty->use_sub_dirs = !ini_get('safe_mode');
        $smarty->template_dir = APP_PATH . "/templates/";
        $smarty->compile_dir = APP_PATH . "/templates_c/";
        $smarty->config_dir = APP_PATH . "/configs/";
        $smarty->cache_dir = APP_PATH . "/cache/";
       
        $content = array();
        $pagesize = 5;  //一頁幾筆
           $sql.= "select * from 資料表 ";
         $result = mysql_query($sql,$link) or die("Query failed");
         $total =   mysql_num_rows($result);
         $totalpage = ceil($total/$pagesize);
         $page = ceil($_GET["pos"])+1;
         $sql.= "limit ".($pagesize * ($page-1)).", ".$pagesize;
         $idx = 0;
         $result = mysql_query($sql);
         while ($rs = mysql_fetch_array ($result))
         {
           array_push($content, $rs);
           $idx++;  
         }
         $smarty->assign('totalpage',$totalpage);
         $smarty->assign('img',$content);
        $smarty->display('111.htm');
?>


111.htm
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=big5">
</head>

<body>
<table align=center cellspacing=0 cellpadding=0><tr><td bgcolor="#FFCCCC">
      
                <table cellspacing=1 cellpadding=3 border=0>
                <!--{section name=show_name loop=$img}-->
                           <td align=center nowrap>
                      <!--{$img[show_name].欄位名稱}--></td>
                           </tr><!--{/section}-->
               </table>
            </td></tr></table>
<div class="change_page" align="center">
<!--{pager rowcount=$totalpage limit=1 shift=1 no_first=true separator="|" class_text="pager_text" txt_pos="side"}--></div>
</body>
</html>

FIEND 發表於 2008-10-24 10:09

[quote]原帖由 [i]kathy1986[/i] 於 2008-10-20 17:46 發表 [url=http://bbs.ecstart.com/redirect.php?goto=findpost&pid=90395&ptid=33681][img]http://bbs.ecstart.com/images/common/back.gif[/img][/url]
雖然我也是抓別人的程式來改的…
還是po上來給有需要的人參考看看吧…
第一次po不知會不會太亂……有需要的人看看吧!!還是有覺得我的程式寫不好或有問題的也請指教…

function.pager.php
[/quote]

版型的邏輯 最好不要放在 content logic 內 .

這樣程式的彈性會很差 .

kathy1986 發表於 2008-10-29 15:49

回復 12# 的帖子

SORRY…不太懂意思…><

FIEND 發表於 2008-11-5 21:52

[url]http://bbs.ecstart.com/thread-33583-1-1.html[/url]

以這張圖為例 :

ap 做出來的 xml 你可以把它視為 content logic .

而 xml 上去 將 content logic 拿來結合成 結果的 邏輯

就是我指的 版型的邏輯

如果 你可以將 content logic 做到一致性 就會有好的 延展性 .

相對的 content logic 有好的 延展性和一致性 則 版型也可以 有好的一致性和延展性.

這樣寫程式就會輕鬆很多 .

所以 :

你可以把 smarty 的 array 相像成 content logic ...  

如果你可以將它 做到有固定的格式 ( 一致性 ) .

那你的版型邏輯也會一致多了 .

未來 不管你如何變化 程式 , 這個版型邏輯都 可以重覆使用.

而如果你把 版型邏輯放到 content logic 內 ,

你的程式會變的

一來不好維護 二來沒有一致性 三來沒有延展性.

導致你永遠碰到相同的問題都要重寫就算了

還要一口氣維護 n 套 換頁邏輯.

所以我建議你不要把版型邏輯放到 content logic .

@@ .....

頁: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.