v2.5.2
Giriş yap

Sayfalamada $_GET parametresi Sorunu

rufiqcavadov
417 defa görüntülendi

Herkse merhaba. $_GET parametresinden rastgele numara girdiğim zaman bana sayfalama da aşağıda önceki ve sonraki kodlarımı gösteriyor ben istiyorum ki, eğer rastgele bir kullanıcı oradan bir numara girmeye çalışırsa, onu direct birinci sayfaya göndersin. Bir türlü bu sorunu çözemedim if else yapısıyla. Stackoverflow sitesinde de aramaları yaptım ama her halde yanlış aramalar yaptım. Bir türlü çözemedim.

?page=rastgele_numara

<!doctype html>
<html lang="en">

<head>

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

    <title>Hello, world!</title>

</head>

<body>
<div class="container">
    <?php

    require_once 'db_config.php';

    $limit = 6;

    $page = empty($_GET['page']) || !is_numeric($_GET['page']) ? 1 : $_GET['page'];

    if ($page < 1) {
        $page = 1;
    }

    $start = (($page * $limit) - $limit);
    $stmt = $db->prepare("SELECT * FROM articles");
    $stmt->execute();
    $total_rows = $stmt->rowCount();
    $pages = ceil($total_rows / $limit);

    $articles = $db->prepare("SELECT * FROM articles LIMIT {$start},{$limit}");
    $articles->execute();
    $articles = $articles->fetchAll(PDO::FETCH_ASSOC);

    foreach ($articles as $article) {
        echo '<p class="lead">' . $article['title'] . '</p>';
    }

    ?>

    <nav aria-label="Page navigation example">
        <ul class="pagination justify-content-center">

            <?php

            if ($page > 1) {
                $prev_page = $page - 1;
                echo '<li class="page-item"><a class="page-link" href="?page=' . $prev_page . '">Previous</a></li>';
            } else {
                echo '<li class="page-item disabled"><a class="page-link">Previous</a></li>';
            }

            $records = 2;

            for ($i = $page - $records; $i <= $page + $records; $i++) {
                if ($i > 0 && $i <= $pages) {
                    echo '<li class="page-item"><a class="page-link" href="?page=' . $i . '">' . $i . '</a></li>';
                }
            }

            if ($page != $pages) {
                $next_page = $page + 1;
                echo '<li class="page-item"><a class="page-link" href="?page=' . $next_page . '">Next</a></li>';
            } else {
                echo '<li class="page-item disabled"><a class="page-link" href="#">Next</a></li>';
            }

            ?>

        </ul>
    </nav>

</div>

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p"
        crossorigin="anonymous"></script>

</body>

</html>

rufiqcavadov
1027 gün önce

@rephp Söylediğiniz şekilde yaptım yönlendirmedi ama sorunu sayende çözdüm. Nasıl dersen bu şekilde.

 if ($page > $pages) {
        // $page = 1;
        header('Location: /?page=1');
    }