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]');
 
Uyarı! Bu konu 7 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı