logo

PHP Sayfalandırma

PHP çoğunlukla bir veritabanındaki verileri depolamak ve görüntülemek için kullanılır. Sayfalandırma ajax ile yapılabilir, ancak burada bu ajax dışı ile yapılır. Bu eğitimde şunları öğreneceğiz: PHP'de MySQL ile sayfalama . Bir örnekle sayfalama hakkında kısa bir inceleme yapalım:

Bir SQL SELECT sorgusunun milyonlarca kaydı geri döndürmesi mümkündür. Tüm kayıtları tek bir sayfada görüntülemek iyi bir fikir değildir. Tek bir sayfadaki büyük bir kayıt listesinin sayfanın yüklenmesi çok fazla zaman alabilir ve ayrıca belirli verileri bulmak da zaman alabilir. Bu durum kullanıcının kafasında karışıklığa yol açabilir (yol açabilir). Bu nedenle kullanıcı ihtiyacına göre bu kayıtları birkaç sayfaya bölün.

Peki bu kadar çok sayıdaki kaydı sayfalara dağıtmak için ne yapabiliriz? Tek bir listeyi birden fazla sayfaya dağıtma yöntemi olarak bilinir. Sayfalandırma . Sayfalandırma, sorgu sonucunuzun tek bir sayfa yerine birden çok sayfada gösterilmesi anlamına gelir.

Sayfalandırma Nedir?

Sayfalandırma, verileri tek bir sayfaya koymak yerine birden çok sayfada göstermenin bir yoludur. Sayfalandırma, kayıtları birkaç sayfaya bölmeye yardımcı olur, bu da verileri daha okunabilir ve anlaşılır hale getirir.

Sayfalandırma PHP geliştiricileri için ortak bir görevdir. MySQL, geliştiricinin aşağıdakileri kullanarak sayfalandırma oluşturmasına yardımcı olur: SINIR iki argüman alan cümle. İlk argüman şu şekilde TELAFİ ETMEK ve ikinci argüman ise kayıt sayısı bu veritabanından dönecektir.

PHP'de sayfalandırma kavramını kullanmanın bazı avantaj ve dezavantajlarına bakalım -

git ekle --tümü

Sayfalandırmanın Avantajları

  • Sayfalandırma, büyük ölçekli projelerde çok kullanışlıdır çünkü web çalışmasını daha profesyonel hale getirir. Yalnızca daha profesyonel olmakla kalmaz, aynı zamanda web sayfasının çok daha hızlı, hassas ve verimli çalışmasını da sağlar.
  • Sayfalandırma yardımıyla verileri çeşitli sayfalara bölerek sayfanın yüklenme süresinden tasarruf edebiliriz. Bizi aynı anda birçok bilgiyi yüklemekten kurtarır.
    Örneğin - 1000 görsel içeren bir web sayfasının görselleri yüklemesi, her web sayfasındaki 50 görselden daha fazla zaman alacaktır.
    Bu, binlerce görüntünün binlerce HTTP isteğine ihtiyaç duyduğu anlamına gelir ve bu da sayfanın yanıt vermemesine neden olur. Bu sorun, LIMIT cümleciği kullanılarak sayfalandırma yardımıyla veri miktarının sınırlandırılmasıyla çözülmektedir.
  • Sayfalandırmanın kullanılması kullanıcı deneyimini, reklam gelirini artırır ve sayfanın yüklenme süresini azaltır.

Sayfalandırmanın Dezavantajları

Sayfalandırmanın bazı güçlü avantajları olsa da birçok geliştirici bunu kullanmaktan kaçınıyor. Bazı güçlü avantajların yanı sıra, sayfalandırmanın birkaç dezavantajı da vardır; bunlar aşağıdaki gibidir:

  • Sayfalandırmanın kendisi PHP'de büyük bir yüktür ve bu da sayfalandırmanın dezavantajlarından biridir. Bu, gereksiz İşaretleme, Şekillendirme ve mantık maliyetine uygulanabilecek harici bir özellik olduğundan tamamen bir yüktür. Küçük bir veri kümesi, sayfalandırmayı kullanmak için genellikle göz ardı edilir.
  • Sayfalandırma, arama motorunda düşük sayfa sıralamasına neden olabilir, çünkü bir sayfa ana sayfadan uzakta olduğunda ve birkaç tıklama gerektirdiğinde genellikle yüksek bir sayfa sıralamasına sahip olmaz.
  • Aynı zamanda bağlantı sayısını, sosyal paylaşımları, web sayfasında görülebilecek toplam sonuç sayısını ve bilgiler birkaç sayfaya bölündüğünde bir sayfanın aldığı bağlantı metnini de sınırlar.
Gezinme kurulumunuzun yapısını değiştirerek sayfalandırma tekniğinin kullanılmasını önleyebilirsiniz.

PHP ve MySQL ile Sayfalandırmanın Gerçekleştirilmesi

Sayfalandırmayı uygulamak için, sayfalandırmayı uygulayacak büyük bir veri kümesine ihtiyacımız var. Bu nedenle öncelikle bir veritabanı ve tablo oluşturmamız gerekiyor. Daha sonra tablodaki kayıtları sağlayın ve sayfalandırmayı oluşturmak için kodlamaya başlayın. Böylece veritabanından alınan veriler birkaç sayfaya bölünebilir.

Burada sayfalamanın iki örneğini tanıtacağız. İlk örnek CSS olmadan sayfalama oluşturmanın basit ve temel bir örneğidir, ikinci örnekte ise CSS ve bootstrap kullanarak çekici bir şekilde sayfalama oluşturacağız. Her ikisinin de çıktısını görebilirsiniz. Sayfalandırma oluşturma için verilen adımlar aşağıda verilmiştir;

Sayfalandırma oluşturmak için basit adımlar -

  1. Bir veritabanı ve tablo oluşturun. Tabloya kayıtların bir listesini sağlayın.
  2. MySQL veritabanına bağlanın.
  3. Verileri birden fazla sayfaya bölmek ve bunları tablonun altına eklemek için sayfalandırma bağlantısını oluşturun.
  4. Veritabanından veri alın ve birden fazla sayfada görüntüleyin.

Aşağıdaki adımı tek tek izleyin ve basit sayfalandırma oluşturun.

örnek 1

Aşağıdaki kod, PHP'de MySQL veritabanının yardımıyla yapılan basit bir sayfalandırma örneğidir. Veritabanından alınan verileri birkaç sayfaya böler. Bu örnekte, alfabelerin birkaç sayfada görüntülenmesi için sayfalandırmayı oluşturacağız.

Veritabanı oluşturma

Öncelikle isminde bir veritabanı oluşturun. sayfalandırma oluşturduğumuz gibi ve içinde adlandırılmış bir tablo alfabe . Ada göre özellik oluştur İD Ve alfabe ve tablodaki verileri sağlayın.

PHP Sayfalandırma

Veritabanı Bağlantısı

PHP dosyasını veritabanına bağlamak gerekli bir iştir. Böylece veritabanında saklanan verileri web sayfasında görüntüleyebilirsiniz. Bu nedenle, verileri web sayfasında göstermek için PHP dosyanızdaki veritabanını bağlayın.

Veritabanı bağlantı kodunu aynı dosyaya yazabileceğiniz gibi ayrı bir dosyada da saklayıp gerekli PHP dosyanıza ekleyebilirsiniz. Veritabanı bağlantısı için kod-

 $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } 

Bu eğitimde, şunu kullanıyoruz: mysqli eklenti. Yani tüm sorgular mysqli formatına göre yazılmıştır.

Geçerli sayfa numarasını al

Aşağıdaki kod kullanıcının o anda ziyaret ettiği sayfa numarasını belirler. Mevcut olmaması durumunda varsayılan olarak sayfa numarası 1 olarak ayarlanmıştır.

 if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } 

Sayfalandırma formülü

Sayfalandırma için sayfa başına görüntülenecek kayıt sayısı sınırını ayarlamanız gerekir. Burada sayfa başına sonuç sınırını 10 olarak ayarladık, böylece her sayfada aşağıda gösterildiği gibi görüntülenecektir -

Sayfa1 - A'dan J'ye (1-10)

Sayfa 2 - K'dan T'ye (11-20)

Sayfa3 - U'dan Z'ye (21-26)

 $results_per_page = 10; $page_first_result = ($page-1) * $results_per_page; 

Toplam sayfa sayısını al

 $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); 

Verileri alın ve web sayfasında görüntüleyin

Aşağıdaki kod veritabanından veri almak ve buna göre bölünmüş web sayfalarında görüntülemek için kullanılır.

 $query = &apos;SELECT *FROM alphabet LIMIT &apos; . $page_first_result . &apos;,&apos; . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row[&apos;id&apos;] . &apos; &apos; . $row[&apos;alphabet&apos;] . &apos;<br>&apos;; } 

Sayfaların bağlantısını URL'de görüntüle

Web sayfasının bu kod URL'sini kullanmak her sayfa için değişecektir.

 for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; </=>

Son Kod

Şimdi sayfalandırmayı tamamlamak için tüm kodları tek bir dosyada bir araya getirin.

Dosya: 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>&apos;; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; } ?&gt; </=>

Çıktı:

Yukarıdaki sayfalandırma örneği için aşağıdaki çıktıya bakın -

PHP Sayfalandırma

Örnek 2

Aşağıdaki örnek, web sayfasının görünümünü daha çekici hale getirmek için HTML ile birlikte CSS'yi kullandığımız başka bir sayfalama örneğidir. CSS web sayfasını daha yaratıcı ve çekici hale getirir. Öte yandan MySQL, verileri veritabanında saklar. Böylece sayfalamayı çok daha iyi öğrenebilirsiniz.

Veritabanı bağlantısı dışında tüm kodu tek bir dosyaya yazdık. Bu nedenle iki dosya oluşturacağız, yani Connection.php ve index1.php. Her iki dosyayı da içine kaydedin .php eklenti. Aşağıdaki örnekte sayfalandırmayı daha yaratıcı ve çekici hale getirmeyi öğreneceksiniz.

    php:Veritabanı bağlantısı için oluşturulduphp:Sayfalandırma için oluşturuldu

Dosya: bağlantı.php

ilk bilgisayar ne zaman icat edildi
 

Dosya: 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>&apos;; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = &apos;&apos;; if($page&gt;=2){ echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; 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(&apos;page&apos;).value; page = ((page&gt;)?:((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(&apos;localhost&apos;, &apos;root&apos;, &apos;&apos;); if (! $conn) { die(&apos;Connection failed&apos; . mysqli_connect_error()); } else { mysqli_select_db($conn, &apos;pagination&apos;); } </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 &apos;connection.php&apos; 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 &apos;connection.php&apos;; $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[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $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&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; 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(&apos;page&apos;).value; page = ((page&gt;)?:((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;>

Verileri getir ve web sayfasında görüntüle

Veri kümesini oluşturduğumuza göre, şimdi onu getirip çeşitli web sayfalarına göstermemiz gerekiyor. Aşağıdaki kod veritabanından veri almak ve buna göre bölünmüş web sayfalarında görüntülemek için kullanılır.

Veriyi getir

'connection.php' dosyasında veritabanı bağlantısını kurduktan sonra, require_once anahtar kelimesini kullanarak bunu kodumuza aktarmamız yeterli. Sayfa başına gösterilecek kayıt sayısını açıkça tanımlayacağız.

 require_once &apos;connection.php&apos;; $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[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); 

Verileri görüntüle

Bu bölüm çok basittir. Bu bölümde, getirdiğimiz kayıtlar üzerinde döngüyü yineliyoruz ve tablonun sütunlarında saklanan her kaydı görüntülüyoruz.

 <tr> <td></td> <td></td> <td></td> <td></td> </tr> 

Sayfalandırma Bağlantısı oluşturma

Şimdi en önemli kod sayfalandırma bağlantısı oluşturmaktır. Sayfalandırma için Önceki, Sonraki ve sayısal bağlantıları oluşturup bunları tablonun altına ekleyeceğiz.

 if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active\' href="index1.php?page=" .$i.\'\'>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; 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(&apos;page&apos;).value; page = ((page&gt;)?:((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;>