PHP dažniausiai naudojamas duomenims iš duomenų bazės saugoti ir rodyti. Puslapius galima spausdinti su ajax, bet čia tai daroma su ne ajax. Šioje pamokoje mes išmoksime puslapių spausdinimas PHP su MySQL . Trumpai apžvelkime puslapių spausdinimą su pavyzdžiu -
Gali būti, kad SQL SELECT užklausa gali grąžinti milijonus įrašų. Nerekomenduojama rodyti visus įrašus viename puslapyje. Dideliam įrašų sąrašui viename puslapyje gali prireikti tiek daug laiko, kol įkeliamas puslapis, taip pat reikia laiko ieškant konkrečių duomenų. Tai gali sukelti (sukelti) painiavą vartotojo mintyse. Todėl paskirstykite šiuos įrašus į kelis puslapius pagal vartotojo poreikius.
Taigi, ką galime padaryti, kad šis didelis įrašų skaičius būtų paskirstytas puslapių skaičiumi? Vieno sąrašo paskirstymo į kelis puslapius metodas yra žinomas kaip Puslapių rašymas . Puslapiavimas reiškia užklausos rezultato rodymą keliuose puslapiuose, o ne viename puslapyje.
Kas yra puslapių rašymas?
Puslapių spausdinimas yra būdas rodyti duomenis keliuose puslapiuose, o ne sudėti juos į vieną puslapį. Puslapių spausdinimas padeda suskirstyti įrašus į kelis puslapius, todėl duomenys tampa lengviau skaitomi ir suprantami.
Puslapių spausdinimas yra įprasta PHP kūrėjų užduotis. „MySQL“ padeda kūrėjui sukurti puslapius naudojant LIMIT sąlyga, kuriai reikia dviejų argumentų. Pirmasis argumentas kaip OFFSET o antrasis argumentas yra įrašų skaičius kuris grįš iš duomenų bazės.
Pažvelkime į kai kuriuos puslapių kūrimo koncepcijos naudojimo PHP privalumus ir trūkumus -
Puslapių rašymo privalumai
- Puslapių spausdinimas yra labai naudingas didelės apimties projektuose, nes tai daro žiniatinklio darbą profesionalesnį. Tai ne tik profesionaliau, bet ir leidžia tinklalapiui veikti daug greičiau, tiksliau ir efektyviau.
- Puslapių spausdinimo pagalba galime sutaupyti puslapio įkėlimo laiką skirstydami duomenis į įvairius puslapius. Tai apsaugo mus nuo daug informacijos įkėlimo vienu metu.
Pavyzdžiui - Tinklalapyje, kuriame yra 1000 vaizdų, vaizdų įkėlimas užtruks ilgiau nei 50 vaizdų kiekviename tinklalapyje.
Tai reiškia, kad tūkstančiams vaizdų reikia tūkstančių HTTP užklausų, todėl puslapis nereaguotų. Ši problema išspręsta apribojant duomenų kiekį puslapių rūšiavimo pagalba naudojant LIMIT sąlygą. - Puslapių numeravimo naudojimas pagerina vartotojo patirtį, pajamas iš reklamos ir sumažina puslapio įkėlimo laiką.
Puslapių rašymo trūkumai
Nors yra keletas galingų puslapių numeravimo pranašumų, daugelis kūrėjų vis tiek vengia ja naudotis. Be kai kurių galingų privalumų, puslapių spausdinimas taip pat turi keletą trūkumų, kurie yra tokie:
- Pats puslapių rašymas yra didelis PHP krūvis, o tai yra vienas iš puslapių spausdinimo trūkumų. Tai yra visiškai papildomos išlaidos, nes tai yra išorinė funkcija, kurią galima įdiegti pašalinant žymėjimą, stilių ir logiką. Nedidelis duomenų rinkinys dažnai ignoruojamas norint naudoti puslapių rūšiavimą.
- Puslapių numeravimas gali sukelti žemą puslapio reitingą paieškos sistemoje, nes kai puslapis yra toli nuo pagrindinio puslapio ir jį reikia spustelėti kelis kartus, jis paprastai negauna aukšto puslapio reitingo.
- Tai taip pat apriboja nuorodų skaičių, bendrinimą socialiniuose tinkluose, bendrą rezultatų skaičių, kad jie būtų matomi tinklalapyje, ir prierašo tekstą, kurį puslapis gauna, kai informacija padalyta į kelis puslapius.
Keisdami naršymo sąrankos struktūrą galite išvengti puslapių spausdinimo technikos.
Puslapių sudarymo su PHP ir MySQL įgyvendinimas
Kad galėtume įdiegti puslapių puslapių rūšiavimą, mums reikia didelio duomenų rinkinio, kad galėtume taikyti puslapių puslapius. Todėl pirmiausia turime sukurti duomenų bazę ir lentelę. Po to pateikite įrašus lentelėje ir pradėkite koduoti, kad sukurtumėte puslapius. Kad iš duomenų bazės paimtus duomenis būtų galima padalyti į kelis puslapius.
Pateiksime du puslapių numeravimo pavyzdžius. Pirmasis pavyzdys yra paprastas ir pagrindinis puslapių kūrimo be CSS pavyzdys, o antrame pavyzdyje mes sukursime patrauklią puslapių rūšiavimą naudodami CSS ir įkrovos įkrovą. Galite pamatyti abiejų išvestį. Žemiau pateikiami puslapių kūrimo žingsniai;
10 ml iki uncijos
Paprasti puslapių kūrimo žingsniai -
- Sukurkite duomenų bazę ir lentelę. Pateikite įrašų sąrašą į lentelę.
- Prisijunkite prie MySQL duomenų bazės.
- Sukurkite puslapių rūšiavimo nuorodą, kad suskirstytumėte duomenis į kelis puslapius ir įtrauktumėte juos į lentelės apačią.
- Gaukite duomenis iš duomenų bazės ir parodykite juos keliuose puslapiuose.
Atlikite toliau nurodytus veiksmus po vieną ir sukurkite paprastą puslapių rūšiavimą.
1 pavyzdys
Žemiau pateiktas kodas yra paprastas puslapių numeravimo pavyzdys, kuris atliekamas PHP naudojant MySQL duomenų bazę. Jis padalija iš duomenų bazės gautus duomenis į kelis puslapius. Šiame pavyzdyje sukursime abėcėlių puslapius, kurie bus rodomi keliuose puslapiuose.
Duomenų bazės kūrimas
Pirmiausia sukurkite duomenų bazę, pavadintą puslapiais kaip mes sukūrėme ir joje esanti lentelė pavadinta abėcėlė . Sukurkite atributą pagal pavadinimą id ir abėcėlė ir pateikite duomenis lentelėje.
Duomenų bazės ryšys
PHP failo prijungimas prie duomenų bazės yra būtina užduotis. Kad duomenų bazėje saugomus duomenis galėtumėte rodyti tinklalapyje. Todėl prijunkite duomenų bazę savo PHP faile, kad galėtumėte rodyti duomenis tinklalapyje.
Galite įrašyti duomenų bazės ryšio kodą tame pačiame faile, taip pat laikyti jį atskirai kitame faile ir įtraukti į reikiamą PHP failą. Prisijungimo prie duomenų bazės kodas -
$conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); }
Šioje pamokoje mes naudojame mysqli pratęsimas. Taigi, visos užklausos parašytos pagal mysqli formatą.
Gaukite dabartinį puslapio numerį
Žemiau pateiktas kodas nustato puslapio numerį, kuriame šiuo metu lankosi vartotojas. Jei jo nėra, pagal numatytuosius nustatymus puslapio numeris nustatomas į 1.
if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; }
Puslapių spausdinimo formulė
Puslapių rūšiavimui turite nustatyti viename puslapyje rodomų įrašų skaičiaus limitą. Čia nustatome 10 rezultato viename puslapyje limitą, todėl jis bus rodomas kiekviename puslapyje, kaip nurodyta toliau –
1 puslapis – nuo A iki J (1–10)
2 puslapis – nuo K iki T (11-20)
3 puslapis – nuo U iki Z (21–26)
$results_per_page = 10; $page_first_result = ($page-1) * $results_per_page;
Gaukite bendrą puslapių skaičių
$query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page);
Gauti duomenis ir rodyti tinklalapyje
Žemiau esantis kodas naudojamas duomenims iš duomenų bazės paimti ir rodyti atitinkamai suskirstytuose tinklalapiuose.
$query = 'SELECT *FROM alphabet LIMIT ' . $page_first_result . ',' . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row['id'] . ' ' . $row['alphabet'] . '<br>'; }
Rodyti puslapių nuorodas URL
Naudojant šį kodą, tinklalapio URL pasikeis kiekviename puslapyje.
for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; </=>
Galutinis kodas
Dabar sudėkite visus kodus į vieną failą, kad atliktumėte puslapių rūšiavimą.
Failas: Index2.php
Pagination <?php //database connection $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } //define total number of results you want per page $results_per_page = 10; //find the total number of results stored in the database $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); //determine which page number visitor is currently on if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } //determine the sql LIMIT starting number for the results on the displaying page $page_first_result = ($page-1) * $results_per_page; //retrieve the selected results from database $query = 'SELECT *FROM alphabet LIMIT ' . $page_first_result . ',' . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row['id'] . ' ' . $row['alphabet'] . '</br>'; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>' . $page . ' '; } ?> </=>
Išvestis:
Žiūrėkite toliau pateiktą išvestį, kad pateiktumėte aukščiau pateiktą puslapių numeravimo pavyzdį -
2 pavyzdys
Toliau pateiktas pavyzdys yra dar vienas puslapių puslapių numeravimo pavyzdys, kuriame naudojome CSS ir HTML, kad tinklalapio rodinys būtų patrauklesnis. CSS tinklalapis tampa kūrybiškesnis ir patrauklesnis. Kita vertus, „MySQL“ saugo duomenis duomenų bazėje. Taigi, jūs galite daug geriau išmokti spausdinti puslapiais.
Mes įrašėme visą kodą viename faile, išskyrus duomenų bazės ryšį. Todėl sukursime du failus, t.y. connection.php ir index1.php. Išsaugokite abu failus .php pratęsimas. Toliau pateiktame pavyzdyje išmoksite sukurti kūrybiškesnį ir patrauklesnį puslapių skyrimą.
deterministiniai baigtiniai automatai
Failas: connect.php
Failas: index1.php
Pagination table { border-collapse: collapse; } .inline{ display: inline-block; float: right; margin: 20px 0px; } input, button{ height: 34px; } .pagination { display: inline-block; } .pagination a { font-weight:bold; font-size:18px; color: black; float: left; padding: 8px 16px; text-decoration: none; border:1px solid black; } .pagination a.active { background-color: pink; } .pagination a:hover:not(.active) { background-color: skyblue; } <?php // Import the file where we defined the connection to Database. require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query); ?> <br> <p>This page demonstrates the basic Pagination using PHP and MySQL. </p> <table class="table"> <tr> <th>ID</th> <th>Name</th> <th>College</th> <th>Score</th> </tr> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <?php $query = 'SELECT COUNT(*) FROM student'; $rs_result = mysqli_query($conn, $query); $row = mysqli_fetch_row($rs_result); $total_records = $row[0]; echo '</br>'; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = ''; if($page>=2){ echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } ?> <input id="page" type="number" min="1" max placeholder required> Go function go2Page() { var page = document.getElementById('page').value; page = ((page>)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p> <strong>Output:</strong> </p> <p>See the below output for above pagination example -</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-3.webp" alt="PHP Pagination"> <p>Note that code written inside the tag is used for styling and to give an attractive look to the table and pagination present inside the webpage. We also used bootstrap for this.</p> <h3>Explanation of code</h3> <p>Now, we will explain the code used for creating pagination.</p> <h3>Database creation</h3> <p>First of all, create a database named by <strong>pagination</strong> as we created and a table inside it named <strong>student</strong> . Create attribute by name <strong>Rank, Name, College,</strong> and <strong>Score</strong> , and provide at least 25 records in the table.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-4.webp" alt="PHP Pagination"> <h3>Database Connectivity</h3> <p>Connecting the PHP file to the database is a required task. In this tutorial, we are using <strong>mysqli</strong> extension. So, all the queries are written according to mysqli format.</p> <p>Database connectivity code can be written in the same file or you can also keep it separate into another file and include it to your required PHP file. Code for database connection-</p> <pre> $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } </pre> <h3>Fetch data and display on webpage</h3> <p>As we have created dataset, now we need to fetch and display it to various webpages. The below code is used to retrieve the data from database and display on the webpages that are divided accordingly.</p> <h3>Fetch data</h3> <p>After establishing the database connection in 'connection.php' file, we just need to import it into our code using require_once keyword. We will explicitly define the number of records per page to show.</p> <pre> require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query); </pre> <h3>Display data</h3> <p>This section is very simple. In this section, we iterate the loop over the records that we fetched and display each record stored in columns of the table.</p> <pre> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </pre> <h3>Pagination Link creation</h3> <p>Now the most important code is pagination link creation. So, we will create the Previous, Next, and numeric links for pagination and add them to bottom of the table.</p> <pre> if($page>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active' href="index1.php?page=" .$i.''>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById('page').value; page = ((page>)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;></pre></1)?1:page));></$total_pages){></=$total_pages;>
Gauti duomenis ir rodyti tinklalapyje
Kadangi sukūrėme duomenų rinkinį, dabar turime jį gauti ir parodyti įvairiuose tinklalapiuose. Žemiau esantis kodas naudojamas duomenims iš duomenų bazės paimti ir rodyti atitinkamai suskirstytuose tinklalapiuose.
Gauti duomenis
Sukūrę duomenų bazės ryšį faile „connection.php“, tereikia jį importuoti į savo kodą, naudodami raktinį žodį Reikaling_once. Aiškiai apibrėžsime rodomų įrašų skaičių puslapyje.
require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query);
Rodyti duomenis
Šis skyrius yra labai paprastas. Šiame skyriuje kartojame gautų įrašų kilpą ir rodome kiekvieną įrašą, saugomą lentelės stulpeliuose.
<tr> <td></td> <td></td> <td></td> <td></td> </tr>
Puslapių nuorodų kūrimas
Dabar svarbiausias kodas yra puslapių nuorodų kūrimas. Taigi, mes sukursime Ankstesnis, Kitas ir skaitines nuorodas puslapiams ir įtrauksime jas į lentelės apačią.
if($page>=2) { echo ' Prev '; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" <a class = " active\' href="index1.php?page=" .$i.\'\'>'.$i.' '; } else { $pagLink .= ' '.$i.' '; } }; echo $pagLink; if($page<$total_pages){ echo \' next \'; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById('page').value; page = ((page>)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;>
1)?1:page));>$total_pages){>=$total_pages;>1)?1:page));>$total_pages){>=$total_pages;>