PHP Sayfalama Yapma

Katılım
12 Eylül 2013
Mesajlar
3.725
Makaleler
3
Çözümler
10
Yer
Azərbaycan
Daha fazla  
Cinsiyet
Erkek
PHP'de yapmış olduğum sayfalama mantığıu bu şekilde nasıl?

PHP:
<?php
$db = new PDO("mysql:host=localhost;dbname=test;charset=utf8", "root", "root");

$limit = 10;

$query = $db->prepare("SELECT * FROM persons");
$query->execute();

$total_results = $query->rowCount();
$total_pages = ceil($total_results / $limit);

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

$starting_limit = (($page - 1) * $limit);
$query = $db->prepare("SELECT * FROM persons ORDER BY id DESC LIMIT $starting_limit,$limit");
$query->execute();

?>

<?php while ($result = $query->fetch(PDO::FETCH_ASSOC)): ?>
    <?= $result['first_name'] . '<br>'; ?>
<?php endwhile; ?>

<?php for ($i = 1; $i <= $total_pages; $i++): ?>
    <a href="?page=<?= $i ?>" class="link"><?= $i ?></a>
<?php endfor; ?>
 
Son düzenleyen: Moderatör:
Bu şekilde yaparsan SQL Injection a karşı korumalı olur. Ayrıca PHP taglarını sık sık açıp kapatmak yerine bu şekilde kullanmak kodun okunurluğunu daha çok arttırı.Aynı şekilde endwhile; ve endfor; kullanmak yerine parantez kullanmanı öneririm.

PHP:
if (isset($_GET["page"]) AND is_numeric($_GET["page"])) {
    $page = $_GET["page"];
} else {
    $page = 1;
}

$starting_limit = (($page - 1) * $limit);
$query = $db->prepare("SELECT * FROM persons ORDER BY id DESC LIMIT :limitStart,:limitEnd;");
$query->execute(array('limitStart'=>$starting_limit,'limitEnd'=>$limit));

 while ($result = $query->fetch(PDO::FETCH_ASSOC)){
    echo $result['first_name'] . '<br>';
}

for($i = 1; $i <= $total_pages; $i++){
    echo '<a href="?page='. $i .'" class="link">'. $i .'</a>'
}
 
BasicDB Şuna bir göz atın isterseniz.

PHP:
// toplam veri
$totalRecord = $db->from('users')
                  ->select('count(user_id) as total')
                  ->total();

// sayfa başına kaç veri gözükecek?
$pageLimit = 4;

// sayfa parametresi? Örn: index.php?page=2 [page = $pageParam]
$pageParam = 'page';

// limit için start ve limit değerleri hesaplanıyor
$pagination = $db->pagination($totalRecord, $pageLimit, $pageParam);

// normal sorgumuz
$query = $db->from('uyeler')
            ->orderby('uye_id', 'DESC')
            ->limit($pagination['start'], $pagination['limit'])
            ->all();
            
print_r($query);

// sayfalamayı yazdır
echo $db->showPagination('http://localhost/test/?'.$pageParam.'=[page]');
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…