Jump to content
Sign in to follow this  
2020

Why The WHILE Loop Fails On Paginated Pages ?

Recommended Posts

Posted (edited)

Good Evening Php Programmers,

I am trying to build a pagination script with mysqli using procedural style programming.

Am a beginner. Not into oop yet or pdo. Bear that in mind if you show code samples. Else, i won't understand your snippets.

Anyway, here's how my script works ...
When you click SUBMIT button, initially the rows_count() uses following query to get the matching rows number:

$query_2 = "SELECT * FROM users WHERE first_name = ? AND marital_status = ? LIMIT $offset,$last_row_on_page";


Then it forwards you to the fetch_rows() that fetches the rows and displays them in a pagination style.

When you click any page numbers on the pagination section, like page 2, then the fetch_rows() is supposed to fetch the relevant rows again for page 2. Note, rows_count() doesn't play here as I deem not necessary to re-count all matched rows.
Rows fetching is done with this query:

$query_2 = "SELECT * FROM users WHERE first_name = ? AND marital_status = ? LIMIT $offset,$last_row_on_page";

It displays the matching rows using this WHILE loop:

while($row = mysqli_fetch_array($result_2,MYSQLI_ASSOC))

BIG ISSUE:

The fetch_rows() or $query_2 fails to fetch any matching rows beyond page 1 no matter what page you click. Be it page 2, 3, 4, etc.
However, it does manage to fetch all matching rows for page 1. Just not beyond page 1. That is the main problem. Struggling for about 4 nights now. Can't get over this hurdle!

Code is set to display 1 row per page for testing purpose.
Since there are 5 matching rows in my mysql db, rows are supposed to be spread across many pages via pagination.

You can easily see which lines I am having trouble with if you notice the CAPITALISED comments in my code.

//Do following if "Search" button clicked.
    if($_SERVER['REQUEST_METHOD'] === 'POST')
    {echo __LINE__; echo "<br>";//DELETE
        //Do following if "Search" button clicked.
        if(isset($_POST['search']))
        {echo __LINE__; echo "<br>";//DELETE
            rows_count(); //This function will forward script flow to fetch_rows() before halting the script.
            die();
        }
    }
    echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS FAILS TO ECHO. IT IS LINE: 24.
    //Do following if "Search" button not clicked but pagination numbered links are clicked. Eg Page 1, 2, 3, etc..
    fetch_rows(); //On PAGINATION PAGE 2, THIS FUNCTION IS NOT GETTING TRIGGERED! WHY ?
    echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 205.

 

If you really want to help then best fire-up your Xampp/Wampp and feed my code and test it.

Here is the full code for your convenience. You won't understand the code without the context. Hence the full code ...

DEVMODE CONTEXT:

<?php
error_reporting(E_ALL);
?>
	<!DOCTYPE HTML">
<html>
	<head>
<meta name="viewport" content="width-device=width, initial-scale=1">
</head>
<body>
	<?php
session_start();
	if(!isset($_GET['query_type']) && empty($_GET['query_type']))
{
    die("Invalid Query!");
}
else
{
    $_SESSION['query_type'] = $_GET['query_type']; echo __LINE__; echo "<br>";//DELETE
}
echo __LINE__; echo "<br>";//DELETE
	if(!isset($_GET['form_type']) && empty($_GET['form_type']))
{
    die("Invalid Form!");
}
else
{
    $_SESSION['form_type'] = $_GET['form_type']; echo __LINE__; echo "<br>";//DELETE
    
    if(!function_exists($_SESSION['form_type']))
    {
        die("Invalid Form!");
    }
    else
    {echo __LINE__; echo "<br>";//DELETE
        if(!session_id() || !isset($_SESSION['form_step']) || $_SESSION['form_step'] != 'end')
        {
            $_SESSION['form_step'] = 'start'; echo __LINE__; echo "<br>";//DELETE
            $_SESSION['form_type']();
        }
    }
}
        
//FUNCTIONS START FROM HERE
function search()
{echo __LINE__; echo "<br>";//DELETE
    function rows_count()
    {
        //Connect to Database. (DB_SERVER, BD_USERNAME, DB_PASSWORD, DB_NAME).
        $conn = mysqli_connect("localhost","root","","powerpage");
        $conn->set_charset('utf8mb4'); //Always set Charset.
        
        if($conn === false)
        {
            die("ERROR: Connection Error!. " . mysqli_connect_error());
        }
        
        $query_1 = "SELECT COUNT(id) FROM users WHERE first_name = ? AND marital_status = ?";
        $stmt_1 = mysqli_stmt_init($conn);
        if(mysqli_stmt_prepare($stmt_1,$query_1))
        {
            mysqli_stmt_bind_param($stmt_1,"ss",$_POST["first_name"],$_POST["marital_status"]);
            mysqli_stmt_execute($stmt_1);
            $result_1 = mysqli_stmt_bind_result($stmt_1,$row_count);
            mysqli_stmt_fetch($stmt_1);
            $_SESSION['row_count'] = $row_count;
            echo __LINE__; echo "<br>";//DELETE
            $_SESSION['form_step'] = 'end';
            fetch_rows();
        }
    }
	    function fetch_rows()
    {    echo __LINE__; echo "<br>";//DELETE
        $form_step = $_GET['form_step'];
        
        $page_number = $_GET['page'];
        $result_per_page = $_GET['page_limit'];
        $offset = (($page_number * $result_per_page) - $result_per_page); //Offset (Row Number that 'Starts' on page).
        $last_row_on_page = ($page_number * $result_per_page); //Max Result (Row Number that 'Ends' on page).
        $previous_page = $page_number-1;
        $next_page = $page_number+1;
        
        echo "Row Start: $offset";echo "<br>";
        echo "Row End: $last_row_on_page";echo "<br>";
        
        //Connect to Database. (DB_SERVER, BD_USERNAME, DB_PASSWORD, DB_NAME).
        $conn = mysqli_connect("localhost","root","","powerpage");
        $conn->set_charset('utf8mb4'); //Always set Charset.
	        if($conn === false)
        {
            die("ERROR: Connection Error!. " . mysqli_connect_error());
        }
	        $query_2 = "SELECT * FROM users WHERE first_name = ? AND marital_status = ? LIMIT $offset,$last_row_on_page";
        $stmt_2 = mysqli_stmt_init($conn);
        if(mysqli_stmt_prepare($stmt_2,$query_2))
        {echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 103.
            mysqli_stmt_bind_param($stmt_2,"ss",$_POST["first_name"],$_POST["marital_status"]);
            mysqli_stmt_execute($stmt_2);
            $result_2 = mysqli_stmt_get_result($stmt_2);
            if(!$result_2)
            {
                //Close Connection.
                mysqli_close($conn);
                die("<pre>2c. Statement Fetching failed!</pre>");
            }
            else
            {echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 114.
                //Grab total number of pages to paginate.
                $row_count = $_SESSION['row_count'];
                //$total_pages = ceil($result_1/$result_per_page);
                $total_pages = ceil($row_count/$result_per_page);
                
                echo "TOTAL PAGES: $total_pages<br><br>";
                
                while($row = mysqli_fetch_array($result_2,MYSQLI_ASSOC))//On PAGE 2, PHP IGNORING THIS AND BYPASSING THIS WHOLE WHILE LOOP ON PAGE 2. IT IS LINE: 122.
                {echo __LINE__; echo "<br>";//On PAGE 2, THIS FAILS TO ECHO. IT IS LINE: 123. PHP IGNORING IT BYPASSING IT ON PAGE 2.
                    //Retrieve Values.
                    $id = $row["id"];
                    $first_name = $row["first_name"];
                    $middle_name = $row["middle_name"];
                    $surname = $row["surname"];
                    $gender = $row["gender"];
                    $marital_status = $row["marital_status"];
                    $working_status = $row["working_status"];
                    
                    echo "Id: $id<br>";
                    echo "First Name: $first_name<br>";
                    echo "Middle Name: $middle_name<br>";
                    echo "Surname: $surname<br>";
                    echo "Gender: $gender<br>";
                    echo "Marital Status: $marital_status<br>";
                    echo "Working Status: $working_status<br>";
                    echo "<br>";
                    echo "<br>";
                    
                    $i = 1;
                    while($i<=$total_pages)
                    {
                        if($i<$total_pages)
                        {
                            echo "<a href='http://localhost/power.page/pagination_test_simple_WORKING_ON_NOW.php?form_type=";?><?php echo $_SESSION['form_type'];?>&query_type=<?php echo $_SESSION['query_type'];?>&form_step=end&page_limit=1&page=<?php echo $i;?>'><?php echo " $i ";?></a><?php
                        }
                        elseif($i==$page_number)
                        {
                            echo "<a href='http://localhost/power.page/pagination_test_simple_WORKING_ON_NOW.php?form_type=";?><?php echo $_SESSION['form_type'];?>&query_type=<?php echo $_SESSION['query_type'];?>&form_step=end&page_limit=1&page=<?php echo $i;?>'><?php echo "<b> $i </b>";?></a><?php
                        }
                        
                        $i++;
                    }
                    if($page_number>$total_pages)
                    {
                        echo "<a href='http://localhost/power.page/pagination_test_simple_WORKING_ON_NOW.php?form_type=";?><?php echo $_SESSION['form_type'];?>&query_type=<?php echo $_SESSION['query_type'];?>&form_step=end&page_limit=1&page=<?php echo $previous_page;?>'><?php echo "<b> Previous </b>";?></a><?php
                    }
                }
            }
        }
        $_SESSION['form_step'] = 'end';
    }
    ?>
    
    <form action="<?php echo $_SERVER['PHP_SELF'];?>?form_type=<?php echo $_SESSION['form_type'];?>&query_type=<?php echo $_SESSION['query_type'];?>&form_step=end&page_limit=1&page=1" method='post' enctype='plain/text'>
    <?php
	    //Added '*' (asterisk) to indicate the 'Text Field' is a 'required' one.
    echo "<label for=\"first_name\">First Name *:</label>
    <input type=\"text\" name=\"first_name\" placeholder=\"First Name\" value = \"\">";?>
    <br>
    <?php
    echo "<label for=\"marital_status\">Marital Status *:</label>";
    echo "<select name=\"marital_status\">";
    echo "<option value=\"single\">Single</option>";
    echo "<option value=\"married\">Married</option>";
    echo "</select>";
    echo "<br>";
    ?>
    <input type="submit" name="search" value="Search">
    <?php
    //$current_function = __FUNCTION__;
    //echo $current_function;
    
    //Do following if "Search" button clicked.
    if($_SERVER['REQUEST_METHOD'] === 'POST')
    {echo __LINE__; echo "<br>";//DELETE
        //Do following if "Search" button clicked.
        if(isset($_POST['search']))
        {echo __LINE__; echo "<br>";//DELETE
            rows_count(); //This function will forward script flow to fetch_rows() before halting the script.
            die();
        }
    }
    echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS FAILS TO ECHO. IT IS LINE: 24.
    //Do following if "Search" button not clicked but pagination numbered links are clicked. Eg Page 1, 2, 3, etc..
    fetch_rows(); //On PAGINATION PAGE 2, THIS FUNCTION IS NOT GETTING TRIGGERED! WHY ?
    echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 205.
}
?>

What is wrong ? Why is fetch_rows() or $query_2 failing to fetch the matching rows for pages beyond page 1 ?

ECHOES
Before clicking the SUBMIT button, I get echoed these line numbers as expected:

22
24
32
39
42
50

After clicking the SUBMIT button I get these echoed as expected:

193
71
78
Row Start: 0
Row End: 1
103
114
TOTAL PAGES: 5
123

After clicking the link for 'page 2' on pagination section, I get echoed the same line numbers I get echoed before clicking the SUBMIT button as if everything is starting all over with a new query (when not). That is not supposed to happen.

I reckon line 200 is not taking action:

fetch_rows(); //On PAGINATION PAGE 2, THIS FUNCTION IS NOT GETTING TRIGGERED! WHY ? IT IS LINE: 200. MAIN ISSUE HERE, I SUSPECT.


NOTE: I am a beginner still on OOP and mysqli. Not on pdo either. So, kindly show samples to that level, if you must.

Edited by 2020

Share this post


Link to post
Share on other sites

the pagination after page 1 is not working because you are not propagating the get parameters that your code expects, nor are you validating those inputs, so your code is not telling you what is wrong (you are probably getting php errors though.) you must validate all inputs to a page before using them and any 'required' inputs should cause some type of user error message to be displayed if they are not present.

when you get to the point of producing pagination links, you should include any existing get parameters by starting with a copy of the $_GET array, modify the page element in that array, then use http_build_query() to produce the query string part of the url. you should also be passing any search term/filters as get parameters.

Share this post


Link to post
Share on other sites
Posted (edited)
27 minutes ago, mac_gyver said:

the pagination after page 1 is not working because you are not propagating the get parameters that your code expects, nor are you validating those inputs, so your code is not telling you what is wrong (you are probably getting php errors though.) you must validate all inputs to a page before using them and any 'required' inputs should cause some type of user error message to be displayed if they are not present.

when you get to the point of producing pagination links, you should include any existing get parameters by starting with a copy of the $_GET array, modify the page element in that array, then use http_build_query() to produce the query string part of the url. you should also be passing any search term/filters as get parameters.

Mac,

I do provide parameters via $_GET and $_SESSION. Like this:

$_SESSION['form_step'] = 'end';
$page_number = $_GET['page'];
$result_per_page = $_GET['page_limit'];
$offset = (($page_number * $result_per_page) - $result_per_page); //Offset (Row Number that 'Starts' on page).
$last_row_on_page = ($page_number * $result_per_page); //Max Result (Row Number that 'Ends' on page).

Only these above are required for the mysql queries.

Here is an example of a paginated link:

<a href='http://localhost/power.page/pagination_test_simple_WORKING_ON_NOW.php?form_type=";?><?php echo $_SESSION['form_type'];?>&query_type=<?php echo $_SESSION['query_type'];?>&form_step=end&page_limit=2&page=<?php echo $i;?>'><?php echo " $i ";?></a>

 

Look at all these $_GETs:

	<?php session_start(); if(!isset($_GET['query_type']) && empty($_GET['query_type'])) {     die("Invalid Query!"); } else {     $_SESSION['query_type'] = $_GET['query_type']; echo __LINE__; echo "<br>";//DELETE } echo __LINE__; echo "<br>";//DELETE if(!isset($_GET['form_type']) && empty($_GET['form_type'])) {     die("Invalid Form!"); } else {     $_SESSION['form_type'] = $_GET['form_type']; echo __LINE__; echo "<br>";//DELETE          if(!function_exists($_SESSION['form_type']))     {         die("Invalid Form!");     }     else     {echo __LINE__; echo "<br>";//DELETE         if(!session_id() || !isset($_SESSION['form_step']) || $_SESSION['form_step'] != 'end')         {             $_SESSION['form_step'] = 'start'; echo __LINE__; echo "<br>";//DELETE             $_SESSION['form_type']();         }     } }
	

 

Which param am I missing ?

I will look into the http_build_query(). I once looked into it but have forgotten what it is.

As for my unorthodox links on the pagination section, they are rough for now.

Edited by 2020

Share this post


Link to post
Share on other sites

I get no errors. Error Reporting is on.

Share this post


Link to post
Share on other sites
25 minutes ago, 2020 said:

I get no errors. Error Reporting is on.

how about the display_errors setting?

any of php's error related settings should be in the php.ini on your system, so that they can be changed at a single point and don't clutter up your code.

Share this post


Link to post
Share on other sites
On 6/28/2020 at 6:12 AM, mac_gyver said:

how about the display_errors setting?

any of php's error related settings should be in the php.ini on your system, so that they can be changed at a single point and don't clutter up your code.

Mac,

 

Don't know much about .ini file stuff. Still a beginner.

Anyway, I googled and found this:

https://www.tutorialspoint.com/how-to-display-errors-in-php-file

And so, I added:

	<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
?>
	

 

I get no errors. Also, if you check my url and params I grab from the url via $_GEt and $_SESSIONs, you will see I have not missed anything out.

Share this post


Link to post
Share on other sites

Mac,

I just realized that, $_SESSION['row_count'] = 5, when I click the SEARCH button. 5 matching rows found.

Then when I click PAGE 2 on pagination, the $_SESSION['row_count'] = 0, why is that ? It should stay 5. i am not overwriting the variable value either.

This is the reason why, when I click PAGE 2 or PAGE 3 on the PAGINATION section, I see zero results or rows shown. No rows get shown beyond page 1.

If I can findout why the '$_SESSION['row_count'] = 5' auto becomes $_SESSION['row_count'] = 0, then mystery solved.

Look, after clicking the SEARCH button, this part of code yields $_SESSION['row_count'] = 5. So far so good.

	$query_1 = "SELECT COUNT(id) FROM users WHERE first_name = ? AND marital_status = ?";
        $stmt_1 = mysqli_stmt_init($conn);
        if(mysqli_stmt_prepare($stmt_1,$query_1))
        {
            mysqli_stmt_bind_param($stmt_1,"ss",$_POST["first_name"],$_POST["marital_status"]);
            mysqli_stmt_execute($stmt_1);
            $result_1 = mysqli_stmt_bind_result($stmt_1,$row_count);
            mysqli_stmt_fetch($stmt_1);
            $_SESSION['row_count'] = $row_count;
	

I get shown matching rows on PAGE 1. Since I set it to display 1 row per page, I am shown 1 matching row. So far, so good.

Now, when I click PAGE 2 on the PAGINATION section, I expect to see the 2nd matching row, but "$_SESSION['row_count'] = 5" switches to "$_SESSION['row_count'] = 0" and so no matching rows get shown. Why the switching of values from '5' to '0' when I click PAGE 2 ?

This illegal switching ruins this following query that runs when I click PAGE 2 or any PAGE (eg PAGE 3) beyond PAGE 1:

	$row_count = $_SESSION['row_count'];
 //$total_pages = ceil($result_1/$result_per_page);
$total_pages = ceil($row_count/$result_per_page);
	

 

Context:

	$query_2 = "SELECT id,first_name,middle_name,surname,gender,marital_status,working_status FROM users WHERE first_name = ? AND marital_status = ? LIMIT $offset,$last_row_on_page";
        echo "$query_2<br>";
        $stmt_2 = mysqli_stmt_init($conn);
        if(mysqli_stmt_prepare($stmt_2,$query_2))
        {echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 111.
            mysqli_stmt_bind_param($stmt_2,"ss",$_POST["first_name"],$_POST["marital_status"]);
            mysqli_stmt_execute($stmt_2);
            $result_2 = mysqli_stmt_get_result($stmt_2);
            echo __LINE__; echo "<br>";//On PAGINATION PAGE 2, THIS GETS ECHOED. IT IS LINE: 114.
            //Grab total number of pages to paginate.
            $row_count = $_SESSION['row_count'];
            //$total_pages = ceil($result_1/$result_per_page);
            $total_pages = ceil($row_count/$result_per_page);
	

 

Do check my original post's code to see if you can figure-out why the "$_SESSION['row_count']" switches from "5" to "0".

 

Thanks

Share this post


Link to post
Share on other sites
Posted (edited)
	$query_2 = "SELECT id,first_name,middle_name,surname,gender,marital_status,working_status FROM users WHERE first_name = ? AND marital_status = ? ORDER by id LIMIT $offset,$last_row_on_page";
	

 

Mac,

I am told the above query is faulty. I should have an $offset and a $number that tells how many rows should be displayed on the page, be it PAGE 1, PAGE 2 or PAGE 100. Remember, we are talking about PAGINATION here.

 

Let us say, I want 10 results per pagination page. So, what should I switch my followings to now (I confused) ?

	$page_number = $_GET['page'];
        $result_per_page = $_GET['page_limit'];
        $offset = (($page_number * $result_per_page) - $result_per_page); //Offset (Row Number that 'Starts' on page).
        $last_row_on_page = ($page_number * $result_per_page); //Max Result (Row Number that 'Ends' on page).
        $previous_page = $page_number-1;
        $next_page = $page_number+1;
	        echo "Row Start: $offset";echo "<br>";
        echo "Row End: $last_row_on_page";echo "<br>";
	

 

Edited by 2020

Share this post


Link to post
Share on other sites

i just realized why you are not getting any helpful php errors at the point of the problem. it's because you are using the ridiculous mysqli extension. the following is using a reference to the variables and if they don't exist, there's no php undefined variable/index error when the variables are evaluated.

5 hours ago, 2020 said:

 mysqli_stmt_bind_param($stmt_2,"ss",$_POST["first_name"],$_POST["marital_status"]);

so, i'll repeat this -

On 6/27/2020 at 5:02 PM, mac_gyver said:

you must validate all inputs to a page before using them and any 'required' inputs should cause some type of user error message to be displayed if they are not present.

your search form should use method='get' and if your code was validating the inputs before using them, you would know why your code is not working, 

Share this post


Link to post
Share on other sites

if you layout the code on your page in the following general order, it will be much easier to design, write, test, and debug your code/query(ies) -

  1. initialization - define, require, create, ... things your page needs, such as the session_start() statement, a database connection, configuration values, ...
  2. post method form processing code - a post method form should be used for things that create/update data on the server or perform an action such as sending an email.
  3. get method business logic - get/create data needed to display the dynamic content on the web page.
  4. html document/template - using simple php code or an actual template system, produce the actual html document, using the data produced from the above sections of code.

you would have validation logic in both items #2 and #3.

next, you don't need to understand OOP in order to use existing OOP classes. if you switch to the much simpler and more consistent PDO database extension, over half of the database related statements will go away.

Share this post


Link to post
Share on other sites

@Macguyver,

 

I have created membership (login/register, logout, account homepage, pagination, etc.) pages before with helps of course.

The membership script had about 10 different pages.

My new project is that, the membership script should be all one page. So, login, logout, register, search 9pagination) all in one page. What I just gave in this thread is the pagination part of the page that i am stuck on. The reg & login parts already work.

I did not bother mentioning them parts in this thread to keep the code to the point where I am having issue.

So, there you go. Now you know the full picture.

 

Anyway, I was suggested to add the session start at the top of the page right under the error reporting code and i did but no luck. I even switched the form method from post to get, like you suggested, but no luck.

As for writing errors in a different file or whatever you are advising, I have never done it and so don't know how to proceed, unless ofcourse you can point me in the right direction with a code snippet or a link to a url.

 

I have searched all over google for a tutorial with keywords like these but no luck for over a wk now:

pagination tutorial AND mysqli AND prepared statements AND php

 

Most tutorials are in oop or pdo or mysql extension. Or, they show tutorials on how to build pagination that displays whole table records (all rows). They don't show tutorials (mysqli, prepared statement) how to show records based on keyword search. That is why I am doing things all by myself reading manual and getting ideas from tutorials here and there that are based on oop or pdo or mysql extension or based on "show all table records".

That issue of $_SESSION['row_count'] = 5 switching to $_SESSION['row_count'] = 0 on every page load (same page, remember!), still remains. Remember, this membership script is a one page script.

If I can get over this hurdle of why the God Forsaken $_SESSION['row_count'] = 5 switches to $_SESSION['row_count'] = 0 on every same page load, then this 2-3 months project is complete!

Share this post


Link to post
Share on other sites

you still have not done the most important thing that has been suggested, repeatedly. validating all inputs that your page expects and setting up/displaying user error messages for each validation error. this will get your code to either work or it will tell you why it isn't working.

On 6/27/2020 at 5:19 PM, 2020 said:

Only these above are required for the mysql queries.

no. your queries also expect $_POST["first_name"] and $_POST["marital_status"] as inputs,

all this extra code using session variables, repeated database connections, function definitions around parts of your main code, function definitions inside of other function definitions, ... is unnecessary clutter. i recommend that you start over, adding and testing one feature at a time. 1. produce a get method search form, that's 'sticky' (repopulate the field values with any existing submitted values), that sets up/displays user error messages for each required input that doesn't exist. 2. once you get that to work, add the two queries and the logic needed for pagination, that use those required inputs.

another recommend to add to the list is to use an array to hold user/validation error messages, using the input/field name as the array index. this array is also an error flag. if the array is empty, there are no errors and you can use the input data. if the array is not empty, there are errors. you can test/display the content of this array at the appropriate point in the html document.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.