I have a perfectly working script that displays my query results in descending order by date, using pagination. Here is the working code:
Code:
<?
//Connection Info omitted
//This checks to see if there is a page number. If not, it will set it to page 1
if (!(isset($pagenum)))
{
$pagenum = 1;
}
//Here we count the number of results
//Edit $data to be your query
$data = mysql_query("SELECT * FROM filings") or die(mysql_error());
$rows = mysql_num_rows($data);
//This is the number of results displayed per page
$page_rows = 15;
//This tells us the page number of our last page
$last = ceil($rows/$page_rows);
//this makes sure the page number isn't below one, or more than our maximum pages
if ($pagenum < 1)
{
$pagenum = 1;
}
elseif ($pagenum > $last)
{
$pagenum = $last;
}
//This sets range that we will display in our query
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
/////////// Now let us print the table headers ////////////////
echo "<tablewidth=90% border=1cellpadding=3cellspacing=1align=center>
<tr><tdwidth=20% align=centerbgcolor=silver><b>Date Posted</b></td>
<tdwidth=40% style=padding-left:25pxbgcolor=silver><b>Title</b></td>
<tdwidth=20% align=centerbgcolor=silver><b>Link</b></td>
<tdwidth=20% align=centerbgcolor=silver><b>Hearing</b></td></tr>
";
//This is your query again, the same one... the only difference is we add $max into it
$data_p = mysql_query("SELECT * FROM filings ORDER BY date_posted DESC $max") or die(mysql_error());
//This is where you display your query results
while($info = mysql_fetch_array( $data_p ))
{
echo "<tr><tdclass=finewidth=20% align=center>$info[date_posted]</td>
<tdclass=finewidth=40% style=padding-left:5px>$info[file_title]</td>
<tdclass=finewidth=20% align=center><ahref=filings/$info[file_name] target=_blank>View / Print</a></td>
<tdclass=finewidth=20% align=center>$info[hearing_year]</td></tr>";
}
echo "</table>";
// This shows the user what page they are on, and the total number of pages
echo " --Page $pagenum of $last-- <p>";
// First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.
if ($pagenum == 1)
{
}
else
{
echo " <ahref='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
echo"";
$previous = $pagenum-1;
echo"<ahref='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
}
//justaspacer
echo" ---- ";
//Thisdoesthesameasabove, onlycheckingifweareonthelastpage, andthengeneratingtheNextandLastlinks
if ($pagenum == $last)
{
}
else {
$next = $pagenum+1;
echo"<ahref='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
echo " ";
echo " <ahref='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
}
?>
Now all I want to do is modify my query to SELECT only the rows whose "hearing_year" field matches "2006", so I added the WHERE statements to both query lines as shown in red below:
Code:
//This checks to see if there is a page number. If not, it will set it to page 1
if (!(isset($pagenum)))
{
$pagenum = 1;
}
//Here we count the number of results
//Edit $data to be your query
$data = mysql_query("SELECT * FROM filings WHERE hearing_year='2006'") or die(mysql_error());
$rows = mysql_num_rows($data);
//This is the number of results displayed per page
$page_rows = 15;
//This tells us the page number of our last page
$last = ceil($rows/$page_rows);
//this makes sure the page number isn't below one, or more than our maximum pages
if ($pagenum < 1)
{
$pagenum = 1;
}
elseif ($pagenum > $last)
{
$pagenum = $last;
}
//This sets range that we will display in our query
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
/////////// Now let us print the table headers ////////////////
echo "<tablewidth=90% border=1cellpadding=3cellspacing=1align=center>
<tr><tdwidth=20% align=centerbgcolor=silver><b>Date Posted</b></td>
<tdwidth=40% style=padding-left:25pxbgcolor=silver><b>Title</b></td>
<tdwidth=20% align=centerbgcolor=silver><b>Link</b></td>
<tdwidth=20% align=centerbgcolor=silver><b>Hearing</b></td></tr>
";
//This is your query again, the same one... the only difference is we add $max into it
$data_p = mysql_query("SELECT * FROM filings WHERE hearing_year='2006' ORDER BY date_posted DESC $max") or die(mysql_error());
//This is where you display your query results
while($info = mysql_fetch_array( $data_p ))
{
echo "<tr><tdclass=finewidth=20% align=center>$info[date_posted]</td>
<tdclass=finewidth=40% style=padding-left:5px>$info[file_title]</td>
<tdclass=finewidth=20% align=center><ahref=filings/$info[file_name] target=_blank>View / Print</a></td>
<tdclass=finewidth=20% align=center>$info[hearing_year]</td></tr>";
}
echo "</table>";
// This shows the user what page they are on, and the total number of pages
echo " --Page $pagenum of $last-- <p>";
// First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page.
if ($pagenum == 1)
{
}
else
{
echo " <ahref='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> ";
echo"";
$previous = $pagenum-1;
echo"<ahref='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> ";
}
//justaspacer
echo" ---- ";
//Thisdoesthesameasabove, onlycheckingifweareonthelastpage, andthengeneratingtheNextandLastlinks
if ($pagenum == $last)
{
}
else {
$next = $pagenum+1;
echo"<ahref='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> ";
echo " ";
echo " <ahref='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> ";
}
?>
...and now my pagination is broken, as well as my table formatting. Can anyone clue me in as to why? I'll admit I'm a newbie, but this seems pretty basic.
Thanks,
Rob
|