PHP $_GET and $_POST are returning empty arrays--trying to paginate SQL data

Posted by George88 on Stack Overflow See other posts from Stack Overflow or by George88
Published on 2012-03-24T22:25:26Z Indexed on 2012/03/24 23:29 UTC
Read the original article Hit count: 172

Filed under:
|

I have set up the following:

  1. Database class ($db)
  2. Pagination class ($paginator)

I am attempting to write a basic system to let me administrate pages. I have a page "page_manager.php" in which I include both my database class (database.php) and my pagination class (paginate.php).

In my pagination class I have a function which echoes my SQL data. I've come up with a way to echo an HTML < select > element with the necessary IDs, which allows me to successfully echo the corresponding results (10 per page), based on the value of the < select > element. So, "1" will echo the first 10 results in the database, "2" will echo from 11-20, "3" will echo from 21-30, etc., etc..

I have added an onChange event to the < select > element which will copy its value (using "this.value") to a hidden form field. I then submit this form using document.getElementById().submit();

This will then add the $_GET variable to the URL, so the URL becomes ".../?pagenumber_form=X". However, when I try to grab this value back from the URL, the $_GET['pagenumber_form'] is empty.

Some code:

<span style='font-family: tahoma; font-size: 10pt;'>Page #</span>
    <select id="page_number_selection" 
    onchange='javascript: document.getElementById("pagenumber_form").value = this.value;
                          document.getElementById("pagenumber").submit();'>
    <?php
        for($i = 1; $i <= $this->num_pages; $i++)
            echo"<option id='" . $i . "'>" . $i . "</option>";      
    ?>
    </select>

<form name="pagenumber" id="pagenumber" action="" method="get">
    <input type="text" name="pagenumber_form" id="pagenumber_form" />
</form>

So, I've tried using $_POST as well, but the same thing happens. I want to use $_GET, for a couple of reasons: it's easier to see what is happening with my values and the data I'm using doesn't need to be secure.

To recap: the $_GET variable is being added to the URL when I change the < select > element, and the corresponding value gets added to the URL as: ".../?pagenumber_form=X", but when I try to use the value in PHP, for example...

$page_number = $_GET['pagenumber_form'];

... I get a NULL value. :-(

Can anybody help me out please? Thank you.

EDIT:

I've just made a discovery. If I move my print_r($_GET) to my main index page, then the superglobals are returning as expected. My site structure is like this:

index.php - JavaScript buttons use AJAX HTTP requests to include the "responseText" as the .innerHTML of my main < div >. The "responseText" is the contents the page itself, in this case page_manager.php, which in turn includes pagination.php.

So in other words, my site is built from PHP includes, which doesn't seem to be compatible with HTTP superglobals.

Any idea how I can get around this problem? Thank you :-).

© Stack Overflow or respective owner

Related posts about php

Related posts about get