It looks like you're never using the values sent in the query, so you're always falling back on the defaults. (See [man]variables.external[/man] for how to get values from forms.)
if (!($limit)){
$limit = 10;} // Default results per-page.
I'm guessing $limit and $page are undefined (and if you had error reporting set to E_ALL for development you'd be told this if they were). Try
if(isset($_GET['limit']))
{
$limit = (int)$_GET['limit'];
}
else
{
$limit = 10;
}
(Where the (int) is to ensure that $limit really is an integer and not something that will clobber the query (although it still doesn't stop someone putting in 9001 as their limit)).
Incidentally, it's extremely wasteful to do this:
$numresults = mysql_query("SELECT * FROM testimonials WHERE status = 'A'") or die("Query Failure");
$numrows = mysql_num_rows($numresults); // Number of rows returned from above query.
"Select everything from the entire table (where status='A') and keep it in a variable even though all I want to know is how many rows there are."
Get the database to count the rows and tell you the result.
$numresults = mysql_query("SELECT count(*) FROM testimonials WHERE status = 'A'") or die("Query Failure");
$numrows = mysql_fetch_array($numresults); // Array of columns returned from above query.
$numrows = $numrows[0]; // There's only one column and that's the one we want.
In the other query, for more efficiency (and to help the database plan its query execution better), ask for only the columns you want ("SELECT image_name, testimonial, email, date FROM testimonials...").
And, as you've mentioned, the evolt article is quite old: this century the <font> tag is obsolete and layout is done using CSS 🙂