2011-07-07 12 views
2

由于你们中的一些人的大力帮助,我终于在我的第一个分页计划中取得了成功......差不多。如何完成分页执行

我的剧本奇妙地工作,除了一个小小的顺利。有40个“行”页面,当没有更多的“行”要显示时,分页继续分页空白页面

更具体地说,第13页是包含行的最后一页,但您可以仍然打到下一页并进入空白页

解决方案很明显 - 如果没有剩下行,“下一步”按钮会消失,但由于某种原因,我所尝试的所有if语句都无法执行。所以

下面是该查询:

$rowsperpage = 40; // THERE ARE 40 AIRWAVES PER PAGE 
$currentpage = (int)$_GET['currentpage']; // This is getting which "page" the user wants to see, and putting it in $currentpage 

if ($currentpage > 0) { // If $currentpage is greater than 0, we'll need to compensate by subtracting 1, so that we pull the correct set of results. Otherwise, we'll just start at 0 (see the else) 
    $offset = ($currentpage - 1) * $rowsperpage; 
} 
else { 
    $offset = 0; 
} 

$query = "SELECT * FROM `CysticAirwaves` WHERE `FromUserID` = `ToUserID` AND `status` = 'active' ORDER BY `date` DESC, `time` DESC LIMIT $offset, $rowsperpage"; 
$request = mysql_query($query, $connection); 
$counter = 0; 

while ($result = mysql_fetch_array($request)) { 

,这里是分页链接:提前

// find out how many rows are in the table 

$query = "SELECT COUNT(*) FROM `CysticAirwaves`"; 
$result = mysql_query($query, $connection) or trigger_error("SQL", E_USER_ERROR); 
$r = mysql_fetch_row($result); 
$numrows = $r[0]; 

// number of rows to show per page 

$rowsperpage = 40; 

// find out total pages 

$totalpages = ceil($numrows/$rowsperpage); 

// get the current page or set a default 

if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) { 

    // cast var as int 

    $currentpage = (int)$_GET['currentpage']; 
} 
else { 

    // default page num 

    $currentpage = 1; 
} // end if 

// if current page is greater than total pages... 

if ($currentpage > $totalpages) { 

    // set current page to last page 

    $currentpage = $totalpages; 
} // end if 

// if current page is less than first page... 

if ($currentpage < 1) { 

    // set current page to first page 

    $currentpage = 1; 
} // end if 

// the offset of the list, based on current page 

$offset = ($currentpage + 1) * $rowsperpage; 

// while there are rows to be fetched... 

while ($list = mysql_fetch_assoc($result)) { 

    // echo data 

    echo $list['id'] . " : " . $list['number'] . "<br />"; 
} // end while 
/****** build the pagination links ******/ 

// range of num links to show 

$range = 3; 

// if not on page 1, don't show back links 

if ($currentpage > 1) { 

    // show << link to go back to page 1 

    $prevpage = $currentpage - 1; 
    echo "<div id='all_page_turn'> 
       <ul> 
        <li class='PreviousPageBlog round_10px'> 
         <a href='http://www.cysticlife.org/Airwave_build.php?currentpage=$prevpage'>Previous</a> 
        </li> 
       <ul> 
      </div>"; 
} // end if 

// if not on last page, show forward and last page links 

if ($currentpage != $totalpages)) { 

    // get next page 

    $nextpage = $currentpage + 1; 

    // echo forward link for next page 

    echo " <div id='all_page_turn'> 
       <ul> 
        <li class='PreviousPageBlog round_10px'> 
         <a href='http://www.cysticlife.org/Airwave_build.php?currentpage=$nextpage'>Next</a> 
        </li> 
       </ul> 
      </div> "; 
} 

感谢

+1

爱你的意见..尤其是你的第一个 – dynamic

+1

多少F *每个页面的CKING航空波?!? –

+0

哈哈 - 哎呀忘了那:)我会改变。一个朋友的笑话。 – LightningWrist

回答

1

更改

if ($currentpage != $totalpages)) { 

if ($currentpage < $totalpages) { 

原因之一,还有一个额外的parenthesesisesis,你应该从不依靠精确匹配的上限。

编辑:

我想我看到的问题。您需要在您的实际选择查询使用相同的WHERE子句做你的COUNT时:

$query = "SELECT COUNT(*) FROM `CysticAirwaves` " . 
     "WHERE `FromUserID` = `ToUserID` AND `status` = 'active'"; 

否则,你得到的所有行计数表中,甚至是那些你没有显示。

+0

hmmmmm - 试试这个无济于事。似乎是一样的 – LightningWrist

+0

SWEET!做到了!多谢兄弟! – LightningWrist

相关问题