2011-05-01 2 views
0

Я создал пагинацию и в настоящее время работает, но единственная проблема, если у меня есть тысячи и тысячи результатов ... дисплей будет:Помощь с пагинацией

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] и т. Д.

Я просто хочу, чтобы отобразить страницу для отображения, чтобы выглядеть примерно так:

предыдущая [1] [2] [3] [4] [5] ... Следующая

предыдущий .. [5] [6] [7] [8] [9] [10] ... next

Может ли кто-нибудь дать совет или предоставить примерный код, который дал бы мне результат, как указано выше? Если что-то совсем неясно, пожалуйста, дайте мне знать!

Приветствия,

Нил

Код, который я в настоящее время использую ниже:

<?php 
/*data base connection */ 

include "datebase connection"; 

/* SQL query */ 

$tsql = (" SELECT TOP 100 tie_parent_id, CAST(geo_post AS varchar(6)) + '.' + CAST(geo_sample AS varchar(6)) AS Mile, gps_lat, gps_long, rotten, split, wheel_cut, broken, quality 
FROM database 
"); 

$stmt = sqlsrv_query($conn,$tsql, array(), array("Scrollable" => 'static')); 
if($stmt === false) 
{ 
    echo "Error in query preparation/execution.\n"; 
    die(print_r(sqlsrv_errors(), true)); 
} 

/* DETERMINING THE NUMBER OF ROWS (AND PAGES) */ 

// Set the number of rows to be returned on a page. 
$rowsPerPage = 10; 

// Get the total number of rows returned by the query. 
$rowsReturned = sqlsrv_num_rows($stmt); 


if($rowsReturned === false) 
    die(print_r(sqlsrv_errors(), true)); 
elseif($rowsReturned == 0) 
{ 
    echo "No rows returned."; 
    exit(); 
} 
else 
{  
    /* Calculate number of pages. */ 
    $numOfPages = ceil($rowsReturned/$rowsPerPage); 
} 


/* FUNCTION FOR PAGING */ 



function getPage($stmt, $pageNum, $rowsPerPage) 
{ 
    $offset = ($pageNum - 1) * $rowsPerPage; 
    $rows = array(); 
    $i = 0; 
    while($row = sqlsrv_fetch_array($stmt, 
            SQLSRV_FETCH_NUMERIC, 
            SQLSRV_SCROLL_ABSOLUTE, 
            $offset + $i) 
      && $i < $rowsPerPage) 
    { 
     array_push($rows, $row); 
     $i++; 
    } 
    $row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_NUMERIC,SQLSRV_SCROLL_ABSOLUTE, $offset -1); 
    return $rows; 
} 


// Display the selected page of data. 
echo "<table width='800' border='0'>"; 
echo "<tr> <th>Tie ID</th> <th>Mile/Yard</th> <th>GPS Lat</th><th>GPS Long</th><th>Rotten</th><th>Split</th><th>WheelCut</th> <th>Broken</th><th>Quality</th> </tr>"; 
// keeps getting the next row until there are no more to get 
$pageNum = isset($_GET['pageNum']) ? $_GET['pageNum'] : 1; 
$page = getPage($stmt, $pageNum, $rowsPerPage); 


$color1 = "#ffffff"; 
$color2 = "#edf5fa"; 
$row_count = "0"; 



while($row_count<10) { 

$row=sqlsrv_fetch_array($stmt); 
$tie_parent_id = $row["tie_parent_id"]; 
$geo_post = $row["Mile"]; 
$lat =$row["gps_lat"]; 
$long =$row["gps_long"]; 
$rotten =$row["rotten"]; 
$split =$row["split"]; 
$wheelcut =$row["wheel_cut"]; 
$broken =$row["broken"]; 
$quality =$row["quality"]; 

$row_color = ($row_count % 2) ? $color1 : $color2; 


?> 

<tr> 

<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["tie_parent_id"]; ?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["Mile"];?> </td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["gps_lat"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["gps_long"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["rotten"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["split"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["wheel_cut"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["broken"];?></td> 
<td bgcolor="<?php echo $row_color ?>"> 
<?php echo $row["quality"];?></td> 
</td></tr> 


<?php 
    $row_count++; 
} 
?> 


<?php 
/* PREVIOUS PAGE NAVIGATION TOP OF PAGE */ 

// Display Previous Page link if applicable. 
if($pageNum > 1) 
{ 
    $prevPageLink = "?pageNum=".($pageNum - 1); 
    echo "<a href='$prevPageLink'>Previous Page</a>&nbsp"; 
} 

/*DISPLAYING LINKS TO PAGES TOP OF PAGE*/ 
for($i = 1; $i<=$numOfPages; $i++) 
{ 
    $pageLink = "?pageNum=$i"; 
    print("<a href=$pageLink>$i</a>&nbsp;&nbsp;"); 
} 

/* NEXT PAGE NAVIGATION TOP OF PAGE */ 


// Display Next Page link if applicable. 
if($pageNum < $numOfPages) 
{ 
    $nextPageLink = "?pageNum=".($pageNum + 1); 
    echo "&nbsp;&nbsp;<a href='$nextPageLink'>Next Page</a>"; 
} 
?> 
</form> 
<?php 

/* Close the connection. */ 
sqlsrv_close($conn); 

?> 

ответ

1

изменение на самом деле не слишком сумасшедшим - у вас есть большинство из них. Ваш алгоритм должен изменить только немного для отображения страниц - так вместо того, чтобы ваш цикл, как у вас есть:

 

/*DISPLAYING LINKS TO PAGES TOP OF PAGE*/ 
for($i = 1; $i<=$numOfPages; $i++) 
{  
    $pageLink = "?pageNum=$i";  
    print("$i  "); 
} 
 

Вы должны начать с номером текущей страницы, что вы на ...

 

/*first check to make sure the number of pages don't exceed maximum*/ 
$totalPagesToLoop = $pageNum + $numOfPages; 
if($totalPagesToLoop > ceiling(total number of pages required to show all the records ([number of total rows]/[number of rows to show per page]) 
{ 
    $totalPagesToLoop = ceiling(total number of pages required to show all the records ([number of total rows]/[number of rows to show per page]); 
} 



/*DISPLAYING LINKS TO PAGES TOP OF PAGE*/ 
for($i = $pageNum; $i<=$totalPagesToLoop; $i++) 
{  
    $pageLink = "?pageNum=$i";  
    print("$i  "); 
} 
 

Но - это еще не все, теперь вы должны кодировать специальные «предыдущие» и «рядом» кнопки (вы решаете, сколько для увеличения при нажатии на которую - Google приращения на 1, пока он не достигнет 20 , а затем просто показывает 20 за раз, перемещаясь один за другим. Вам нужно будет проверить свою переменную, чтобы решить, показывать ли вообще кнопку «предыдущая» или «следующая» ...

+0

Спасибо за Ваш ответ M.R! Ваш код был очень полезен! Мне удалось решить проблему с чем-то немного другим ... Привет, Нил – happyneil

0

мне удалось решить эту проблему, используя следующий код:

for($i = $pageNum; $i<=$numOfPages&&$pagesadded<=9; $i++) 
{ 
    $pagesadded+=1; 
    $pageLink = "?pageNum=$i"; 
    print("<a href=$pageLink>$i</a>&nbsp;&nbsp;"); 
} 

Он отображает 10 страниц одновременно.

Приветствия,

Нил

Смежные вопросы