Smarty簡単ページング実装方法、Smartyページング実装_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:15:54
オリジナル
799 人が閲覧しました

スマートなシンプルページング実装方法、スマートなページング実装

この記事の例は、smarty での単純なページングの実装方法を説明しており、参考のために皆さんに共有されます。具体的な実装方法は以下の通りです

以下はテンプレート内の Smarty コードです。smarty を使用して関連する変数を置き換えます。これは非常に簡単ですが、PHP コードで page パラメーターを渡す必要があります。とてもシンプルなのでこのように分けると良いと思います。ますますsmartyを使うのが好きになりました。

PHP コードは次のとおりです:

コードをコピーします コードは次のとおりです:
{if $pageCount > 1} {foreach item=i from=$pagerList}
{if $pageNum eq $i}
{$i}
{その他}
{$i} {/if}
{/foreach}
{if $pageNum eq 1}
前のページ
{その他}
前のページ {/if}
{if $pageNum eq $pageCount }
次のページ
{その他}
次のページ {/if}
{if $pageNum eq 1}
ホーム
{その他}
ホームページ {/if}
                                                            {if $pageNum eq $pageCount}
最後のページ
{その他}
最後のページ
{/if}
{/if}
(合計 {$pageCount} ページ)


これは単なるアイデアです。実際、ページングは​​それほど複雑ではありません。

この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。

PHP でデジタル ページング効果を実現するにはどうすればよいですか? Smarty でそれを呼び出すにはどうすればよいですか? PHPコードを使用してページ数を循環させるにはどうすればよいですか?

Smarty を使用していると思われる php システムがあります。

ecshop
mall プログラムを参照してください。私も今年の旧正月中に Smarty 用のシステムを作成しようと考えています。

賢いページネーションの問題


最初の方法:
このアイデアは、最初の 90 項目を抽出し、次に最初の 100 項目を抽出するなど、ページ番号に基づいてデータの 2 つの部分を抽出し、2 つの結果の差を比較することです。

30万レコードの場合、たったの100ページに分割すれば(結果は1万レコード)、約1分半かかります。インデックスがうまく構築されていれば、約 1 分かかります。

//select * from //この文は結果から読み取られるため変更できません。そのため、 *
//(select top @h_count (@filedlist) from @tableName.... .) を使用する必要があります。 big //条件の上限を満たすレコードを取得します
//where
//big.guid //ここがキーで、主キーに基づいて下限の結果から重複レコードを除外します(異なるデータのみを残します) 、つまり、交差の検索です)
//入っていません
//(@table から先頭の @l_count guid を選択します....)//下限
//order @orderby //元の形式、orderby 以降のもののみがここで保持される場合は、gruopby などを含む条件の後のすべてを保持する必要があります。

関数は次のようになります。
public string MakeSqlPager(string sourceSql,int pageIndex)
{
//デフォルトのページ サイズを使用します
string orderbyStr =sourceSql.Substring(sourceSql.ToLower(). IndexOf("order by"));
int Index=sourceSql.ToLower().IndexOf("select");
string bigRes="("+ sourceSql.Insert(index) +6," top "+((pageIndex+ 1)*_pageSize).ToString()+" ")+") as big";
string smallRes="("+sourceSql.Insert(index+6,"top "+ (pageIndex*_pageSize).ToString()+ " ")+")";
return "select * from "+bigRes+" where big.guid not in "+smallRes+" "+orderbyStr;
}

このメソッドは次のようになります改善されました。つまり、2 回目のフィルタリングを行うとき、最初の結果からフィルタリングします。

2番目の方法:
先頭と末尾をピンチオフします。プログラムはまだ書かれていません
SELECT * FROM
(
SELECT TOP 100 * FROM
(
SELECT TOP 100000 * FROM pagetest ORDER BY regt ASC
) as a
ORDER BY regt desc
) as b
ORDER BY regt ASC

がテストされ、約 29 秒かかりました。

比較:
最初の方法の効率は非常に低く、複数のループ比較が必要であり、時間計算量が 1 レベル高いためと推測されます。たとえば、このメソッドの応答時間は、取得されるページ番号と大きな関係があります。
2 番目の方法もまだ受け入れられます...残りの全文>>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/901286.html技術記事 Smarty シンプルページングの実装方法、smarty ページングの実装 この記事では、smarty シンプルページングの実装方法を説明し、皆さんの参考に共有します。具体的な実装方法は以下の通りです: 以下は...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート