如何解决使用选择框过滤结果,然后分页问题
| 首先-PHP noob,所以请不要过多地使用我的代码。我更是一名编辑,而不是专心于开发... 我在使用选择框进行筛选的分页结果时遇到问题。客户希望能够选择职位,以便所显示的职位空缺与选择相关。我默认设置为显示数据库中的所有作业。然后,当用户选择一个选项时,页面上的内容应更改。该页面应限制为每页5个作业。 我有这部分工作。当用户选择一个选项时,我便包含了该作业的相关代码,该代码根据选择从数据库中选择了作业。 这是在vancancies.php中<form action=\"<?php echo $_SERVER[\'PHP_SELF\']; ?>\" method=\"post\">
<select name=\"jobtype\" onchange=\"if(this.options.selectedIndex>0) window.location.href = \'vacancies.php?option=\'+this.options [this.options.selectedIndex].value\">
<option value=\"\">Select a Job Title</option>
<option value=\"support\">Support Workers</option>
<option value=\"care\">Carers</option>
<option value=\"nurse\">Nurses</option>
<option value=\"all\">All</option>
</select>
</form>
<?php
$_GET[\'option\'];
$jobtype = $_GET[\'option\'];
if ($jobtype == \"\")
include(\"alljobs.php\");
elseif ($jobtype == \"support\")
include(\"supportjobs.php\");
elseif ($jobtype == \"care\")
include(\"carerjobs.php\");
elseif ($jobtype == \"nurse\")
include(\"nursejobs.php\");
?>
根据选择的内容,我选择包括一个文件,该文件将从数据库中获取相关数据。可能不理想,但它可以工作。
我的问题是,当选择“支持工作者”时,有15条结果。前5个显示在第一页上,但转到第2页将显示所有结果的第二页。
这是我用于supportjobs.php的代码,当选择支持时,我将包括它。
<?PHP
include(\'xxxx.php\');
$tableName=\"jobs\";
$targetpage = \"vacancies.php?option=support\";
$limit = 5;
$query = \"SELECT COUNT(*) as num FROM jobs WHERE title LIKE \'%\" . $jobtype . \"%\'\";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];
$stages = 3;
$page = mysql_escape_string($_GET[\'page\']);
if($page){
$start = ($page - 1) * $limit;
}else{
$start = 0;
}
//-query the database table
//$sql=\"SELECT * FROM jobs WHERE title LIKE \'%\" . $search . \"%\'\";
// Get page data
$query1 = \"SELECT * FROM jobs WHERE title LIKE \'%\" . $jobtype . \"%\' ORDER BY id DESC LIMIT $start,$limit\";
$result = mysql_query($query1);
// Initial page num setup
if ($page == 0){$page = 1;}
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$LastPagem1 = $lastpage - 1;
$paginate = \'\';
if($lastpage > 1)
{
$paginate .= \"<div class=\'paginate\'>\";
// Previous
if ($page > 1){
$paginate.= \"<a href=\'$targetpage?page=$prev\'>previous</a>\";
}else{
$paginate.= \"<span class=\'disabled\'>previous</span>\"; }
// Pages
if ($lastpage < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= \"<span class=\'current\'>$counter</span>\";
}else{
$paginate.= \"<a href=\'$targetpage?page=$counter\'>$counter</a>\";}
}
}
elseif($lastpage > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= \"<span class=\'current\'>$counter</span>\";
}else{
$paginate.= \"<a href=\'$targetpage?page=$counter\'>$counter</a>\";}
}
$paginate.= \"...\";
$paginate.= \"<a href=\'$targetpage?page=$LastPagem1\'>$LastPagem1</a>\";
$paginate.= \"<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>\";
}
// Middle hide some front and some back
elseif($lastpage - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= \"<a href=\'$targetpage?page=1\'>1</a>\";
$paginate.= \"<a href=\'$targetpage?page=2\'>2</a>\";
$paginate.= \"...\";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= \"<span class=\'current\'>$counter</span>\";
}else{
$paginate.= \"<a href=\'$targetpage?page=$counter\'>$counter</a>\";}
}
$paginate.= \"...\";
$paginate.= \"<a href=\'$targetpage?page=$LastPagem1\'>$LastPagem1</a>\";
$paginate.= \"<a href=\'$targetpage?page=$lastpage\'>$lastpage</a>\";
}
// End only hide early pages
else
{
$paginate.= \"<a href=\'$targetpage?page=1\'>1</a>\";
$paginate.= \"<a href=\'$targetpage?page=2\'>2</a>\";
$paginate.= \"...\";
for ($counter = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page){
$paginate.= \"<span class=\'current\'>$counter</span>\";
}else{
$paginate.= \"<a href=\'$targetpage?page=$counter\'>$counter</a>\";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= \"<a href=\'$targetpage?page=$next\'>next</a>\";
}else{
$paginate.= \"<span class=\'disabled\'>next</span>\";
}
$paginate.= \"</div>\";
}
echo \"<p>We have <span class=\'highlight\'>$total_pages</span> vacancies currently available.<p>\";
// pagination
echo $paginate;
?>
<?php
function makeClickableLinks($makeemail) {
$makeemail = eregi_replace(\'([_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3})\',\'<a href=\"mailto:\\\\1\">\\\\1</a>\',$makeemail);
return $makeemail;
}
while($row = mysql_fetch_array($result))
{
?>
<a name=\"<?PHP echo \'\' . $row[\"ID\"] . \'\';?>\"></a>
<h4><?PHP echo \'\' . $row[\"title\"] . \'\';?></h4>
<?PHP $makeemail = nl2br($row[\"description\"]); ?>
<p><?PHP echo makeClickableLinks($makeemail);?></p>
<p><span class=\"highlight\">Location:</span> <?PHP echo \'\' . $row[\"location\"] . \'\';?>
<br>
<!--<p><?PHP echo \'\' . $row[\"duration\"] . \'\';?></p>-->
<span class=\"highlight\">Salary:</span> <?PHP echo \'\' . $row[\"salary\"] . \'\';?></p>
<hr/>
<?PHP
}
echo $paginate;
mysql_close($DB);
?>
我有点不确定如何使它工作。我尝试将\'vacancies.php?option = support \'硬编码到目标URL中,以查看是否会转到支持结果的第2页,但它什么也没有返回。
任何投入将不胜感激。非常感谢。
解决方法
尝试更改以下变量:
$start = (($page - 1) * $limit) + 1; // 1,6,11..
$lastpage = $page * $limit; // 5,10,15..
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。