2011-09-01 51 views
0

这是我在用户点击联盟时在我的网站上进行分页的脚本。
联盟然后回到屏幕上,如果联盟超过3排,那么它会将它分成几页。
我在做什么取决于用户在联盟中的位置(SQL查询使用ORDER BY表中的总积分列),例如,如果用户在联赛表的第一页上,然后让它显示该页面首先显示,但是如果用户在联赛表格的第3页上,则首先显示该页面。PHP分页,首先查看某个页面

有没有人知道一种方式,以便我实现这一目标?

//Recently updated from answer 

$sql="SELECT members.username, members.total_points FROM members, members_leagues WHERE members.username = members_leagues.username AND 
     members_leagues.sub_league = '$chosenleague' ORDER BY members.total_points DESC"; 

$result=mysql_query($sql); 

$i = 0; 
$found = false; 
$team_position = 0; 

while (!$found && $row = mysql_fetch_row($result)){ 
    if ($row[username] == $_SESSION[username]) { 
    $team_position = $i; 
    $found = true; 
    } 
$i++; 
} 

$rowsPerPage = 3; 

$pageNum = ceil($i/$rowsPerPage); 
//end of recently updated 

if(isset($_GET['page'])) 
    $pageNum = $_GET['page']; 

$offset = ($pageNum - 1) * $rowsPerPage; 
$counter = $offset + 1; 

$query = " SELECT members.username, members.teamname, members.total_points, FROM members, members_leagues WHERE members.username = members_leagues.username AND members_leagues.sub_league = '$chosenleague' ORDER BY members.total_points DESC " . " LIMIT $offset, $rowsPerPage"; 

$result = mysql_query($query) or die('Error, query failed'); 

echo "<h3 style=\"color:red;\">$chosenleague</h3>"; 
echo "<table>"; 
echo "<tr><th>Position</th>"; 
echo "<th>Team</th>"; 
echo "<th>Points/Overall</th>"; 
echo "<th>Points/Last Race</th>"; 
echo "<th>Team Setup</th></tr>"; 

while($row = mysql_fetch_array($result)) 
{ 
    if($row[username] == $_SESSION[username]) 
     echo "<tr style=\"color:red;\"><td>"; 
    else 
     echo "<tr><td>"; 

    echo $counter; 
    echo "</td><td>"; 
    echo $row[teamname]; 
    echo "</td><td>"; 
    echo $row[total_points]; 
    echo "</td><td>"; 
    echo "</td><td>"; 
    echo "</td></tr>"; 
    $counter++; 
} 
echo "</table>"; 

$query = "SELECT COUNT(members.username) AS numrows FROM members, members_leagues WHERE members.username = members_leagues.username 
AND members_leagues.sub_league = '$chosenleague'"; 

$result = mysql_query($query) or die('Error, query failed'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$numrows = $row['numrows']; 

$maxPage = ceil($numrows/$rowsPerPage); 

$self = $_SERVER['PHP_SELF']; 
$nav = ''; 

if ($pageNum > 1) 
{ 
    $page = $pageNum - 1; 

    $prev = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($page) . "\"><< Prev</a> "; 
    $first = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode(1) . "\">First</a> "; 
} 
else 
{ 
    $prev = ''; 
    $first = ''; 
} 

if ($pageNum < $maxPage) 
{ 
    $page = $pageNum + 1; 
    $next = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($page) . "\">Next >></a> "; 
    $last = " <a href=\"$self?league=". rawurlencode($chosenleague) . "&page=". rawurlencode($maxPage) . "\">Last</a> "; 
} 
else 
{ 
    $next = ''; 
    $last = ''; 
} 

echo "<div id=\"pagenum\">Page $pageNum of $maxPage &nbsp;". $first . $last . $prev . $next ."</div>"; 
+0

那么,你想重新排序你的分页数? (第1页,第2页,第3页?) – tskulbru

+0

我不想重新排序页码,但仅仅是第一次查看联盟时,它会显示用户所在的页面。因此,我点击联盟显示联盟和我的球队页面,如果联盟有30页,我在第6页,然后显示第6页。 – Lee

+0

你知道任何javascript吗? –

回答

0

您可以通过MySQL或PHP做:

随着PHP:

发现阵列中的请求记录的位置,然后计算出你需要提取并执行相应的页面查询。就像是。

$i = 0; 
$found = false; 
$team_position = 0; 

while (!$found && $row = mysql_fetch_row) { 
    if ($row['team'] == 'team_your_searching_for') { 
    $team_position = $i; 
    $found = true; 
    } 
    $i++; 
} 

//calculate $top and $bottom 
... 

$sql = "SELECT * FROM members LIMIT $top, $bottom;"; 
... 

随着MySQL的:

您可以创建生成自动增量值,从对方的结果选择了查询和其他。我的意思是

-- get the the selected member's position 
SELECT team, pos FROM (SELECT team, points, @position = @position + 1 AS pos FROM members ORDER BY points) WHERE team = @the_team_your_searching_for; 

-- get the nr of members 
SELECT COUNT(*) FROM members; 

... 

-- calculate the page you wanna extract (@top, @bottom), and extract it 
SELECT * FROM members LIMIT @top, @bottom; 
+0

嘿,我对你发给我的PHP部分有点麻烦,它似乎不会增加$ i,它就像启动while循环并马上退出一样。有什么可以看到的吗?我已经更新了我的问题顶部的代码。 – Lee

+0

试试这个 - > $ row = mysql_fetch_row($ result); while($ $ found && $ row){ if($ row [username] == $ _SESSION [username]){ $ team_position = $ i; $ found = true; } $ i ++; $ row = mysql_fetch_row($ result) } –

+0

由于这种情况 - > $ row = mysql_fetch_row($ result),它不会进入循环内部。先储存$行,然后检查$行。 http://es.php.net/manual/es/function.mysql-fetch-row.php –