Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

PHP Integrating PHP with Databases Limiting Records in SQL Setting LIMITs

Qasim Hafeez
Qasim Hafeez
12,731 Points

Clicking on categories throws "too many redirects" error

Also, in the URL, the page is set to "0". I don't know how this is happening. The full catalog displays correctly but, clicking on the categories will not work.

Here is the code:

<?php 


include("inc/functions.php");

$pageTitle = "Catalog";
$section = null;
$items_per_page = 8;

if (isset($_GET["cat"])){
    if ($_GET["cat"]=="books") {
        $pageTitle = "Books";
        $section = "books";
    } else if ($_GET["cat"] == "movies") {
        $pageTitle = "Movies";
        $section = "movies";
    } else if ($_GET["cat"] == "music"){
        $pageTitle = "Music";
        $section = "music";
    }
}

if(isset($_GET["pg"])){
    $current_page = filter_input(INPUT_GET, "pg", FILTER_SANITIZE_NUMBER_INT);
}

if(empty($current_page)){
    $current_page = 1;
}



$total_items = get_catalog_count($section);

$total_pages = ceil($total_items / $items_per_page);


//limit results in redirect
$limit_results ="";
if(!empty($section)){
    $limit_results = "cat=" . $section ."&";
}



//redirect too-large page numbers to the last page
if($current_page > $total_pages){
    header("location:catalog.php?"
        . $limit_results
        ."pg="
        .$total_pages);
}
//redirect too-small page numbers to the first page
if($current_page < 1){
    header("location:catalog.php?"
            .$limit_results
            ."pg=1");
}

//determine the offset (number of items to skip) for the current page
//for example:on page 3 with 8 items per page, the offset would be 16

$offset = ($current_page - 1) * $items_per_page;
echo $offset;






if(empty($section)){
    $catalog = full_catalog_array(null, $offset);
} else {
    $catalog = category_catalog_array($section, $items_per_page, $offset);
}


include("inc/header.php");?>


<div class="section catalog page">
    <div class="wrapper">

        <h1><?php if ($section != null){
                    echo "<a href= 'catalog.php'>Full Catalog</a> &gt; ";
                }
            echo $pageTitle ?></h1>

        <ul class="items">
            <?php 



                foreach($catalog as $item){

                    echo get_item_html($item);
                }

             ?>

        </ul>



    </div>

</div>

<?php include("inc/footer.php") ?>
Denny Schouten
Denny Schouten
8,246 Points

Hi, I think it might be in your code in functions.php, if you could post those we could help out better.

1 Answer

Again check your functions.php for spelling errors or miss types.