Php 使用分页的列表的更改顺序

Php 使用分页的列表的更改顺序,php,pagination,Php,Pagination,我有一个分页列表,在一个页面上显示10个项目,但我想让某人可以选择更改列表的顺序,例如,按性别或年龄 分页是有效的,就列表排序而言,到目前为止,我有: $orderby = ($_GET['orderby'] == 'gender')? $_GET['orderby'] : 'age'; if ($result = $mysqli->query("SELECT * FROM people ORDER BY $orderby")) 有两个基本联系:性别|年龄 echo "<a hr

我有一个分页列表,在一个页面上显示10个项目,但我想让某人可以选择更改列表的顺序,例如,按性别或年龄

分页是有效的,就列表排序而言,到目前为止,我有:

$orderby = ($_GET['orderby'] == 'gender')? $_GET['orderby'] : 'age';

if ($result = $mysqli->query("SELECT * FROM people ORDER BY $orderby"))
有两个基本联系:性别|年龄

echo "<a href='{$_SERVER['PHP_SELF']}?orderby=gender'>gender</a> | <a href='{$_SERVER['PHP_SELF']}?orderby=age'>age</a>";
当我单击其中一个链接时,它会根据需要更改列表的顺序,但当我转到分页的另一个页面时,它不起作用

有人能告诉我解决这个问题的最佳方法吗。谢谢。

试试我的GenPagination功能,请参考下面的代码:

<?

$totalPage = 23;
$currentPage = isset($_GET['p']) && is_numeric($_GET['p']) && $_GET['p'] >= 1 ? (int)$_GET['p'] : 1;
$params = array();
$devices = array();

if( isset($_POST['order']) || isset($_GET['order']) ){
    $params['order'] = isset($_POST['order']) ? $_POST['order'] : $_GET['order'];
}

if( isset($_POST['device']) || isset($_GET['device']) ){
    $params['device'] = isset($_POST['device']) ? $_POST['device'] : $_GET['device'];
    $devices = $params['device'];
}

for( $i = 1; $i <= $totalPage; $i++ ){
    if( $i == $currentPage )
        print("&nbsp;<b><u>{$i}</u></b>&nbsp;");
    else
        print("&nbsp;<a href='" . genPagnation($i, $params) . "'>{$i}</a>&nbsp;");
}
print("<p><hr /></p>\n\n");


function genPagnation($p, $param = array(), $pname = null, $pvalue = null){
    $param['p'] = $p;
    if( !empty($pname) && !empty($pvalue) )
        $param[ $pname ] = $pvalue;

    $query = http_build_query($param);
    $query = preg_replace('/%5B[0-9]+%5D/', '%5B%5D', $query);
    return '?' . $query;
}

?>

<p>
    Order By: 
    <a href='<?=genPagnation($currentPage, $params, "order", "male")?>'>Male</a> | 
    <a href='<?=genPagnation($currentPage, $params, "order", "female")?>'>Female</a>
</p>

<form method="POST" action="<?=$_SERVER['PHP_SELF']?>">
    <p>
        Filtering:
        <label><input type="checkbox" name="device[]" value="iphone"  <? if( !empty($devices) && in_array('iphone', $devices) ){  echo 'checked="checked"'; } ?> />iPhone</label>
        <label><input type="checkbox" name="device[]" value="ipad"    <? if( !empty($devices) && in_array('ipad', $devices) ){    echo 'checked="checked"'; } ?> />iPad</label>
        <label><input type="checkbox" name="device[]" value="ipod"    <? if( !empty($devices) && in_array('ipod', $devices) ){    echo 'checked="checked"'; } ?> />iPod</label>
        <label><input type="checkbox" name="device[]" value="android" <? if( !empty($devices) && in_array('android', $devices) ){ echo 'checked="checked"'; } ?> />Android</label>
    </p>
    <p>
        Ordering:
        <label><input type="radio" name="order" value="male"   <? if( isset($_REQUEST['order']) && $_REQUEST['order'] == 'male'){   echo 'checked="checked"'; } ?> />Male</label>
        <label><input type="radio" name="order" value="female" <? if( isset($_REQUEST['order']) && $_REQUEST['order'] == 'female'){ echo 'checked="checked"'; } ?> />Female</label>
    </p>
    <p><input type="submit" value="search"></p>
</form>

我只是使用了一个会话变量作为我的orderby。如果为空,则为其分配一个默认值。用户还可以取消当前的订购,以恢复默认订购。请提供您的分页代码