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 Pagination Function

Victoria Loisi
Victoria Loisi
7,070 Points

Why $pagination won't work?

I need to do this: Move all the code that sets the $pagination variable inside the pagination function. Return the $pagination variable. Change the echo on the final line to call the function instead of the variable. Make sure you pass the four variables: \$total_pages, \$current_page, \$section, \$search.

So, I've done this:

index.php
<?php
include "pagination.php";

/* add function here */
function pagination($total_pages, $current_page, $section, $search){
  /* setting pagination variable */
$pagination = "<div class=\"pagination\">";
$pagination .= "Pages: ";  
for ($i = 1;$i <= $total_pages;$i++) {
    if ($i == $current_page) {
        $pagination .= " <span>$i</span>";
    } else {
        $pagination .= " <a href='catalog.php?";
        if (!empty($search)) {
            $pagination .= "s=".urlencode(htmlspecialchars($search)) . '&' ;
        } else if (!empty($section)) {
            $pagination .= "cat=".$section . '&';
        }
        $pagination .= "pg=$i'>$i</a>";
    }
}
$pagination .= "</div>";

  return $pagination;
}

/* displaying the pagination */
pagination($total_pages, $current_page, $section, $search);

Now, when I try to submit the code, it says that the previous challenge is no longer passing.

This was the previous challenge: A function does not know about variables outside the scope of the function. To use a function for displaying the pagination, we need to pass our function the required variables. Create a function named pagination that accepts four arguments, $total_pages, $current_page, $section and $search.

index.php
<?php
include "pagination.php";

/* add function here */
function pagination($total_pages, $current_page, $section, $search){
}

/* setting pagination variable */
$pagination = "<div class=\"pagination\">";
$pagination .= "Pages: ";  
for ($i = 1;$i <= $total_pages;$i++) {
    if ($i == $current_page) {
        $pagination .= " <span>$i</span>";
    } else {
        $pagination .= " <a href='catalog.php?";
        if (!empty($search)) {
            $pagination .= "s=".urlencode(htmlspecialchars($search)) . '&' ;
        } else if (!empty($section)) {
            $pagination .= "cat=".$section . '&';
        }
        $pagination .= "pg=$i'>$i</a>";
    }
}
$pagination .= "</div>";

/* displaying the pagination */
echo $pagination;

Why the error keeps appearing?

2 Answers

Kallil Belmonte
Kallil Belmonte
35,561 Points

Hi Victoria, try this instead:

<?php
include "pagination.php";

/* add function here */
function pagination($total_pages, $current_page, $section, $search) {

/* setting pagination variable */
$pagination = "<div class=\"pagination\">";
$pagination .= "Pages: ";  
for ($i = 1;$i <= $total_pages;$i++) {
    if ($i == $current_page) {
        $pagination .= " <span>$i</span>";
    } else {
        $pagination .= " <a href='catalog.php?";
        if (!empty($search)) {
            $pagination .= "s=".urlencode(htmlspecialchars($search)) . '&' ;
        } else if (!empty($section)) {
            $pagination .= "cat=".$section . '&';
        }
        $pagination .= "pg=$i'>$i</a>";
    }
}
$pagination .= "</div>";

return $pagination;

} 

/* displaying the pagination */
echo pagination($total_pages, $current_page, $section, $search);
Victoria Loisi
Victoria Loisi
7,070 Points

Thank you!! I didn't realized that I needed to actually echo the pagination function. :)