Page 1 of 1

Pagination Data Link

Posted: Mon Jan 12, 2009 5:18 am
by Yanayaya
Hello,

I have implemented a pagination function to my vacancy posting project for a recruitment company. I would like each job that is listed via the pagination to be displayed as a link though so that people can click on a specific job and get more details about it.

I have included my code that will show you the pagination atthe top of the page and the listing of jobs at the bottom.

Code: Select all

<?php
include 'library/configuration.php';
include 'library/opendatabase.php';
 
//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 jobpost") or die(mysql_error()); 
$rows = mysql_num_rows($data); 
 
//This is the number of results displayed per page 
$page_rows = 1; 
 
//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 the range to display in our query 
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
//This is your query again, the same one... the only difference is we add $max into it
$data_p = mysql_query("SELECT * FROM jobpost $max") or die(mysql_error()); 
 
//This is where you display your query results
while($info = mysql_fetch_array( $data_p ))
{ 
Print $info['salary']; 
echo "<br>";
} 
echo "<p>";
 
// 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 " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'><img src='first.gif' border=0></a> ";
echo " ";
$previous = $pagenum-1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'><img src='previous.gif' border=0></a> ";
} 
 
//just a spacer
echo "RARA";
 
//This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
if ($pagenum == $last) 
{
} 
else {
$next = $pagenum+1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'><img src='next.gif' border=0></a> ";
echo " ";
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'><img src='last.gif' border=0></a> ";
} 
 
?>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Vacancy Posts</title>
 
</head>
<body>
<p>
 
<?php
// This particular part of the page is not pagination but does list all the jobs as links. I need this kind of behaviour to be incorporated into my pagination.
$query = "SELECT id, jobtitle, jobtype, area, salary, qualifications, skills, jobdescription FROM jobpost ORDER BY id";
$result = mysql_query($query) or die('Error : ' . mysql_error()); ?>
  <!-- Job Listing table -->
</p>
<table width="98%" border="0" align="left" cellpadding="5" cellspacing="5" class="tblb" id="Jobs">
  <tr align="center">
    <td width="145">Job Title</td>
    <td width="92">Salary</td>
    <td width="92">Area</td>
    <td width="94">Ref:</td>
    <td width="92">Job Type</td>
  </tr>
  <?php while(list($id, $jobtitle, $jobtype, $area, $salary, $qualifications, $skills, $jobdescription) = mysql_fetch_array($result, MYSQL_NUM))    { ?>
  <tr class="btnav" onMouseOver="style.backgroundColor='#a82d37';" onMouseOut="style.backgroundColor='transparent'">
    <td width="145" align="centre" ><p><a href="jobspecific.php?id=<?php echo $id;?>" target="_self" class="one"><?php echo $jobtitle;?></p></td>
    <td width="92" align="center"><p align="left"><?php echo $salary;?></td>
    <td width="92" align="center"><p align="left"><?php echo $area;?></p></td>
    <td width="94" align="center"><p align="left">JOB00SH<?php echo $id;?></p></td>
    <td width="92" align="center"><p align="left"><?php echo $jobtype;?></p></td>
  </tr>
  <?php } include 'library/closedb.php'; ?>
</table>
 
</body>
</html>

Re: Pagination Data Link

Posted: Mon Jan 12, 2009 5:38 pm
by it2051229
then add an "<a href>" tag on the jobs to make it a link.

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 3:29 am
by Yanayaya
it2051229 wrote:then add an "<a href>" tag on the jobs to make it a link.
That would not work surley? That would require manual entry of a link per job, it must automatically display each job as a link. If you look at the code you will see that I have incorporated that using the "list" function. The problem is getting such a function to work within pagination.

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 4:18 am
by novice4eva
Yanayaya wrote:
it2051229 wrote:then add an "<a href>" tag on the jobs to make it a link.
That would not work surley? That would require manual entry of a link per job, it must automatically display each job as a link. If you look at the code you will see that I have incorporated that using the "list" function. The problem is getting such a function to work within pagination.
Its just one <a herf=""> inside the while loop with proper id attached to the link :dubious: !! You won't have to manually enter all the links for sure.

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 5:59 am
by it2051229
see? 2 out of 1...

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 7:19 am
by Yanayaya
novice4eva wrote:
Yanayaya wrote:
it2051229 wrote:then add an "<a href>" tag on the jobs to make it a link.
That would not work surley? That would require manual entry of a link per job, it must automatically display each job as a link. If you look at the code you will see that I have incorporated that using the "list" function. The problem is getting such a function to work within pagination.
Its just one <a herf=""> inside the while loop with proper id attached to the link :dubious: !! You won't have to manually enter all the links for sure.

Perhaps you could give me an example. I get the point that your are making but how should it look? Please advise.

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 7:35 am
by aceconcepts
Typically pagination requires values to be sent via url variables so that the next and previous pages can be determined.

In your SQL you will no doubt be using a "LIMIT 1,10" or something that sets a range of data to retrieve.

I'd suggest search for a tutorial via a search engine - there are lots out there :D

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 8:05 am
by novice4eva
As i was going to write a solution, i realized that you already had that implemented!! Now i am confused
You have:

Code: Select all

<a href="jobspecific.php?id=<?php echo $id;?>" target="_self" class="one"><?php echo $jobtitle;?>
ok </a> is missing. You have pagination, you have listed the jobs as links, and again the problem is?? :dubious:

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 8:59 am
by Yanayaya
novice4eva wrote:As i was going to write a solution, i realized that you already had that implemented!! Now i am confused
You have:

Code: Select all

<a href="jobspecific.php?id=<?php echo $id;?>" target="_self" class="one"><?php echo $jobtitle;?>
ok </a> is missing. You have pagination, you have listed the jobs as links, and again the problem is?? :dubious:
The section you are looking at is simply listing the jobs as link. That works fine, I need the pagination to list the jobs as links.

Here is the code for my pagination. Which grabs the records and lists them. I need it to list them as links in the same manner that my other php script on that page has done. I dont know how to do that.

I thought it would have been something in the code line

Code: Select all

//This is where you display your query results
while($info = mysql_fetch_array( $data_p ))
{
Print $info['salary'];
echo "<br>";
}
echo "<p>";
But I would need that to be confirmed.

Here is the Pagination code in full. As I said this only lists the records but it does not show them as links. I need to change it do do that.

Code: Select all

 
<?php
include 'library/configuration.php';
include 'library/opendatabase.php';
 
//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 jobpost") or die(mysql_error());
$rows = mysql_num_rows($data);
 
//This is the number of results displayed per page
$page_rows = 1;
 
//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 the range to display in our query
$max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows;
//This is your query again, the same one... the only difference is we add $max into it
$data_p = mysql_query("SELECT * FROM jobpost $max") or die(mysql_error());
 
//This is where you display your query results
while($info = mysql_fetch_array( $data_p ))
{
Print $info['salary'];
echo "<br>";
}
echo "<p>";
 
// 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 o nothing. If we aren't then we generate links to the first page, and to the previous page.
if ($pagenum == 1)
{
}
else
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'><img src='first.gif' border=0></a> ";
echo " ";
$previous = $pagenum-1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'><img src='previous.gif' border=0></a> ";
}
 
 //just a spacer
 echo "RARA";
  
 //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links
 if ($pagenum == $last)
 {
 }
 else {
 $next = $pagenum+1;
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'><img src='next.gif' border=0></a> ";
 echo " ";
 echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'><img src='last.gif' border=0></a> ";
 }
  
 ?>
 

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 9:43 am
by aceconcepts
If you want to create a hyperlink on your data then do it like this:

Code: Select all

 
echo'<a href="link_somewhere.php?id=something">'.$info['salary'].'</a>';
 

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 9:51 am
by Yanayaya
Thank you for the input. I also got it working by tweaking it and coding it like this:

Code: Select all

 
//This is where you display your query results
while(list($id, $jobtitle, $jobtype, $area, $salary) = mysql_fetch_array($data_p))
{ 
echo "<a href='jobspecific.php?id=$id'>$jobtitle</a>";

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 9:52 am
by Yanayaya
A huge thank you to everyone for their help and adivice, it is appreciated. :)

Sorry to have gone on and on about the problem, just really wanted it looked into and you have all been great :)

Re: Pagination Data Link

Posted: Tue Jan 13, 2009 11:27 am
by aceconcepts
Be careful of how you use single and double quotes.

Depending on the circumstance I typically use single quotes outside of double quotes e.g.

Code: Select all

 
echo '<a href="?jobspecific.php?id=$id">$jobtitle</a>';