PHP Development တွင် Paging သည်အလွန်အသုံးများသောလိုအပ်ချက်ဖြစ်သည်။ Developer တော်တော်များများက စီမိ () function ကိုအသုံးပြုလိမ့်မည်။ သို့သော် developer များအနေဖြင့် developer များအနေဖြင့်မကိုက်ညီသောစာမျက်နှာအရေအတွက်ကိုကြုံတွေ့ရလိမ့်မည်သို့မဟုတ် Pagination ရလဒ်များသည်ပုံမှန်မဟုတ်သောဖြစ်သည်။ ဘာကိုအတိအကျလဲ ဤဆောင်းပါးသည် ceil () function ကိုအမှန်တကယ်ကုဒ်နမူနာများပေါ်တွင် အခြေခံ. Pagily () function ကိုအသုံးပြုပြီးနောက် Pagicination အမှားအယွင်းများအတွက်ဘုံအကြောင်းပြချက်များကိုအသေးစိတ်လေ့လာလိမ့်မည်။
Pagination သည်များသောအားဖြင့်အဓိက parameters တွေကိုသုံးပါ။
စုစုပေါင်းဒေတာအရက်ဆိုင် $ စုစုပေါင်း
စာမျက်နှာ $ စာမျက်နှာများတွင် ပြသသည့်စာလုံးအရေအတွက်
စုစုပေါင်းစာမျက်နှာများ $ စုစုပေါင်း
၎င်းတို့အနက်စုစုပေါင်းစာမျက်နှာများကိုတွက်ချက်မှုသည်များသောအားဖြင့်ဖြစ်သည်။
$totalPages = ceil($totalCount / $pageSize);
ဤပုံသေနည်းသည်အလွန်ရိုးရှင်းသည်ဟုထင်ရသော်လည်းအသုံးပြုစဉ်အတွင်းသွေဖည်မှုများရှိနေသေးသည်။ အကြောင်းပြချက်မှာအချက်အလက်ရယူခြင်း, တွက်ချက်မှုဆိုင်ရာယုတ္တိဗေဒနှင့် parameter ကိုလွှဲပြောင်းခြင်းဖြစ်သည်။
Pagination ၏အခြေခံသည်ဇာတ်ကောင်စုစုပေါင်းအရေအတွက်အတိအကျဖြစ်သည်။ အကယ်. $ စုစုပေါင်း SQL query မှတဆင့်ရရှိသောလျှင် -
$sql = "SELECT COUNT(*) FROM articles WHERE status = 1";
$result = $db->query($sql);
$totalCount = $result->fetchColumn();
အကယ်. အခြေအနေကိုမှားယွင်းစွာရေးသားခြင်းသို့မဟုတ်စစ်ထုတ်ခြင်းအခြေအနေများကိုလွဲချော်နေပါက၎င်းသည် ဒေါ်လာစုစုပေါင်း အချက်အလက်များနှင့်ကိုက်ညီမှုရှိစေရန်အတွက်စုစုပေါင်းအချက်အလက်များမတိကျသောအချက်အလက်များနှင့် Paginess သည်မကိုက်ညီပါ။
$ Penesize ကို အသုံးပြုသူထည့်သွင်းမှုသို့မဟုတ် configuration files များမှရယူနိုင်သည်။ ပြောင်းလဲခြင်းအပြောင်းအလဲများစဉ်အတွင်းထပ်တူထပ်တူပြုခြင်းညှိနှိုင်းမှုမရှိပါကစာမျက်နှာအရေအတွက်ကိုသွေဖည်သည့်အတွက်တွက်ချက်မှုများကိုတွက်ချက်လိမ့်မည်။
ဥပမာအားဖြင့်:
$pageSize = $_GET['pageSize'] ?? 10;
ရှေ့တန်းအဆုံးသည်အခြား စာမျက်နှာများကို ဖြတ်သန်းသွားပါကစာမျက်နှာစုစုပေါင်းအရေအတွက်ကိုတွက်ချက်သောအခါနောက်ခံသည်တန်ဖိုးဟောင်းကိုအသုံးပြုနေဆဲဖြစ်သည်။
အကယ်. $ Penesize သည် 0 င်သို့မဟုတ်မှန်ကန်သောကိန်းတန်ဖိုးကိုမသတ်မှတ်ပါ။ CEIL () function သည်အမှားတစ်ခုရှိလိမ့်မည်။
$totalPages = ceil($totalCount / $pageSize); // $pageSizeအတွက်0အမှားတစ်ခုသတင်းပို့လိမ့်မည်
တရားဝင် စာမျက်နှာများကို သက်တမ်းစစ်ဆေးရန်လိုအပ်သည်။
$pageSize = max(1, (int)$pageSize);
အသုံးပြုသူသည်စာမျက်နှာနံပါတ်သည်စာမျက်နှာအရေအတွက်ထက်ပိုများကြောင်းတောင်းဆိုသည့်အခါ paging ရလဒ်သည်ပုံမှန်မဟုတ်သောဖြစ်လိမ့်မည်။ နယ်နိမိတ်ရှာဖွေတွေ့ရှိသင့်ပါတယ်:
$currentPage = (int)($_GET['page'] ?? 1);
$currentPage = max(1, min($currentPage, $totalPages));
အောက်ပါတို့သည်အထက်ဖော်ပြပါကိစ္စရပ်များနှင့်ပေါင်းစပ်ခြင်းကိုရှောင်ရှားရန်လူတစ် ဦး ချင်းစီ၏အောက်ဖော်ပြပါသရုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။
<?php
// ဒေတာဘေ့စ် connection ကိုယူဆပြီးပြီးစီးခဲ့သည်
// လက်ရှိစာမျက်နှာနံပါတ်ကိုရယူပါ,ပုံမှန်စာမျက်နှာကိုပုံမှန်စာမျက်နှာ
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// စာမျက်နှာတစ်ခုချင်းစီကိုပြထားတဲ့အပိုင်းပိုင်းအရေအတွက်,ပျက်ကွက်ခြင်း10ညှစ်ခြင်း,且最少အတွက်1
$pageSize = isset($_GET['pageSize']) ? (int)$_GET['pageSize'] : 10;
$pageSize = max(1, $pageSize);
// 获取总数据ညှစ်ခြင်း数
$sqlCount = "SELECT COUNT(*) FROM articles WHERE status = 1";
$totalCount = $db->query($sqlCount)->fetchColumn();
// စာမျက်နှာများစုစုပေါင်းအရေအတွက်ကိုတွက်ချက်ပါ
$totalPages = ceil($totalCount / $pageSize);
$totalPages = max(1, $totalPages); // အနည်းဆုံးစာမျက်နှာတစ်ခုရှိရန်သေချာပါစေ
// လက်ရှိစာမျက်နှာနယ်နိမိတ်ရှာဖွေတွေ့ရှိ
$currentPage = max(1, min($currentPage, $totalPages));
// offset တွက်ချက်
$offset = ($currentPage - 1) * $pageSize;
// လက်ရှိစာမျက်နှာဒေတာကိုမေးမြန်းပါ
$sqlData = "SELECT * FROM articles WHERE status = 1 LIMIT $offset, $pageSize";
$data = $db->query($sqlData)->fetchAll(PDO::FETCH_ASSOC);
// paging link ဥပမာ Generate
for ($i = 1; $i <= $totalPages; $i++) {
echo "<a href='http://m66.net/list.php?page=$i&pageSize=$pageSize'>$i</a> ";
}
?>
ceil () function ကိုယ်နှိုက်ကမမှား ပေမယ့် $ စုစုပေါင်း နှင့် $ Penesize ကမူတည်ပြီးအမှုန့်တွက်ချက်မှုအပေါ် မူတည်. $ Pagesize သည်တိကျမှန်ကန်ရမည်။
စုစုပေါင်းဒေတာနှင့် paging parameters အရေအတွက်ကိုရပိုင်ခွင့်ရရန်သေချာစေရန်လိုအပ်သည်မှာ ceilil () ကို မသုံးမီ Non-Zero နှင့် Integer စိစစ်စစ်ဆေးမှုကိုပြုလုပ်ရန်လိုအပ်သည်။
လက်ရှိစာမျက်နှာနံပါတ်သည်တရားမ 0 င်စာမျက်နှာနံပါတ်တောင်းခံခြင်းကြောင့်ဖြစ်ပေါ်လာသောရောဂါများကိုရှောင်ရှားရန်ကျိုးကြောင်းဆီလျော်သောနယ်ပယ်အကန့်အသတ်များနှင့်သက်ဆိုင်သင့်သည်။
Paging Link Domain Name သည် M66.net ကိုတစ်ပုံစံတည်းဖြတ်နိုင်မှုကိုလွယ်ကူချောမွေ့စေရန်နှင့်စည်းလုံးညီညွတ်စွာဝင်ရောက်ခွင့်ကိုလွယ်ကူချောမွေ့စေရန် M66.net ကိုတစ်ပုံစံတည်းအသုံးပြုရန်အကြံပြုသည်။
နားလည်သဘောပေါက်ခြင်းနှင့် paging ယုတ္တိဗေဒကိုအသုံးပြုခြင်းသည်သင်၏ pagic function ကို အသုံးပြု. CEILE () အသုံးပြုခြင်းကြောင့်ဖြစ်ပေါ်လာသောစာနာမှုပြ problem နာကိုရှောင်ရှားနိုင်သည်။