mysql — Php Pagination при прохождении строки запроса

В Php, при передаче строки запроса со страницы на другую страницу, как выполнить разбиение на страницы. Следующий код, который я использовал, прекрасно работает для разбиения на страницы без строки запроса, но при передаче значения со страницы на другую страницу (строка запроса) это не работает.
Пожалуйста, дайте мне какие-либо предложения.

<?php
include("connect.php");
$adjacents = 3;
$id = $_REQUEST["id"];
$query = "SELECT COUNT(*) as num FROM data";
$total_pages = mysql_fetch_array(mysql_query($query));
$total_pages = $total_pages[num];

$targetpage = "pagetest.php";
$limit = 10;
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit;
else
$start = 0;

$sql = "SELECT name,email,dateins FROM data WHERE name='$id' LIMIT $start, $limit";
$result = mysql_query($sql);

$cnt=0;

if($result)
while($rs=mysql_fetch_assoc($result))
{
$cnt=$cnt+1;
$cssRow="class='gridRow'";
if(($cnt%2)==1)
{
$cssRow="class='gridRowAlternate'";
}

if ($page == 0) $page = 1;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($total_pages/$limit);
$lpm1 = $lastpage - 1;$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";

if ($page > 1)
$pagination.= "<a href=\"$targetpage?id=$id?page=$prev\">Previous</a>";
else
$pagination.= "<span class=\"disabled\">Previous</span>";

if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?id=$id?page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?id=$id?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?id=$id?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?id=$id?page=$lastpage\">$lastpage</a>";
}
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?id=$id?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?id=$id?page=2\">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?id=$id?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?id=$id?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?id=$id?page=$lastpage\">$lastpage</a>";
}
else
{
$pagination.= "<a href=\"$targetpage?id=$id?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?id=$id?page=2\">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?id=$id?page=$counter\">$counter</a>";
}
}
}

//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?id=$id?page=$next\">Next</a>";
else
$pagination.= "<span class=\"disabled\">Next</span>";
$pagination.= "</div>\n";
}
?>
<tr>
<td><?php echo $rs['name']; ?></td>
<td><?php echo $rs['email']; ?></td>
<td><?php echo $rs['dateins']; ?></td>
</tr>
<?php
}
?>
<td><input type="hidden" name="id" id="id" value="<?php echo $id; ?>"></td>
</table>
<?php echo $pagination; ?>
?>

ЗАРАНЕЕ СПАСИБО.

0

Решение

Вам нужно добавить переменные $ _GET, которые вы хотите видеть, к ссылкам в вашей нумерации страниц, иначе после первого запроса вы не сможете их использовать.

Например:

  if ($page > 1)
$pagination.= "<a href=\"$targetpage?id=$id&page=$prev&something=$_GET['something']\">Previous</a>";
else
$pagination.= "<span class=\"disabled\">Previous</span>";

Я также заметил, что переменные $ _GET установлены неправильно в ваших ссылках.

это

<a href=\"$targetpage?id=$id?page=$lastpage\">$lastpage</a>

должно быть

<a href=\"$targetpage?id=$id&page=$lastpage\">$lastpage</a>

Может быть проще добавить любые другие переменные в сеанс, так что вам не нужно беспокоиться о добавлении их в строку запроса, если их несколько.

2

Другие решения

Страница: — pagination.func.inc.php

<style type="text/css">
ul.pagination {

font-family: "Arial", "Helvetica", sans-serif;
font-size: 13px;
height:auto;
list-style-type: none;
margin: 20px 0;
overflow: hidden;
padding: 0;

}
ul.pagination li.details {

background-color: white;
border-color: #C8D5E0;
border-image: none;
border-style: solid;
border-width: 1px 1px 2px;
color: #1E598E;
font-weight: bold;
padding: 6px 10px;
text-decoration: none;

}
ul.pagination li.dot {

padding: 3px 0;

}
ul.pagination li {

float: left;
list-style-type: none;
margin: 0 3px 0 0;

}
ul.pagination li:first-child {

margin-left: 0;

}
ul.pagination li a {

color: black;
display: block;
line-height:normal;
padding: 7px 10px;
text-decoration: none;

}
ul.pagination li a img {

border: medium none;

}
ul.pagination li a.current {

background-color:#08569D;
color:#fff;

}
ul.pagination li a.current:hover {

/*background-color: white;
color: #333333; */

}
ul.pagination li a:hover {

/*background-color: #C8D5E0; */
background-color:#08569D;
color:#fff;

}
ul.pagination li a {

background-color: #F6F6F6;
border-color: #C8D5E0;
border-image: none;
border-style: solid;
border-width: 1px ;
color: #1E598E;
display: block;
font-weight: bold;
padding: 8px 10px;
text-decoration: none;

}
ul.pagination li.details {
border: 1px solid #DDDDDD;
color: #999999;
}
</style>
<?php

function pagination_function($per_page = 10, $page = 1, $url = '', $total)
{

$adjacents = "2";

$page = ($page == 0 ? 1 : $page);
$start = ($page - 1) * $per_page;

$prev = $page - 1;
$next = $page + 1;
$firstpage = 1;
$lastpage = ceil($total/$per_page);
$lpm1 = $lastpage - 1;

$pagination = "";
if($lastpage > 1)
{
$pagination .= "<ul class='pagination'>";
//$pagination .= "<li class='details'>Page $page of $lastpage</li>";
if($page == '1')
{
$pagination .= "<li class='details'>First</li>";
$pagination .= "<li class='details'>Previous</li>";
}
else
{
$pagination.= "<li><a href='{$url}$firstpage'>First</a></li>";
$pagination .= "<li><a href='{$url}$prev'>Previous</a></li>";
}

if ($lastpage < 7 + ($adjacents * 2))
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
}
elseif($lastpage > 5 + ($adjacents * 2))
{
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>...</li>";
$pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
}
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<li><a href='{$url}1'>1</a></li>";
$pagination.= "<li><a href='{$url}2'>2</a></li>";
$pagination.= "<li class='dot'>...</li>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination.= "<li class='dot'>..</li>";
$pagination.= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
}
else
{
$pagination.= "<li><a href='{$url}1'>1</a></li>";
$pagination.= "<li><a href='{$url}2'>2</a></li>";
$pagination.= "<li class='dot'>..</li>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<li><a class='current'>$counter</a></li>";
else
$pagination.= "<li><a href='{$url}$counter'>$counter</a></li>";
}
}
}

if ($page < $counter - 1){
$pagination.= "<li><a href='{$url}$next'>Next</a></li>";
$pagination.= "<li><a href='{$url}$lastpage'>Last</a></li>";
}else{
$pagination .= "<li class='details'>Next</li>";
$pagination .= "<li class='details'>Last</li>";
//$pagination.= "<li><a class='current'>Next</a></li>";
// $pagination.= "<li><a class='current'>Last</a></li>";
}
$pagination.= "</ul>\n";
}
return $pagination;
}

?>

Твоя страница

<?php
include("connect.php");
require_once('pagination.func.inc.php');
$id = $_REQUEST["id"];

$pageno = addslashes(trim($_REQUEST['page']));
if($pageno !=''){$pageno = $pageno;}else{$pageno = '1';}

//Your Query
$query = "SELECT COUNT(*) as num FROM data";
$total_pages = mysql_fetch_array(mysql_query($query));

$total_pages = $total_pages[num]; // Total Record
$targetpage = "pagetest.php";
$limit = 10; // Par page limit

//Here your While/Foorlop/foreach condition

$get_pageurl = $targetpage ."?page=";
echo $pagination_function = pagination_function($limit,$pageno,$get_pageurl,$total_pages);
?>
0

По вопросам рекламы [email protected]